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