xref: /aosp_15_r20/external/mesa3d/include/KHR/khrplatform.h (revision 6104692788411f58d303aa86923a9ff6ecaded22)
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