|
|
|
@ -90,12 +90,20 @@
|
|
|
|
|
* int arg2) KHRONOS_APIATTRIBUTES;
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
#if defined(__SCITECH_SNAP__) && !defined(KHRONOS_STATIC)
|
|
|
|
|
# define KHRONOS_STATIC 1
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
/*-------------------------------------------------------------------------
|
|
|
|
|
* Definition of KHRONOS_APICALL
|
|
|
|
|
*-------------------------------------------------------------------------
|
|
|
|
|
* This precedes the return type of the function in the function prototype.
|
|
|
|
|
*/
|
|
|
|
|
#if defined(_WIN32) && !defined(__SCITECH_SNAP__)
|
|
|
|
|
#if defined(KHRONOS_STATIC)
|
|
|
|
|
/* If the preprocessor constant KHRONOS_STATIC is defined, make the
|
|
|
|
|
* header compatible with static linking. */
|
|
|
|
|
# define KHRONOS_APICALL
|
|
|
|
|
#elif defined(_WIN32)
|
|
|
|
|
# define KHRONOS_APICALL __declspec(dllimport)
|
|
|
|
|
#elif defined (__SYMBIAN32__)
|
|
|
|
|
# define KHRONOS_APICALL IMPORT_C
|
|
|
|
@ -145,6 +153,20 @@ typedef int64_t khronos_int64_t;
|
|
|
|
|
typedef uint64_t khronos_uint64_t;
|
|
|
|
|
#define KHRONOS_SUPPORT_INT64 1
|
|
|
|
|
#define KHRONOS_SUPPORT_FLOAT 1
|
|
|
|
|
/*
|
|
|
|
|
* To support platform where unsigned long cannot be used interchangeably with
|
|
|
|
|
* inptr_t (e.g. CHERI-extended ISAs), we can use the stdint.h intptr_t.
|
|
|
|
|
* Ideally, we could just use (u)intptr_t everywhere, but this could result in
|
|
|
|
|
* ABI breakage if khronos_uintptr_t is changed from unsigned long to
|
|
|
|
|
* unsigned long long or similar (this results in different C++ name mangling).
|
|
|
|
|
* To avoid changes for existing platforms, we restrict usage of intptr_t to
|
|
|
|
|
* platforms where the size of a pointer is larger than the size of long.
|
|
|
|
|
*/
|
|
|
|
|
#if defined(__SIZEOF_LONG__) && defined(__SIZEOF_POINTER__)
|
|
|
|
|
#if __SIZEOF_POINTER__ > __SIZEOF_LONG__
|
|
|
|
|
#define KHRONOS_USE_INTPTR_T
|
|
|
|
|
#endif
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#elif defined(__VMS ) || defined(__sgi)
|
|
|
|
|
|
|
|
|
@ -227,14 +249,21 @@ typedef unsigned short int khronos_uint16_t;
|
|
|
|
|
* pointers are 64 bits, but 'long' is still 32 bits. Win64 appears
|
|
|
|
|
* to be the only LLP64 architecture in current use.
|
|
|
|
|
*/
|
|
|
|
|
#ifdef _WIN64
|
|
|
|
|
#ifdef KHRONOS_USE_INTPTR_T
|
|
|
|
|
typedef intptr_t khronos_intptr_t;
|
|
|
|
|
typedef uintptr_t khronos_uintptr_t;
|
|
|
|
|
#elif defined(_WIN64)
|
|
|
|
|
typedef signed long long int khronos_intptr_t;
|
|
|
|
|
typedef unsigned long long int khronos_uintptr_t;
|
|
|
|
|
typedef signed long long int khronos_ssize_t;
|
|
|
|
|
typedef unsigned long long int khronos_usize_t;
|
|
|
|
|
#else
|
|
|
|
|
typedef signed long int khronos_intptr_t;
|
|
|
|
|
typedef unsigned long int khronos_uintptr_t;
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#if defined(_WIN64)
|
|
|
|
|
typedef signed long long int khronos_ssize_t;
|
|
|
|
|
typedef unsigned long long int khronos_usize_t;
|
|
|
|
|
#else
|
|
|
|
|
typedef signed long int khronos_ssize_t;
|
|
|
|
|
typedef unsigned long int khronos_usize_t;
|
|
|
|
|
#endif
|
|
|
|
|