1*61046927SAndroid Build Coastguard Worker #ifndef __khrplatform_h_ 2*61046927SAndroid Build Coastguard Worker #define __khrplatform_h_ 3*61046927SAndroid Build Coastguard Worker 4*61046927SAndroid Build Coastguard Worker /* 5*61046927SAndroid Build Coastguard Worker ** Copyright (c) 2008-2018 The Khronos Group Inc. 6*61046927SAndroid Build Coastguard Worker ** 7*61046927SAndroid Build Coastguard Worker ** Permission is hereby granted, free of charge, to any person obtaining a 8*61046927SAndroid Build Coastguard Worker ** copy of this software and/or associated documentation files (the 9*61046927SAndroid Build Coastguard Worker ** "Materials"), to deal in the Materials without restriction, including 10*61046927SAndroid Build Coastguard Worker ** without limitation the rights to use, copy, modify, merge, publish, 11*61046927SAndroid Build Coastguard Worker ** distribute, sublicense, and/or sell copies of the Materials, and to 12*61046927SAndroid Build Coastguard Worker ** permit persons to whom the Materials are furnished to do so, subject to 13*61046927SAndroid Build Coastguard Worker ** the following conditions: 14*61046927SAndroid Build Coastguard Worker ** 15*61046927SAndroid Build Coastguard Worker ** The above copyright notice and this permission notice shall be included 16*61046927SAndroid Build Coastguard Worker ** in all copies or substantial portions of the Materials. 17*61046927SAndroid Build Coastguard Worker ** 18*61046927SAndroid Build Coastguard Worker ** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 19*61046927SAndroid Build Coastguard Worker ** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 20*61046927SAndroid Build Coastguard Worker ** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 21*61046927SAndroid Build Coastguard Worker ** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 22*61046927SAndroid Build Coastguard Worker ** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 23*61046927SAndroid Build Coastguard Worker ** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 24*61046927SAndroid Build Coastguard Worker ** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. 25*61046927SAndroid Build Coastguard Worker */ 26*61046927SAndroid Build Coastguard Worker 27*61046927SAndroid Build Coastguard Worker /* Khronos platform-specific types and definitions. 28*61046927SAndroid Build Coastguard Worker * 29*61046927SAndroid Build Coastguard Worker * The master copy of khrplatform.h is maintained in the Khronos EGL 30*61046927SAndroid Build Coastguard Worker * Registry repository at https://github.com/KhronosGroup/EGL-Registry 31*61046927SAndroid Build Coastguard Worker * The last semantic modification to khrplatform.h was at commit ID: 32*61046927SAndroid Build Coastguard Worker * 67a3e0864c2d75ea5287b9f3d2eb74a745936692 33*61046927SAndroid Build Coastguard Worker * 34*61046927SAndroid Build Coastguard Worker * Adopters may modify this file to suit their platform. Adopters are 35*61046927SAndroid Build Coastguard Worker * encouraged to submit platform specific modifications to the Khronos 36*61046927SAndroid Build Coastguard Worker * group so that they can be included in future versions of this file. 37*61046927SAndroid Build Coastguard Worker * Please submit changes by filing pull requests or issues on 38*61046927SAndroid Build Coastguard Worker * the EGL Registry repository linked above. 39*61046927SAndroid Build Coastguard Worker * 40*61046927SAndroid Build Coastguard Worker * 41*61046927SAndroid Build Coastguard Worker * See the Implementer's Guidelines for information about where this file 42*61046927SAndroid Build Coastguard Worker * should be located on your system and for more details of its use: 43*61046927SAndroid Build Coastguard Worker * http://www.khronos.org/registry/implementers_guide.pdf 44*61046927SAndroid Build Coastguard Worker * 45*61046927SAndroid Build Coastguard Worker * This file should be included as 46*61046927SAndroid Build Coastguard Worker * #include <KHR/khrplatform.h> 47*61046927SAndroid Build Coastguard Worker * by Khronos client API header files that use its types and defines. 48*61046927SAndroid Build Coastguard Worker * 49*61046927SAndroid Build Coastguard Worker * The types in khrplatform.h should only be used to define API-specific types. 50*61046927SAndroid Build Coastguard Worker * 51*61046927SAndroid Build Coastguard Worker * Types defined in khrplatform.h: 52*61046927SAndroid Build Coastguard Worker * khronos_int8_t signed 8 bit 53*61046927SAndroid Build Coastguard Worker * khronos_uint8_t unsigned 8 bit 54*61046927SAndroid Build Coastguard Worker * khronos_int16_t signed 16 bit 55*61046927SAndroid Build Coastguard Worker * khronos_uint16_t unsigned 16 bit 56*61046927SAndroid Build Coastguard Worker * khronos_int32_t signed 32 bit 57*61046927SAndroid Build Coastguard Worker * khronos_uint32_t unsigned 32 bit 58*61046927SAndroid Build Coastguard Worker * khronos_int64_t signed 64 bit 59*61046927SAndroid Build Coastguard Worker * khronos_uint64_t unsigned 64 bit 60*61046927SAndroid Build Coastguard Worker * khronos_intptr_t signed same number of bits as a pointer 61*61046927SAndroid Build Coastguard Worker * khronos_uintptr_t unsigned same number of bits as a pointer 62*61046927SAndroid Build Coastguard Worker * khronos_ssize_t signed size 63*61046927SAndroid Build Coastguard Worker * khronos_usize_t unsigned size 64*61046927SAndroid Build Coastguard Worker * khronos_float_t signed 32 bit floating point 65*61046927SAndroid Build Coastguard Worker * khronos_time_ns_t unsigned 64 bit time in nanoseconds 66*61046927SAndroid Build Coastguard Worker * khronos_utime_nanoseconds_t unsigned time interval or absolute time in 67*61046927SAndroid Build Coastguard Worker * nanoseconds 68*61046927SAndroid Build Coastguard Worker * khronos_stime_nanoseconds_t signed time interval in nanoseconds 69*61046927SAndroid Build Coastguard Worker * khronos_boolean_enum_t enumerated boolean type. This should 70*61046927SAndroid Build Coastguard Worker * only be used as a base type when a client API's boolean type is 71*61046927SAndroid Build Coastguard Worker * an enum. Client APIs which use an integer or other type for 72*61046927SAndroid Build Coastguard Worker * booleans cannot use this as the base type for their boolean. 73*61046927SAndroid Build Coastguard Worker * 74*61046927SAndroid Build Coastguard Worker * Tokens defined in khrplatform.h: 75*61046927SAndroid Build Coastguard Worker * 76*61046927SAndroid Build Coastguard Worker * KHRONOS_FALSE, KHRONOS_TRUE Enumerated boolean false/true values. 77*61046927SAndroid Build Coastguard Worker * 78*61046927SAndroid Build Coastguard Worker * KHRONOS_SUPPORT_INT64 is 1 if 64 bit integers are supported; otherwise 0. 79*61046927SAndroid Build Coastguard Worker * KHRONOS_SUPPORT_FLOAT is 1 if floats are supported; otherwise 0. 80*61046927SAndroid Build Coastguard Worker * 81*61046927SAndroid Build Coastguard Worker * Calling convention macros defined in this file: 82*61046927SAndroid Build Coastguard Worker * KHRONOS_APICALL 83*61046927SAndroid Build Coastguard Worker * KHRONOS_APIENTRY 84*61046927SAndroid Build Coastguard Worker * KHRONOS_APIATTRIBUTES 85*61046927SAndroid Build Coastguard Worker * 86*61046927SAndroid Build Coastguard Worker * These may be used in function prototypes as: 87*61046927SAndroid Build Coastguard Worker * 88*61046927SAndroid Build Coastguard Worker * KHRONOS_APICALL void KHRONOS_APIENTRY funcname( 89*61046927SAndroid Build Coastguard Worker * int arg1, 90*61046927SAndroid Build Coastguard Worker * int arg2) KHRONOS_APIATTRIBUTES; 91*61046927SAndroid Build Coastguard Worker */ 92*61046927SAndroid Build Coastguard Worker 93*61046927SAndroid Build Coastguard Worker #if defined(__SCITECH_SNAP__) && !defined(KHRONOS_STATIC) 94*61046927SAndroid Build Coastguard Worker # define KHRONOS_STATIC 1 95*61046927SAndroid Build Coastguard Worker #endif 96*61046927SAndroid Build Coastguard Worker 97*61046927SAndroid Build Coastguard Worker /*------------------------------------------------------------------------- 98*61046927SAndroid Build Coastguard Worker * Definition of KHRONOS_APICALL 99*61046927SAndroid Build Coastguard Worker *------------------------------------------------------------------------- 100*61046927SAndroid Build Coastguard Worker * This precedes the return type of the function in the function prototype. 101*61046927SAndroid Build Coastguard Worker */ 102*61046927SAndroid Build Coastguard Worker #if defined(KHRONOS_STATIC) 103*61046927SAndroid Build Coastguard Worker /* If the preprocessor constant KHRONOS_STATIC is defined, make the 104*61046927SAndroid Build Coastguard Worker * header compatible with static linking. */ 105*61046927SAndroid Build Coastguard Worker # define KHRONOS_APICALL 106*61046927SAndroid Build Coastguard Worker #elif defined(_WIN32) 107*61046927SAndroid Build Coastguard Worker # define KHRONOS_APICALL __declspec(dllimport) 108*61046927SAndroid Build Coastguard Worker #elif defined (__SYMBIAN32__) 109*61046927SAndroid Build Coastguard Worker # define KHRONOS_APICALL IMPORT_C 110*61046927SAndroid Build Coastguard Worker #elif defined(__ANDROID__) 111*61046927SAndroid Build Coastguard Worker # define KHRONOS_APICALL __attribute__((visibility("default"))) 112*61046927SAndroid Build Coastguard Worker #else 113*61046927SAndroid Build Coastguard Worker # define KHRONOS_APICALL 114*61046927SAndroid Build Coastguard Worker #endif 115*61046927SAndroid Build Coastguard Worker 116*61046927SAndroid Build Coastguard Worker /*------------------------------------------------------------------------- 117*61046927SAndroid Build Coastguard Worker * Definition of KHRONOS_APIENTRY 118*61046927SAndroid Build Coastguard Worker *------------------------------------------------------------------------- 119*61046927SAndroid Build Coastguard Worker * This follows the return type of the function and precedes the function 120*61046927SAndroid Build Coastguard Worker * name in the function prototype. 121*61046927SAndroid Build Coastguard Worker */ 122*61046927SAndroid Build Coastguard Worker #if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(__SCITECH_SNAP__) 123*61046927SAndroid Build Coastguard Worker /* Win32 but not WinCE */ 124*61046927SAndroid Build Coastguard Worker # define KHRONOS_APIENTRY __stdcall 125*61046927SAndroid Build Coastguard Worker #else 126*61046927SAndroid Build Coastguard Worker # define KHRONOS_APIENTRY 127*61046927SAndroid Build Coastguard Worker #endif 128*61046927SAndroid Build Coastguard Worker 129*61046927SAndroid Build Coastguard Worker /*------------------------------------------------------------------------- 130*61046927SAndroid Build Coastguard Worker * Definition of KHRONOS_APIATTRIBUTES 131*61046927SAndroid Build Coastguard Worker *------------------------------------------------------------------------- 132*61046927SAndroid Build Coastguard Worker * This follows the closing parenthesis of the function prototype arguments. 133*61046927SAndroid Build Coastguard Worker */ 134*61046927SAndroid Build Coastguard Worker #if defined (__ARMCC_2__) 135*61046927SAndroid Build Coastguard Worker #define KHRONOS_APIATTRIBUTES __softfp 136*61046927SAndroid Build Coastguard Worker #else 137*61046927SAndroid Build Coastguard Worker #define KHRONOS_APIATTRIBUTES 138*61046927SAndroid Build Coastguard Worker #endif 139*61046927SAndroid Build Coastguard Worker 140*61046927SAndroid Build Coastguard Worker /*------------------------------------------------------------------------- 141*61046927SAndroid Build Coastguard Worker * basic type definitions 142*61046927SAndroid Build Coastguard Worker *-----------------------------------------------------------------------*/ 143*61046927SAndroid Build Coastguard Worker #if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__GNUC__) || defined(__SCO__) || defined(__USLC__) 144*61046927SAndroid Build Coastguard Worker 145*61046927SAndroid Build Coastguard Worker 146*61046927SAndroid Build Coastguard Worker /* 147*61046927SAndroid Build Coastguard Worker * Using <stdint.h> 148*61046927SAndroid Build Coastguard Worker */ 149*61046927SAndroid Build Coastguard Worker #include <stdint.h> 150*61046927SAndroid Build Coastguard Worker typedef int32_t khronos_int32_t; 151*61046927SAndroid Build Coastguard Worker typedef uint32_t khronos_uint32_t; 152*61046927SAndroid Build Coastguard Worker typedef int64_t khronos_int64_t; 153*61046927SAndroid Build Coastguard Worker typedef uint64_t khronos_uint64_t; 154*61046927SAndroid Build Coastguard Worker #define KHRONOS_SUPPORT_INT64 1 155*61046927SAndroid Build Coastguard Worker #define KHRONOS_SUPPORT_FLOAT 1 156*61046927SAndroid Build Coastguard Worker /* 157*61046927SAndroid Build Coastguard Worker * To support platform where unsigned long cannot be used interchangeably with 158*61046927SAndroid Build Coastguard Worker * inptr_t (e.g. CHERI-extended ISAs), we can use the stdint.h intptr_t. 159*61046927SAndroid Build Coastguard Worker * Ideally, we could just use (u)intptr_t everywhere, but this could result in 160*61046927SAndroid Build Coastguard Worker * ABI breakage if khronos_uintptr_t is changed from unsigned long to 161*61046927SAndroid Build Coastguard Worker * unsigned long long or similar (this results in different C++ name mangling). 162*61046927SAndroid Build Coastguard Worker * To avoid changes for existing platforms, we restrict usage of intptr_t to 163*61046927SAndroid Build Coastguard Worker * platforms where the size of a pointer is larger than the size of long. 164*61046927SAndroid Build Coastguard Worker */ 165*61046927SAndroid Build Coastguard Worker #if defined(__SIZEOF_LONG__) && defined(__SIZEOF_POINTER__) 166*61046927SAndroid Build Coastguard Worker #if __SIZEOF_POINTER__ > __SIZEOF_LONG__ 167*61046927SAndroid Build Coastguard Worker #define KHRONOS_USE_INTPTR_T 168*61046927SAndroid Build Coastguard Worker #endif 169*61046927SAndroid Build Coastguard Worker #endif 170*61046927SAndroid Build Coastguard Worker 171*61046927SAndroid Build Coastguard Worker #elif defined(__VMS ) || defined(__sgi) 172*61046927SAndroid Build Coastguard Worker 173*61046927SAndroid Build Coastguard Worker /* 174*61046927SAndroid Build Coastguard Worker * Using <inttypes.h> 175*61046927SAndroid Build Coastguard Worker */ 176*61046927SAndroid Build Coastguard Worker #include <inttypes.h> 177*61046927SAndroid Build Coastguard Worker typedef int32_t khronos_int32_t; 178*61046927SAndroid Build Coastguard Worker typedef uint32_t khronos_uint32_t; 179*61046927SAndroid Build Coastguard Worker typedef int64_t khronos_int64_t; 180*61046927SAndroid Build Coastguard Worker typedef uint64_t khronos_uint64_t; 181*61046927SAndroid Build Coastguard Worker #define KHRONOS_SUPPORT_INT64 1 182*61046927SAndroid Build Coastguard Worker #define KHRONOS_SUPPORT_FLOAT 1 183*61046927SAndroid Build Coastguard Worker 184*61046927SAndroid Build Coastguard Worker #elif defined(_WIN32) && !defined(__SCITECH_SNAP__) 185*61046927SAndroid Build Coastguard Worker 186*61046927SAndroid Build Coastguard Worker /* 187*61046927SAndroid Build Coastguard Worker * Win32 188*61046927SAndroid Build Coastguard Worker */ 189*61046927SAndroid Build Coastguard Worker typedef __int32 khronos_int32_t; 190*61046927SAndroid Build Coastguard Worker typedef unsigned __int32 khronos_uint32_t; 191*61046927SAndroid Build Coastguard Worker typedef __int64 khronos_int64_t; 192*61046927SAndroid Build Coastguard Worker typedef unsigned __int64 khronos_uint64_t; 193*61046927SAndroid Build Coastguard Worker #define KHRONOS_SUPPORT_INT64 1 194*61046927SAndroid Build Coastguard Worker #define KHRONOS_SUPPORT_FLOAT 1 195*61046927SAndroid Build Coastguard Worker 196*61046927SAndroid Build Coastguard Worker #elif defined(__sun__) || defined(__digital__) 197*61046927SAndroid Build Coastguard Worker 198*61046927SAndroid Build Coastguard Worker /* 199*61046927SAndroid Build Coastguard Worker * Sun or Digital 200*61046927SAndroid Build Coastguard Worker */ 201*61046927SAndroid Build Coastguard Worker typedef int khronos_int32_t; 202*61046927SAndroid Build Coastguard Worker typedef unsigned int khronos_uint32_t; 203*61046927SAndroid Build Coastguard Worker #if defined(__arch64__) || defined(_LP64) 204*61046927SAndroid Build Coastguard Worker typedef long int khronos_int64_t; 205*61046927SAndroid Build Coastguard Worker typedef unsigned long int khronos_uint64_t; 206*61046927SAndroid Build Coastguard Worker #else 207*61046927SAndroid Build Coastguard Worker typedef long long int khronos_int64_t; 208*61046927SAndroid Build Coastguard Worker typedef unsigned long long int khronos_uint64_t; 209*61046927SAndroid Build Coastguard Worker #endif /* __arch64__ */ 210*61046927SAndroid Build Coastguard Worker #define KHRONOS_SUPPORT_INT64 1 211*61046927SAndroid Build Coastguard Worker #define KHRONOS_SUPPORT_FLOAT 1 212*61046927SAndroid Build Coastguard Worker 213*61046927SAndroid Build Coastguard Worker #elif 0 214*61046927SAndroid Build Coastguard Worker 215*61046927SAndroid Build Coastguard Worker /* 216*61046927SAndroid Build Coastguard Worker * Hypothetical platform with no float or int64 support 217*61046927SAndroid Build Coastguard Worker */ 218*61046927SAndroid Build Coastguard Worker typedef int khronos_int32_t; 219*61046927SAndroid Build Coastguard Worker typedef unsigned int khronos_uint32_t; 220*61046927SAndroid Build Coastguard Worker #define KHRONOS_SUPPORT_INT64 0 221*61046927SAndroid Build Coastguard Worker #define KHRONOS_SUPPORT_FLOAT 0 222*61046927SAndroid Build Coastguard Worker 223*61046927SAndroid Build Coastguard Worker #else 224*61046927SAndroid Build Coastguard Worker 225*61046927SAndroid Build Coastguard Worker /* 226*61046927SAndroid Build Coastguard Worker * Generic fallback 227*61046927SAndroid Build Coastguard Worker */ 228*61046927SAndroid Build Coastguard Worker #include <stdint.h> 229*61046927SAndroid Build Coastguard Worker typedef int32_t khronos_int32_t; 230*61046927SAndroid Build Coastguard Worker typedef uint32_t khronos_uint32_t; 231*61046927SAndroid Build Coastguard Worker typedef int64_t khronos_int64_t; 232*61046927SAndroid Build Coastguard Worker typedef uint64_t khronos_uint64_t; 233*61046927SAndroid Build Coastguard Worker #define KHRONOS_SUPPORT_INT64 1 234*61046927SAndroid Build Coastguard Worker #define KHRONOS_SUPPORT_FLOAT 1 235*61046927SAndroid Build Coastguard Worker 236*61046927SAndroid Build Coastguard Worker #endif 237*61046927SAndroid Build Coastguard Worker 238*61046927SAndroid Build Coastguard Worker 239*61046927SAndroid Build Coastguard Worker /* 240*61046927SAndroid Build Coastguard Worker * Types that are (so far) the same on all platforms 241*61046927SAndroid Build Coastguard Worker */ 242*61046927SAndroid Build Coastguard Worker typedef signed char khronos_int8_t; 243*61046927SAndroid Build Coastguard Worker typedef unsigned char khronos_uint8_t; 244*61046927SAndroid Build Coastguard Worker typedef signed short int khronos_int16_t; 245*61046927SAndroid Build Coastguard Worker typedef unsigned short int khronos_uint16_t; 246*61046927SAndroid Build Coastguard Worker 247*61046927SAndroid Build Coastguard Worker /* 248*61046927SAndroid Build Coastguard Worker * Types that differ between LLP64 and LP64 architectures - in LLP64, 249*61046927SAndroid Build Coastguard Worker * pointers are 64 bits, but 'long' is still 32 bits. Win64 appears 250*61046927SAndroid Build Coastguard Worker * to be the only LLP64 architecture in current use. 251*61046927SAndroid Build Coastguard Worker */ 252*61046927SAndroid Build Coastguard Worker #ifdef KHRONOS_USE_INTPTR_T 253*61046927SAndroid Build Coastguard Worker typedef intptr_t khronos_intptr_t; 254*61046927SAndroid Build Coastguard Worker typedef uintptr_t khronos_uintptr_t; 255*61046927SAndroid Build Coastguard Worker #elif defined(_WIN64) 256*61046927SAndroid Build Coastguard Worker typedef signed long long int khronos_intptr_t; 257*61046927SAndroid Build Coastguard Worker typedef unsigned long long int khronos_uintptr_t; 258*61046927SAndroid Build Coastguard Worker #else 259*61046927SAndroid Build Coastguard Worker typedef signed long int khronos_intptr_t; 260*61046927SAndroid Build Coastguard Worker typedef unsigned long int khronos_uintptr_t; 261*61046927SAndroid Build Coastguard Worker #endif 262*61046927SAndroid Build Coastguard Worker 263*61046927SAndroid Build Coastguard Worker #if defined(_WIN64) 264*61046927SAndroid Build Coastguard Worker typedef signed long long int khronos_ssize_t; 265*61046927SAndroid Build Coastguard Worker typedef unsigned long long int khronos_usize_t; 266*61046927SAndroid Build Coastguard Worker #else 267*61046927SAndroid Build Coastguard Worker typedef signed long int khronos_ssize_t; 268*61046927SAndroid Build Coastguard Worker typedef unsigned long int khronos_usize_t; 269*61046927SAndroid Build Coastguard Worker #endif 270*61046927SAndroid Build Coastguard Worker 271*61046927SAndroid Build Coastguard Worker #if KHRONOS_SUPPORT_FLOAT 272*61046927SAndroid Build Coastguard Worker /* 273*61046927SAndroid Build Coastguard Worker * Float type 274*61046927SAndroid Build Coastguard Worker */ 275*61046927SAndroid Build Coastguard Worker typedef float khronos_float_t; 276*61046927SAndroid Build Coastguard Worker #endif 277*61046927SAndroid Build Coastguard Worker 278*61046927SAndroid Build Coastguard Worker #if KHRONOS_SUPPORT_INT64 279*61046927SAndroid Build Coastguard Worker /* Time types 280*61046927SAndroid Build Coastguard Worker * 281*61046927SAndroid Build Coastguard Worker * These types can be used to represent a time interval in nanoseconds or 282*61046927SAndroid Build Coastguard Worker * an absolute Unadjusted System Time. Unadjusted System Time is the number 283*61046927SAndroid Build Coastguard Worker * of nanoseconds since some arbitrary system event (e.g. since the last 284*61046927SAndroid Build Coastguard Worker * time the system booted). The Unadjusted System Time is an unsigned 285*61046927SAndroid Build Coastguard Worker * 64 bit value that wraps back to 0 every 584 years. Time intervals 286*61046927SAndroid Build Coastguard Worker * may be either signed or unsigned. 287*61046927SAndroid Build Coastguard Worker */ 288*61046927SAndroid Build Coastguard Worker typedef khronos_uint64_t khronos_utime_nanoseconds_t; 289*61046927SAndroid Build Coastguard Worker typedef khronos_int64_t khronos_stime_nanoseconds_t; 290*61046927SAndroid Build Coastguard Worker #endif 291*61046927SAndroid Build Coastguard Worker 292*61046927SAndroid Build Coastguard Worker /* 293*61046927SAndroid Build Coastguard Worker * Dummy value used to pad enum types to 32 bits. 294*61046927SAndroid Build Coastguard Worker */ 295*61046927SAndroid Build Coastguard Worker #ifndef KHRONOS_MAX_ENUM 296*61046927SAndroid Build Coastguard Worker #define KHRONOS_MAX_ENUM 0x7FFFFFFF 297*61046927SAndroid Build Coastguard Worker #endif 298*61046927SAndroid Build Coastguard Worker 299*61046927SAndroid Build Coastguard Worker /* 300*61046927SAndroid Build Coastguard Worker * Enumerated boolean type 301*61046927SAndroid Build Coastguard Worker * 302*61046927SAndroid Build Coastguard Worker * Values other than zero should be considered to be true. Therefore 303*61046927SAndroid Build Coastguard Worker * comparisons should not be made against KHRONOS_TRUE. 304*61046927SAndroid Build Coastguard Worker */ 305*61046927SAndroid Build Coastguard Worker typedef enum { 306*61046927SAndroid Build Coastguard Worker KHRONOS_FALSE = 0, 307*61046927SAndroid Build Coastguard Worker KHRONOS_TRUE = 1, 308*61046927SAndroid Build Coastguard Worker KHRONOS_BOOLEAN_ENUM_FORCE_SIZE = KHRONOS_MAX_ENUM 309*61046927SAndroid Build Coastguard Worker } khronos_boolean_enum_t; 310*61046927SAndroid Build Coastguard Worker 311*61046927SAndroid Build Coastguard Worker #endif /* __khrplatform_h_ */ 312