111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef __khrplatform_h_ 211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define __khrplatform_h_ 311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* 511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert** Copyright (c) 2008-2009 The Khronos Group Inc. 611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert** 711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert** Permission is hereby granted, free of charge, to any person obtaining a 811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert** copy of this software and/or associated documentation files (the 911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert** "Materials"), to deal in the Materials without restriction, including 1011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert** without limitation the rights to use, copy, modify, merge, publish, 1111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert** distribute, sublicense, and/or sell copies of the Materials, and to 1211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert** permit persons to whom the Materials are furnished to do so, subject to 1311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert** the following conditions: 1411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert** 1511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert** The above copyright notice and this permission notice shall be included 1611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert** in all copies or substantial portions of the Materials. 1711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert** 1811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 1911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 2011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 2111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 2211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 2311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 2411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. 2511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert*/ 2611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 2711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Platform-specific types and definitions. 2811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * $Revision: 7244 $ on $Date: 2009-01-20 17:06:59 -0800 (Tue, 20 Jan 2009) $ 2911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * 3011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Adopters may modify this file to suit their platform. Adopters are 3111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * encouraged to submit platform specific modifications to the Khronos 3211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * group so that they can be included in future versions of this file. 3311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Please submit changes by sending them to the public Khronos Bugzilla 3411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * (http://khronos.org/bugzilla) by filing a bug against product 3511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * "Khronos (general)" component "Registry". 3611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * 3711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * A predefined template which fills in some of the bug fields can be 3811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * reached using http://tinyurl.com/khrplatform-h-bugreport, but you 3911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * must create a Bugzilla login first. 4011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * 4111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * 4211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * See the Implementer's Guidelines for information about where this file 4311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * should be located on your system. 4411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * http://www.khronos.org/registry/implementers_guide.pdf 4511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * 4611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * 4711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * This file should be included as 4811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * #include <KHR/khrplatform.h> 4911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * by the Khronos API header file that uses its types and defines. 5011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * 5111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * The types in this file should only be used to define API-specific types. 5211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Types defined in this file: 5311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * khronos_int8_t signed 8 bit 5411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * khronos_uint8_t unsigned 8 bit 5511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * khronos_int16_t signed 16 bit 5611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * khronos_uint16_t unsigned 16 bit 5711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * khronos_int32_t signed 32 bit 5811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * khronos_uint32_t unsigned 32 bit 5911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * khronos_int64_t signed 64 bit 6011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * khronos_uint64_t unsigned 64 bit 6111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * khronos_intptr_t signed same number of bits as a pointer 6211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * khronos_uintptr_t unsigned same number of bits as a pointer 6311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * khronos_ssize_t signed size 6411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * khronos_usize_t unsigned size 6511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * khronos_float_t signed 32 bit floating point 6611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * khronos_time_ns_t unsigned 64 bit time in nanoseconds 6711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * khronos_utime_nanoseconds_t unsigned time interval or absolute time in 6811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * nanoseconds 6911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * khronos_stime_nanoseconds_t signed time interval in nanoseconds 7011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * 7111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * KHRONOS_SUPPORT_INT64 is 1 if 64 bit integers are supported; otherwise 0. 7211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * KHRONOS_SUPPORT_FLOAT is 1 if floats are supported; otherwise 0. 7311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * 7411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * 7511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Macros defined in this file: 7611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * KHRONOS_APICALL 7711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * KHRONOS_APIENTRY 7811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * KHRONOS_APIATTRIBUTES 7911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * These may be used in function prototypes as: 8011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * KHRONOS_APICALL void KHRONOS_APIENTRY funcname( 8111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * int arg1, 8211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * int arg2) KHRONOS_APIATTRIBUTES; 8311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */ 8411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 8511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*------------------------------------------------------------------------- 8611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Definition of KHRONOS_APICALL 8711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *------------------------------------------------------------------------- 8811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * This precedes the return type of the function in the function prototype. 8911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */ 9011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if defined(_WIN32) && !defined(__SCITECH_SNAP__) 9111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# define KHRONOS_APICALL __declspec(dllimport) 9211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#elif defined (__SYMBIAN32__) 9311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# define KHRONOS_APICALL IMPORT_C 9411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#elif defined(__ANDROID__) 9511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# include <sys/cdefs.h> 9611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# define KHRONOS_APICALL __attribute__((visibility("default"))) __NDK_FPABI__ 9711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#else 9811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# define KHRONOS_APICALL 9911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif 10011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 10111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*------------------------------------------------------------------------- 10211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Definition of KHRONOS_APIENTRY 10311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *------------------------------------------------------------------------- 10411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * This follows the return type of the function and precedes the function 10511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * name in the function prototype. 10611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */ 10711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(__SCITECH_SNAP__) 10811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert /* Win32 but not WinCE */ 10911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# define KHRONOS_APIENTRY __stdcall 11011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#else 11111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# define KHRONOS_APIENTRY 11211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif 11311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 11411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*------------------------------------------------------------------------- 11511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Definition of KHRONOS_APIATTRIBUTES 11611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *------------------------------------------------------------------------- 11711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * This follows the closing parenthesis of the function prototype arguments. 11811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */ 11911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if defined (__ARMCC_2__) 12011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define KHRONOS_APIATTRIBUTES __softfp 12111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#else 12211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define KHRONOS_APIATTRIBUTES 12311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif 12411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 12511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*------------------------------------------------------------------------- 12611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * basic type definitions 12711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *-----------------------------------------------------------------------*/ 12811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__GNUC__) || defined(__SCO__) || defined(__USLC__) 12911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 13011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 13111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* 13211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Using <stdint.h> 13311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */ 13411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <stdint.h> 13511cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef int32_t khronos_int32_t; 13611cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef uint32_t khronos_uint32_t; 13711cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef int64_t khronos_int64_t; 13811cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef uint64_t khronos_uint64_t; 13911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define KHRONOS_SUPPORT_INT64 1 14011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define KHRONOS_SUPPORT_FLOAT 1 14111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 14211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#elif defined(__VMS ) || defined(__sgi) 14311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 14411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* 14511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Using <inttypes.h> 14611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */ 14711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <inttypes.h> 14811cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef int32_t khronos_int32_t; 14911cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef uint32_t khronos_uint32_t; 15011cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef int64_t khronos_int64_t; 15111cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef uint64_t khronos_uint64_t; 15211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define KHRONOS_SUPPORT_INT64 1 15311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define KHRONOS_SUPPORT_FLOAT 1 15411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 15511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#elif defined(_WIN32) && !defined(__SCITECH_SNAP__) 15611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 15711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* 15811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Win32 15911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */ 16011cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef __int32 khronos_int32_t; 16111cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef unsigned __int32 khronos_uint32_t; 16211cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef __int64 khronos_int64_t; 16311cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef unsigned __int64 khronos_uint64_t; 16411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define KHRONOS_SUPPORT_INT64 1 16511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define KHRONOS_SUPPORT_FLOAT 1 16611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 16711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#elif defined(__sun__) || defined(__digital__) 16811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 16911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* 17011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Sun or Digital 17111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */ 17211cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef int khronos_int32_t; 17311cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef unsigned int khronos_uint32_t; 17411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if defined(__arch64__) || defined(_LP64) 17511cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef long int khronos_int64_t; 17611cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef unsigned long int khronos_uint64_t; 17711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#else 17811cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef long long int khronos_int64_t; 17911cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef unsigned long long int khronos_uint64_t; 18011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif /* __arch64__ */ 18111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define KHRONOS_SUPPORT_INT64 1 18211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define KHRONOS_SUPPORT_FLOAT 1 18311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 18411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#elif 0 18511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 18611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* 18711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Hypothetical platform with no float or int64 support 18811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */ 18911cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef int khronos_int32_t; 19011cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef unsigned int khronos_uint32_t; 19111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define KHRONOS_SUPPORT_INT64 0 19211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define KHRONOS_SUPPORT_FLOAT 0 19311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 19411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#else 19511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 19611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* 19711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Generic fallback 19811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */ 19911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include <stdint.h> 20011cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef int32_t khronos_int32_t; 20111cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef uint32_t khronos_uint32_t; 20211cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef int64_t khronos_int64_t; 20311cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef uint64_t khronos_uint64_t; 20411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define KHRONOS_SUPPORT_INT64 1 20511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define KHRONOS_SUPPORT_FLOAT 1 20611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 20711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif 20811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 20911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 21011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* 21111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Types that are (so far) the same on all platforms 21211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */ 21311cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef signed char khronos_int8_t; 21411cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef unsigned char khronos_uint8_t; 21511cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef signed short int khronos_int16_t; 21611cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef unsigned short int khronos_uint16_t; 21711cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef signed long int khronos_intptr_t; 21811cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef unsigned long int khronos_uintptr_t; 21911cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef signed long int khronos_ssize_t; 22011cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef unsigned long int khronos_usize_t; 22111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 22211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if KHRONOS_SUPPORT_FLOAT 22311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* 22411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Float type 22511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */ 22611cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef float khronos_float_t; 22711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif 22811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 22911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#if KHRONOS_SUPPORT_INT64 23011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Time types 23111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * 23211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * These types can be used to represent a time interval in nanoseconds or 23311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * an absolute Unadjusted System Time. Unadjusted System Time is the number 23411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * of nanoseconds since some arbitrary system event (e.g. since the last 23511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * time the system booted). The Unadjusted System Time is an unsigned 23611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * 64 bit value that wraps back to 0 every 584 years. Time intervals 23711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * may be either signed or unsigned. 23811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */ 23911cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef khronos_uint64_t khronos_utime_nanoseconds_t; 24011cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef khronos_int64_t khronos_stime_nanoseconds_t; 24111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif 24211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 24311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert 24411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif /* __khrplatform_h_ */ 245