include/SDL_egl.h
author Ryan C. Gordon <icculus@icculus.org>
Thu, 28 May 2015 01:54:52 -0400
changeset 9671 0e1f57b051f4
parent 9619 b94b6d0bff0f
child 9848 7c157f4b3228
permissions -rw-r--r--
Windows GetBasePath should use GetModuleFileNameExW() and check for overflows.

Apparently you might get strange paths from GetModuleFileName(), such as
short path names or UNC filenames, so this avoids that problem. Since you have
to tapdance with linking different libraries and defining macros depending on
what Windows you plan to target, we dynamically load the API we need, which
works on all versions of Windows (on Win7, it'll load a compatibility wrapper
for the newer API location).

What a mess.

This also now does the right thing if there isn't enough space to store the
path, looping with a larger allocated buffer each try.

Fixes Bugzilla #2435.
gabomdq@8021
     1
/*
gabomdq@8021
     2
  Simple DirectMedia Layer
slouken@9619
     3
  Copyright (C) 1997-2015 Sam Lantinga <slouken@libsdl.org>
gabomdq@8021
     4
gabomdq@8021
     5
  This software is provided 'as-is', without any express or implied
gabomdq@8021
     6
  warranty.  In no event will the authors be held liable for any damages
gabomdq@8021
     7
  arising from the use of this software.
gabomdq@8021
     8
gabomdq@8021
     9
  Permission is granted to anyone to use this software for any purpose,
gabomdq@8021
    10
  including commercial applications, and to alter it and redistribute it
gabomdq@8021
    11
  freely, subject to the following restrictions:
gabomdq@8021
    12
gabomdq@8021
    13
  1. The origin of this software must not be misrepresented; you must not
gabomdq@8021
    14
     claim that you wrote the original software. If you use this software
gabomdq@8021
    15
     in a product, an acknowledgment in the product documentation would be
gabomdq@8021
    16
     appreciated but is not required.
gabomdq@8021
    17
  2. Altered source versions must be plainly marked as such, and must not be
gabomdq@8021
    18
     misrepresented as being the original software.
gabomdq@8021
    19
  3. This notice may not be removed or altered from any source distribution.
gabomdq@8021
    20
*/
gabomdq@8021
    21
gabomdq@8021
    22
/**
philipp@9055
    23
 *  \file SDL_egl.h
gabomdq@8021
    24
 *
philipp@9055
    25
 *  This is a simple file to encapsulate the EGL API headers.
gabomdq@8021
    26
 */
gabomdq@8021
    27
#ifndef _MSC_VER
gabomdq@8021
    28
gabomdq@8021
    29
#include <EGL/egl.h>
knut@8962
    30
#include <EGL/eglext.h>
gabomdq@8021
    31
gabomdq@8021
    32
#else /* _MSC_VER */
gabomdq@8021
    33
gabomdq@8021
    34
/* EGL headers for Visual Studio */
gabomdq@8021
    35
gabomdq@8021
    36
#ifndef __khrplatform_h_
gabomdq@8021
    37
#define __khrplatform_h_
gabomdq@8021
    38
gabomdq@8021
    39
/*
gabomdq@8021
    40
** Copyright (c) 2008-2009 The Khronos Group Inc.
gabomdq@8021
    41
**
gabomdq@8021
    42
** Permission is hereby granted, free of charge, to any person obtaining a
gabomdq@8021
    43
** copy of this software and/or associated documentation files (the
gabomdq@8021
    44
** "Materials"), to deal in the Materials without restriction, including
gabomdq@8021
    45
** without limitation the rights to use, copy, modify, merge, publish,
gabomdq@8021
    46
** distribute, sublicense, and/or sell copies of the Materials, and to
gabomdq@8021
    47
** permit persons to whom the Materials are furnished to do so, subject to
gabomdq@8021
    48
** the following conditions:
gabomdq@8021
    49
**
gabomdq@8021
    50
** The above copyright notice and this permission notice shall be included
gabomdq@8021
    51
** in all copies or substantial portions of the Materials.
gabomdq@8021
    52
**
gabomdq@8021
    53
** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
gabomdq@8021
    54
** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
gabomdq@8021
    55
** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
gabomdq@8021
    56
** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
gabomdq@8021
    57
** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
gabomdq@8021
    58
** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
gabomdq@8021
    59
** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
gabomdq@8021
    60
*/
gabomdq@8021
    61
gabomdq@8021
    62
/* Khronos platform-specific types and definitions.
gabomdq@8021
    63
*
gabomdq@8021
    64
* $Revision: 23298 $ on $Date: 2013-09-30 17:07:13 -0700 (Mon, 30 Sep 2013) $
gabomdq@8021
    65
*
gabomdq@8021
    66
* Adopters may modify this file to suit their platform. Adopters are
gabomdq@8021
    67
* encouraged to submit platform specific modifications to the Khronos
gabomdq@8021
    68
* group so that they can be included in future versions of this file.
gabomdq@8021
    69
* Please submit changes by sending them to the public Khronos Bugzilla
gabomdq@8021
    70
* (http://khronos.org/bugzilla) by filing a bug against product
gabomdq@8021
    71
* "Khronos (general)" component "Registry".
gabomdq@8021
    72
*
gabomdq@8021
    73
* A predefined template which fills in some of the bug fields can be
gabomdq@8021
    74
* reached using http://tinyurl.com/khrplatform-h-bugreport, but you
gabomdq@8021
    75
* must create a Bugzilla login first.
gabomdq@8021
    76
*
gabomdq@8021
    77
*
gabomdq@8021
    78
* See the Implementer's Guidelines for information about where this file
gabomdq@8021
    79
* should be located on your system and for more details of its use:
gabomdq@8021
    80
*    http://www.khronos.org/registry/implementers_guide.pdf
gabomdq@8021
    81
*
gabomdq@8021
    82
* This file should be included as
gabomdq@8021
    83
*        #include <KHR/khrplatform.h>
gabomdq@8021
    84
* by Khronos client API header files that use its types and defines.
gabomdq@8021
    85
*
gabomdq@8021
    86
* The types in khrplatform.h should only be used to define API-specific types.
gabomdq@8021
    87
*
gabomdq@8021
    88
* Types defined in khrplatform.h:
gabomdq@8021
    89
*    khronos_int8_t              signed   8  bit
gabomdq@8021
    90
*    khronos_uint8_t             unsigned 8  bit
gabomdq@8021
    91
*    khronos_int16_t             signed   16 bit
gabomdq@8021
    92
*    khronos_uint16_t            unsigned 16 bit
gabomdq@8021
    93
*    khronos_int32_t             signed   32 bit
gabomdq@8021
    94
*    khronos_uint32_t            unsigned 32 bit
gabomdq@8021
    95
*    khronos_int64_t             signed   64 bit
gabomdq@8021
    96
*    khronos_uint64_t            unsigned 64 bit
gabomdq@8021
    97
*    khronos_intptr_t            signed   same number of bits as a pointer
gabomdq@8021
    98
*    khronos_uintptr_t           unsigned same number of bits as a pointer
gabomdq@8021
    99
*    khronos_ssize_t             signed   size
gabomdq@8021
   100
*    khronos_usize_t             unsigned size
gabomdq@8021
   101
*    khronos_float_t             signed   32 bit floating point
gabomdq@8021
   102
*    khronos_time_ns_t           unsigned 64 bit time in nanoseconds
gabomdq@8021
   103
*    khronos_utime_nanoseconds_t unsigned time interval or absolute time in
gabomdq@8021
   104
*                                         nanoseconds
gabomdq@8021
   105
*    khronos_stime_nanoseconds_t signed time interval in nanoseconds
gabomdq@8021
   106
*    khronos_boolean_enum_t      enumerated boolean type. This should
gabomdq@8021
   107
*      only be used as a base type when a client API's boolean type is
gabomdq@8021
   108
*      an enum. Client APIs which use an integer or other type for
gabomdq@8021
   109
*      booleans cannot use this as the base type for their boolean.
gabomdq@8021
   110
*
gabomdq@8021
   111
* Tokens defined in khrplatform.h:
gabomdq@8021
   112
*
gabomdq@8021
   113
*    KHRONOS_FALSE, KHRONOS_TRUE Enumerated boolean false/true values.
gabomdq@8021
   114
*
gabomdq@8021
   115
*    KHRONOS_SUPPORT_INT64 is 1 if 64 bit integers are supported; otherwise 0.
gabomdq@8021
   116
*    KHRONOS_SUPPORT_FLOAT is 1 if floats are supported; otherwise 0.
gabomdq@8021
   117
*
gabomdq@8021
   118
* Calling convention macros defined in this file:
gabomdq@8021
   119
*    KHRONOS_APICALL
gabomdq@8021
   120
*    KHRONOS_APIENTRY
gabomdq@8021
   121
*    KHRONOS_APIATTRIBUTES
gabomdq@8021
   122
*
gabomdq@8021
   123
* These may be used in function prototypes as:
gabomdq@8021
   124
*
gabomdq@8021
   125
*      KHRONOS_APICALL void KHRONOS_APIENTRY funcname(
gabomdq@8021
   126
*                                  int arg1,
gabomdq@8021
   127
*                                  int arg2) KHRONOS_APIATTRIBUTES;
gabomdq@8021
   128
*/
gabomdq@8021
   129
gabomdq@8021
   130
/*-------------------------------------------------------------------------
gabomdq@8021
   131
* Definition of KHRONOS_APICALL
gabomdq@8021
   132
*-------------------------------------------------------------------------
gabomdq@8021
   133
* This precedes the return type of the function in the function prototype.
gabomdq@8021
   134
*/
gabomdq@8021
   135
#if defined(_WIN32) && !defined(__SCITECH_SNAP__)
gabomdq@8021
   136
#   define KHRONOS_APICALL __declspec(dllimport)
gabomdq@8021
   137
#elif defined (__SYMBIAN32__)
gabomdq@8021
   138
#   define KHRONOS_APICALL IMPORT_C
gabomdq@8021
   139
#else
gabomdq@8021
   140
#   define KHRONOS_APICALL
gabomdq@8021
   141
#endif
gabomdq@8021
   142
gabomdq@8021
   143
/*-------------------------------------------------------------------------
gabomdq@8021
   144
* Definition of KHRONOS_APIENTRY
gabomdq@8021
   145
*-------------------------------------------------------------------------
gabomdq@8021
   146
* This follows the return type of the function  and precedes the function
gabomdq@8021
   147
* name in the function prototype.
gabomdq@8021
   148
*/
gabomdq@8021
   149
#if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(__SCITECH_SNAP__)
gabomdq@8021
   150
/* Win32 but not WinCE */
gabomdq@8021
   151
#   define KHRONOS_APIENTRY __stdcall
gabomdq@8021
   152
#else
gabomdq@8021
   153
#   define KHRONOS_APIENTRY
gabomdq@8021
   154
#endif
gabomdq@8021
   155
gabomdq@8021
   156
/*-------------------------------------------------------------------------
gabomdq@8021
   157
* Definition of KHRONOS_APIATTRIBUTES
gabomdq@8021
   158
*-------------------------------------------------------------------------
gabomdq@8021
   159
* This follows the closing parenthesis of the function prototype arguments.
gabomdq@8021
   160
*/
gabomdq@8021
   161
#if defined (__ARMCC_2__)
gabomdq@8021
   162
#define KHRONOS_APIATTRIBUTES __softfp
gabomdq@8021
   163
#else
gabomdq@8021
   164
#define KHRONOS_APIATTRIBUTES
gabomdq@8021
   165
#endif
gabomdq@8021
   166
gabomdq@8021
   167
/*-------------------------------------------------------------------------
gabomdq@8021
   168
* basic type definitions
gabomdq@8021
   169
*-----------------------------------------------------------------------*/
gabomdq@8021
   170
#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__GNUC__) || defined(__SCO__) || defined(__USLC__)
gabomdq@8021
   171
gabomdq@8021
   172
gabomdq@8021
   173
/*
gabomdq@8021
   174
* Using <stdint.h>
gabomdq@8021
   175
*/
gabomdq@8021
   176
#include <stdint.h>
gabomdq@8021
   177
typedef int32_t                 khronos_int32_t;
gabomdq@8021
   178
typedef uint32_t                khronos_uint32_t;
gabomdq@8021
   179
typedef int64_t                 khronos_int64_t;
gabomdq@8021
   180
typedef uint64_t                khronos_uint64_t;
gabomdq@8021
   181
#define KHRONOS_SUPPORT_INT64   1
gabomdq@8021
   182
#define KHRONOS_SUPPORT_FLOAT   1
gabomdq@8021
   183
gabomdq@8021
   184
#elif defined(__VMS ) || defined(__sgi)
gabomdq@8021
   185
gabomdq@8021
   186
/*
gabomdq@8021
   187
* Using <inttypes.h>
gabomdq@8021
   188
*/
gabomdq@8021
   189
#include <inttypes.h>
gabomdq@8021
   190
typedef int32_t                 khronos_int32_t;
gabomdq@8021
   191
typedef uint32_t                khronos_uint32_t;
gabomdq@8021
   192
typedef int64_t                 khronos_int64_t;
gabomdq@8021
   193
typedef uint64_t                khronos_uint64_t;
gabomdq@8021
   194
#define KHRONOS_SUPPORT_INT64   1
gabomdq@8021
   195
#define KHRONOS_SUPPORT_FLOAT   1
gabomdq@8021
   196
gabomdq@8021
   197
#elif defined(_WIN32) && !defined(__SCITECH_SNAP__)
gabomdq@8021
   198
gabomdq@8021
   199
/*
gabomdq@8021
   200
* Win32
gabomdq@8021
   201
*/
gabomdq@8021
   202
typedef __int32                 khronos_int32_t;
gabomdq@8021
   203
typedef unsigned __int32        khronos_uint32_t;
gabomdq@8021
   204
typedef __int64                 khronos_int64_t;
gabomdq@8021
   205
typedef unsigned __int64        khronos_uint64_t;
gabomdq@8021
   206
#define KHRONOS_SUPPORT_INT64   1
gabomdq@8021
   207
#define KHRONOS_SUPPORT_FLOAT   1
gabomdq@8021
   208
gabomdq@8021
   209
#elif defined(__sun__) || defined(__digital__)
gabomdq@8021
   210
gabomdq@8021
   211
/*
gabomdq@8021
   212
* Sun or Digital
gabomdq@8021
   213
*/
gabomdq@8021
   214
typedef int                     khronos_int32_t;
gabomdq@8021
   215
typedef unsigned int            khronos_uint32_t;
gabomdq@8021
   216
#if defined(__arch64__) || defined(_LP64)
gabomdq@8021
   217
typedef long int                khronos_int64_t;
gabomdq@8021
   218
typedef unsigned long int       khronos_uint64_t;
gabomdq@8021
   219
#else
gabomdq@8021
   220
typedef long long int           khronos_int64_t;
gabomdq@8021
   221
typedef unsigned long long int  khronos_uint64_t;
gabomdq@8021
   222
#endif /* __arch64__ */
gabomdq@8021
   223
#define KHRONOS_SUPPORT_INT64   1
gabomdq@8021
   224
#define KHRONOS_SUPPORT_FLOAT   1
gabomdq@8021
   225
gabomdq@8021
   226
#elif 0
gabomdq@8021
   227
gabomdq@8021
   228
/*
gabomdq@8021
   229
* Hypothetical platform with no float or int64 support
gabomdq@8021
   230
*/
gabomdq@8021
   231
typedef int                     khronos_int32_t;
gabomdq@8021
   232
typedef unsigned int            khronos_uint32_t;
gabomdq@8021
   233
#define KHRONOS_SUPPORT_INT64   0
gabomdq@8021
   234
#define KHRONOS_SUPPORT_FLOAT   0
gabomdq@8021
   235
gabomdq@8021
   236
#else
gabomdq@8021
   237
gabomdq@8021
   238
/*
gabomdq@8021
   239
* Generic fallback
gabomdq@8021
   240
*/
gabomdq@8021
   241
#include <stdint.h>
gabomdq@8021
   242
typedef int32_t                 khronos_int32_t;
gabomdq@8021
   243
typedef uint32_t                khronos_uint32_t;
gabomdq@8021
   244
typedef int64_t                 khronos_int64_t;
gabomdq@8021
   245
typedef uint64_t                khronos_uint64_t;
gabomdq@8021
   246
#define KHRONOS_SUPPORT_INT64   1
gabomdq@8021
   247
#define KHRONOS_SUPPORT_FLOAT   1
gabomdq@8021
   248
gabomdq@8021
   249
#endif
gabomdq@8021
   250
gabomdq@8021
   251
gabomdq@8021
   252
/*
gabomdq@8021
   253
* Types that are (so far) the same on all platforms
gabomdq@8021
   254
*/
gabomdq@8021
   255
typedef signed   char          khronos_int8_t;
gabomdq@8021
   256
typedef unsigned char          khronos_uint8_t;
gabomdq@8021
   257
typedef signed   short int     khronos_int16_t;
gabomdq@8021
   258
typedef unsigned short int     khronos_uint16_t;
gabomdq@8021
   259
gabomdq@8021
   260
/*
gabomdq@8021
   261
* Types that differ between LLP64 and LP64 architectures - in LLP64,
gabomdq@8021
   262
* pointers are 64 bits, but 'long' is still 32 bits. Win64 appears
gabomdq@8021
   263
* to be the only LLP64 architecture in current use.
gabomdq@8021
   264
*/
gabomdq@8021
   265
#ifdef _WIN64
gabomdq@8021
   266
typedef signed   long long int khronos_intptr_t;
gabomdq@8021
   267
typedef unsigned long long int khronos_uintptr_t;
gabomdq@8021
   268
typedef signed   long long int khronos_ssize_t;
gabomdq@8021
   269
typedef unsigned long long int khronos_usize_t;
gabomdq@8021
   270
#else
gabomdq@8021
   271
typedef signed   long  int     khronos_intptr_t;
gabomdq@8021
   272
typedef unsigned long  int     khronos_uintptr_t;
gabomdq@8021
   273
typedef signed   long  int     khronos_ssize_t;
gabomdq@8021
   274
typedef unsigned long  int     khronos_usize_t;
gabomdq@8021
   275
#endif
gabomdq@8021
   276
gabomdq@8021
   277
#if KHRONOS_SUPPORT_FLOAT
gabomdq@8021
   278
/*
gabomdq@8021
   279
* Float type
gabomdq@8021
   280
*/
gabomdq@8021
   281
typedef          float         khronos_float_t;
gabomdq@8021
   282
#endif
gabomdq@8021
   283
gabomdq@8021
   284
#if KHRONOS_SUPPORT_INT64
gabomdq@8021
   285
/* Time types
gabomdq@8021
   286
*
gabomdq@8021
   287
* These types can be used to represent a time interval in nanoseconds or
gabomdq@8021
   288
* an absolute Unadjusted System Time.  Unadjusted System Time is the number
gabomdq@8021
   289
* of nanoseconds since some arbitrary system event (e.g. since the last
gabomdq@8021
   290
* time the system booted).  The Unadjusted System Time is an unsigned
gabomdq@8021
   291
* 64 bit value that wraps back to 0 every 584 years.  Time intervals
gabomdq@8021
   292
* may be either signed or unsigned.
gabomdq@8021
   293
*/
gabomdq@8021
   294
typedef khronos_uint64_t       khronos_utime_nanoseconds_t;
gabomdq@8021
   295
typedef khronos_int64_t        khronos_stime_nanoseconds_t;
gabomdq@8021
   296
#endif
gabomdq@8021
   297
gabomdq@8021
   298
/*
gabomdq@8021
   299
* Dummy value used to pad enum types to 32 bits.
gabomdq@8021
   300
*/
gabomdq@8021
   301
#ifndef KHRONOS_MAX_ENUM
gabomdq@8021
   302
#define KHRONOS_MAX_ENUM 0x7FFFFFFF
gabomdq@8021
   303
#endif
gabomdq@8021
   304
gabomdq@8021
   305
/*
gabomdq@8021
   306
* Enumerated boolean type
gabomdq@8021
   307
*
gabomdq@8021
   308
* Values other than zero should be considered to be true.  Therefore
gabomdq@8021
   309
* comparisons should not be made against KHRONOS_TRUE.
gabomdq@8021
   310
*/
gabomdq@8021
   311
typedef enum {
gabomdq@8021
   312
    KHRONOS_FALSE = 0,
gabomdq@8021
   313
    KHRONOS_TRUE = 1,
gabomdq@8021
   314
    KHRONOS_BOOLEAN_ENUM_FORCE_SIZE = KHRONOS_MAX_ENUM
gabomdq@8021
   315
} khronos_boolean_enum_t;
gabomdq@8021
   316
gabomdq@8021
   317
#endif /* __khrplatform_h_ */
gabomdq@8021
   318
gabomdq@8021
   319
gabomdq@8021
   320
#ifndef __eglplatform_h_
gabomdq@8021
   321
#define __eglplatform_h_
gabomdq@8021
   322
gabomdq@8021
   323
/*
gabomdq@8021
   324
** Copyright (c) 2007-2009 The Khronos Group Inc.
gabomdq@8021
   325
**
gabomdq@8021
   326
** Permission is hereby granted, free of charge, to any person obtaining a
gabomdq@8021
   327
** copy of this software and/or associated documentation files (the
gabomdq@8021
   328
** "Materials"), to deal in the Materials without restriction, including
gabomdq@8021
   329
** without limitation the rights to use, copy, modify, merge, publish,
gabomdq@8021
   330
** distribute, sublicense, and/or sell copies of the Materials, and to
gabomdq@8021
   331
** permit persons to whom the Materials are furnished to do so, subject to
gabomdq@8021
   332
** the following conditions:
gabomdq@8021
   333
**
gabomdq@8021
   334
** The above copyright notice and this permission notice shall be included
gabomdq@8021
   335
** in all copies or substantial portions of the Materials.
gabomdq@8021
   336
**
gabomdq@8021
   337
** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
gabomdq@8021
   338
** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
gabomdq@8021
   339
** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
gabomdq@8021
   340
** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
gabomdq@8021
   341
** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
gabomdq@8021
   342
** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
gabomdq@8021
   343
** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
gabomdq@8021
   344
*/
gabomdq@8021
   345
gabomdq@8021
   346
/* Platform-specific types and definitions for egl.h
gabomdq@8021
   347
* $Revision: 12306 $ on $Date: 2010-08-25 09:51:28 -0700 (Wed, 25 Aug 2010) $
gabomdq@8021
   348
*
gabomdq@8021
   349
* Adopters may modify khrplatform.h and this file to suit their platform.
gabomdq@8021
   350
* You are encouraged to submit all modifications to the Khronos group so that
gabomdq@8021
   351
* they can be included in future versions of this file.  Please submit changes
gabomdq@8021
   352
* by sending them to the public Khronos Bugzilla (http://khronos.org/bugzilla)
gabomdq@8021
   353
* by filing a bug against product "EGL" component "Registry".
gabomdq@8021
   354
*/
gabomdq@8021
   355
gabomdq@8021
   356
/*#include <KHR/khrplatform.h>*/
gabomdq@8021
   357
gabomdq@8021
   358
/* Macros used in EGL function prototype declarations.
gabomdq@8021
   359
*
gabomdq@8021
   360
* EGL functions should be prototyped as:
gabomdq@8021
   361
*
gabomdq@8021
   362
* EGLAPI return-type EGLAPIENTRY eglFunction(arguments);
gabomdq@8021
   363
* typedef return-type (EXPAPIENTRYP PFNEGLFUNCTIONPROC) (arguments);
gabomdq@8021
   364
*
gabomdq@8021
   365
* KHRONOS_APICALL and KHRONOS_APIENTRY are defined in KHR/khrplatform.h
gabomdq@8021
   366
*/
gabomdq@8021
   367
gabomdq@8021
   368
#ifndef EGLAPI
gabomdq@8021
   369
#define EGLAPI KHRONOS_APICALL
gabomdq@8021
   370
#endif
gabomdq@8021
   371
gabomdq@8021
   372
#ifndef EGLAPIENTRY
gabomdq@8021
   373
#define EGLAPIENTRY  KHRONOS_APIENTRY
gabomdq@8021
   374
#endif
gabomdq@8021
   375
#define EGLAPIENTRYP EGLAPIENTRY*
gabomdq@8021
   376
gabomdq@8021
   377
/* The types NativeDisplayType, NativeWindowType, and NativePixmapType
gabomdq@8021
   378
* are aliases of window-system-dependent types, such as X Display * or
gabomdq@8021
   379
* Windows Device Context. They must be defined in platform-specific
gabomdq@8021
   380
* code below. The EGL-prefixed versions of Native*Type are the same
gabomdq@8021
   381
* types, renamed in EGL 1.3 so all types in the API start with "EGL".
gabomdq@8021
   382
*
gabomdq@8021
   383
* Khronos STRONGLY RECOMMENDS that you use the default definitions
gabomdq@8021
   384
* provided below, since these changes affect both binary and source
gabomdq@8021
   385
* portability of applications using EGL running on different EGL
gabomdq@8021
   386
* implementations.
gabomdq@8021
   387
*/
gabomdq@8021
   388
gabomdq@8021
   389
#if defined(_WIN32) || defined(__VC32__) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) /* Win32 and WinCE */
gabomdq@8021
   390
#ifndef WIN32_LEAN_AND_MEAN
gabomdq@8021
   391
#define WIN32_LEAN_AND_MEAN 1
gabomdq@8021
   392
#endif
gabomdq@8021
   393
#include <windows.h>
gabomdq@8021
   394
dludwig@8545
   395
#if __WINRT__
dludwig@8545
   396
#include <Unknwn.h>
slouken@8582
   397
typedef IUnknown * EGLNativeWindowType;
dludwig@8663
   398
typedef IUnknown * EGLNativePixmapType;
dludwig@8663
   399
typedef IUnknown * EGLNativeDisplayType;
dludwig@8545
   400
#else
gabomdq@8021
   401
typedef HDC     EGLNativeDisplayType;
gabomdq@8021
   402
typedef HBITMAP EGLNativePixmapType;
gabomdq@8021
   403
typedef HWND    EGLNativeWindowType;
dludwig@8545
   404
#endif
gabomdq@8021
   405
gabomdq@8021
   406
#elif defined(__WINSCW__) || defined(__SYMBIAN32__)  /* Symbian */
gabomdq@8021
   407
gabomdq@8021
   408
typedef int   EGLNativeDisplayType;
gabomdq@8021
   409
typedef void *EGLNativeWindowType;
gabomdq@8021
   410
typedef void *EGLNativePixmapType;
gabomdq@8021
   411
gabomdq@8021
   412
#elif defined(WL_EGL_PLATFORM)
gabomdq@8021
   413
gabomdq@8021
   414
typedef struct wl_display     *EGLNativeDisplayType;
gabomdq@8021
   415
typedef struct wl_egl_pixmap  *EGLNativePixmapType;
gabomdq@8021
   416
typedef struct wl_egl_window  *EGLNativeWindowType;
gabomdq@8021
   417
gabomdq@8021
   418
#elif defined(__GBM__)
gabomdq@8021
   419
gabomdq@8021
   420
typedef struct gbm_device  *EGLNativeDisplayType;
gabomdq@8021
   421
typedef struct gbm_bo      *EGLNativePixmapType;
gabomdq@8021
   422
typedef void               *EGLNativeWindowType;
gabomdq@8021
   423
dimitris@8761
   424
#elif defined(__ANDROID__) /* Android */
gabomdq@8021
   425
gabomdq@8021
   426
struct ANativeWindow;
gabomdq@8021
   427
struct egl_native_pixmap_t;
gabomdq@8021
   428
gabomdq@8021
   429
typedef struct ANativeWindow        *EGLNativeWindowType;
gabomdq@8021
   430
typedef struct egl_native_pixmap_t  *EGLNativePixmapType;
gabomdq@8021
   431
typedef void                        *EGLNativeDisplayType;
gabomdq@8021
   432
gabomdq@8021
   433
#elif defined(MIR_EGL_PLATFORM)
gabomdq@8021
   434
gabomdq@8021
   435
#include <mir_toolkit/mir_client_library.h>
gabomdq@8021
   436
typedef MirEGLNativeDisplayType EGLNativeDisplayType;
gabomdq@8021
   437
typedef void                   *EGLNativePixmapType;
gabomdq@8021
   438
typedef MirEGLNativeWindowType  EGLNativeWindowType;
gabomdq@8021
   439
gabomdq@8021
   440
#elif defined(__unix__)
gabomdq@8021
   441
gabomdq@8021
   442
#ifdef MESA_EGL_NO_X11_HEADERS
gabomdq@8021
   443
gabomdq@8021
   444
typedef void            *EGLNativeDisplayType;
gabomdq@8021
   445
typedef khronos_uintptr_t EGLNativePixmapType;
gabomdq@8021
   446
typedef khronos_uintptr_t EGLNativeWindowType;
gabomdq@8021
   447
gabomdq@8021
   448
#else
gabomdq@8021
   449
gabomdq@8021
   450
/* X11 (tentative)  */
gabomdq@8021
   451
#include <X11/Xlib.h>
gabomdq@8021
   452
#include <X11/Xutil.h>
gabomdq@8021
   453
gabomdq@8021
   454
typedef Display *EGLNativeDisplayType;
gabomdq@8021
   455
typedef Pixmap   EGLNativePixmapType;
gabomdq@8021
   456
typedef Window   EGLNativeWindowType;
gabomdq@8021
   457
gabomdq@8021
   458
#endif /* MESA_EGL_NO_X11_HEADERS */
gabomdq@8021
   459
gabomdq@8021
   460
#else
gabomdq@8021
   461
#error "Platform not recognized"
gabomdq@8021
   462
#endif
gabomdq@8021
   463
gabomdq@8021
   464
/* EGL 1.2 types, renamed for consistency in EGL 1.3 */
gabomdq@8021
   465
typedef EGLNativeDisplayType NativeDisplayType;
gabomdq@8021
   466
typedef EGLNativePixmapType  NativePixmapType;
gabomdq@8021
   467
typedef EGLNativeWindowType  NativeWindowType;
gabomdq@8021
   468
gabomdq@8021
   469
gabomdq@8021
   470
/* Define EGLint. This must be a signed integral type large enough to contain
gabomdq@8021
   471
* all legal attribute names and values passed into and out of EGL, whether
gabomdq@8021
   472
* their type is boolean, bitmask, enumerant (symbolic constant), integer,
gabomdq@8021
   473
* handle, or other.  While in general a 32-bit integer will suffice, if
gabomdq@8021
   474
* handles are 64 bit types, then EGLint should be defined as a signed 64-bit
gabomdq@8021
   475
* integer type.
gabomdq@8021
   476
*/
gabomdq@8021
   477
typedef khronos_int32_t EGLint;
gabomdq@8021
   478
gabomdq@8021
   479
#endif /* __eglplatform_h */
gabomdq@8021
   480
gabomdq@8021
   481
/* -*- mode: c; tab-width: 8; -*- */
gabomdq@8021
   482
/* vi: set sw=4 ts=8: */
gabomdq@8021
   483
/* Reference version of egl.h for EGL 1.4.
gabomdq@8021
   484
* $Revision: 9356 $ on $Date: 2009-10-21 02:52:25 -0700 (Wed, 21 Oct 2009) $
gabomdq@8021
   485
*/
gabomdq@8021
   486
gabomdq@8021
   487
/*
gabomdq@8021
   488
** Copyright (c) 2007-2009 The Khronos Group Inc.
gabomdq@8021
   489
**
gabomdq@8021
   490
** Permission is hereby granted, free of charge, to any person obtaining a
gabomdq@8021
   491
** copy of this software and/or associated documentation files (the
gabomdq@8021
   492
** "Materials"), to deal in the Materials without restriction, including
gabomdq@8021
   493
** without limitation the rights to use, copy, modify, merge, publish,
gabomdq@8021
   494
** distribute, sublicense, and/or sell copies of the Materials, and to
gabomdq@8021
   495
** permit persons to whom the Materials are furnished to do so, subject to
gabomdq@8021
   496
** the following conditions:
gabomdq@8021
   497
**
gabomdq@8021
   498
** The above copyright notice and this permission notice shall be included
gabomdq@8021
   499
** in all copies or substantial portions of the Materials.
gabomdq@8021
   500
**
gabomdq@8021
   501
** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
gabomdq@8021
   502
** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
gabomdq@8021
   503
** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
gabomdq@8021
   504
** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
gabomdq@8021
   505
** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
gabomdq@8021
   506
** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
gabomdq@8021
   507
** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
gabomdq@8021
   508
*/
gabomdq@8021
   509
gabomdq@8021
   510
#ifndef __egl_h_
gabomdq@8021
   511
#define __egl_h_
gabomdq@8021
   512
gabomdq@8021
   513
/* All platform-dependent types and macro boilerplate (such as EGLAPI
gabomdq@8021
   514
* and EGLAPIENTRY) should go in eglplatform.h.
gabomdq@8021
   515
*/
gabomdq@8021
   516
/*#include <EGL/eglplatform.h>*/
gabomdq@8021
   517
gabomdq@8021
   518
#ifdef __cplusplus
gabomdq@8021
   519
extern "C" {
gabomdq@8021
   520
#endif
gabomdq@8021
   521
gabomdq@8021
   522
    /* EGL Types */
gabomdq@8021
   523
    /* EGLint is defined in eglplatform.h */
gabomdq@8021
   524
    typedef unsigned int EGLBoolean;
gabomdq@8021
   525
    typedef unsigned int EGLenum;
gabomdq@8021
   526
    typedef void *EGLConfig;
gabomdq@8021
   527
    typedef void *EGLContext;
gabomdq@8021
   528
    typedef void *EGLDisplay;
gabomdq@8021
   529
    typedef void *EGLSurface;
gabomdq@8021
   530
    typedef void *EGLClientBuffer;
gabomdq@8021
   531
gabomdq@8021
   532
    /* EGL Versioning */
gabomdq@8021
   533
#define EGL_VERSION_1_0			1
gabomdq@8021
   534
#define EGL_VERSION_1_1			1
gabomdq@8021
   535
#define EGL_VERSION_1_2			1
gabomdq@8021
   536
#define EGL_VERSION_1_3			1
gabomdq@8021
   537
#define EGL_VERSION_1_4			1
gabomdq@8021
   538
gabomdq@8021
   539
    /* EGL Enumerants. Bitmasks and other exceptional cases aside, most
gabomdq@8021
   540
    * enums are assigned unique values starting at 0x3000.
gabomdq@8021
   541
    */
gabomdq@8021
   542
gabomdq@8021
   543
    /* EGL aliases */
gabomdq@8021
   544
#define EGL_FALSE			0
gabomdq@8021
   545
#define EGL_TRUE			1
gabomdq@8021
   546
gabomdq@8021
   547
    /* Out-of-band handle values */
gabomdq@8021
   548
#define EGL_DEFAULT_DISPLAY		((EGLNativeDisplayType)0)
gabomdq@8021
   549
#define EGL_NO_CONTEXT			((EGLContext)0)
gabomdq@8021
   550
#define EGL_NO_DISPLAY			((EGLDisplay)0)
gabomdq@8021
   551
#define EGL_NO_SURFACE			((EGLSurface)0)
gabomdq@8021
   552
gabomdq@8021
   553
    /* Out-of-band attribute value */
gabomdq@8021
   554
#define EGL_DONT_CARE			((EGLint)-1)
gabomdq@8021
   555
gabomdq@8021
   556
    /* Errors / GetError return values */
gabomdq@8021
   557
#define EGL_SUCCESS			0x3000
gabomdq@8021
   558
#define EGL_NOT_INITIALIZED		0x3001
gabomdq@8021
   559
#define EGL_BAD_ACCESS			0x3002
gabomdq@8021
   560
#define EGL_BAD_ALLOC			0x3003
gabomdq@8021
   561
#define EGL_BAD_ATTRIBUTE		0x3004
gabomdq@8021
   562
#define EGL_BAD_CONFIG			0x3005
gabomdq@8021
   563
#define EGL_BAD_CONTEXT			0x3006
gabomdq@8021
   564
#define EGL_BAD_CURRENT_SURFACE		0x3007
gabomdq@8021
   565
#define EGL_BAD_DISPLAY			0x3008
gabomdq@8021
   566
#define EGL_BAD_MATCH			0x3009
gabomdq@8021
   567
#define EGL_BAD_NATIVE_PIXMAP		0x300A
gabomdq@8021
   568
#define EGL_BAD_NATIVE_WINDOW		0x300B
gabomdq@8021
   569
#define EGL_BAD_PARAMETER		0x300C
gabomdq@8021
   570
#define EGL_BAD_SURFACE			0x300D
gabomdq@8021
   571
#define EGL_CONTEXT_LOST		0x300E	/* EGL 1.1 - IMG_power_management */
gabomdq@8021
   572
gabomdq@8021
   573
    /* Reserved 0x300F-0x301F for additional errors */
gabomdq@8021
   574
gabomdq@8021
   575
    /* Config attributes */
gabomdq@8021
   576
#define EGL_BUFFER_SIZE			0x3020
gabomdq@8021
   577
#define EGL_ALPHA_SIZE			0x3021
gabomdq@8021
   578
#define EGL_BLUE_SIZE			0x3022
gabomdq@8021
   579
#define EGL_GREEN_SIZE			0x3023
gabomdq@8021
   580
#define EGL_RED_SIZE			0x3024
gabomdq@8021
   581
#define EGL_DEPTH_SIZE			0x3025
gabomdq@8021
   582
#define EGL_STENCIL_SIZE		0x3026
gabomdq@8021
   583
#define EGL_CONFIG_CAVEAT		0x3027
gabomdq@8021
   584
#define EGL_CONFIG_ID			0x3028
gabomdq@8021
   585
#define EGL_LEVEL			0x3029
gabomdq@8021
   586
#define EGL_MAX_PBUFFER_HEIGHT		0x302A
gabomdq@8021
   587
#define EGL_MAX_PBUFFER_PIXELS		0x302B
gabomdq@8021
   588
#define EGL_MAX_PBUFFER_WIDTH		0x302C
gabomdq@8021
   589
#define EGL_NATIVE_RENDERABLE		0x302D
gabomdq@8021
   590
#define EGL_NATIVE_VISUAL_ID		0x302E
gabomdq@8021
   591
#define EGL_NATIVE_VISUAL_TYPE		0x302F
gabomdq@8021
   592
#define EGL_SAMPLES			0x3031
gabomdq@8021
   593
#define EGL_SAMPLE_BUFFERS		0x3032
gabomdq@8021
   594
#define EGL_SURFACE_TYPE		0x3033
gabomdq@8021
   595
#define EGL_TRANSPARENT_TYPE		0x3034
gabomdq@8021
   596
#define EGL_TRANSPARENT_BLUE_VALUE	0x3035
gabomdq@8021
   597
#define EGL_TRANSPARENT_GREEN_VALUE	0x3036
gabomdq@8021
   598
#define EGL_TRANSPARENT_RED_VALUE	0x3037
gabomdq@8021
   599
#define EGL_NONE			0x3038	/* Attrib list terminator */
gabomdq@8021
   600
#define EGL_BIND_TO_TEXTURE_RGB		0x3039
gabomdq@8021
   601
#define EGL_BIND_TO_TEXTURE_RGBA	0x303A
gabomdq@8021
   602
#define EGL_MIN_SWAP_INTERVAL		0x303B
gabomdq@8021
   603
#define EGL_MAX_SWAP_INTERVAL		0x303C
gabomdq@8021
   604
#define EGL_LUMINANCE_SIZE		0x303D
gabomdq@8021
   605
#define EGL_ALPHA_MASK_SIZE		0x303E
gabomdq@8021
   606
#define EGL_COLOR_BUFFER_TYPE		0x303F
gabomdq@8021
   607
#define EGL_RENDERABLE_TYPE		0x3040
gabomdq@8021
   608
#define EGL_MATCH_NATIVE_PIXMAP		0x3041	/* Pseudo-attribute (not queryable) */
gabomdq@8021
   609
#define EGL_CONFORMANT			0x3042
gabomdq@8021
   610
gabomdq@8021
   611
    /* Reserved 0x3041-0x304F for additional config attributes */
gabomdq@8021
   612
gabomdq@8021
   613
    /* Config attribute values */
gabomdq@8021
   614
#define EGL_SLOW_CONFIG			0x3050	/* EGL_CONFIG_CAVEAT value */
gabomdq@8021
   615
#define EGL_NON_CONFORMANT_CONFIG	0x3051	/* EGL_CONFIG_CAVEAT value */
gabomdq@8021
   616
#define EGL_TRANSPARENT_RGB		0x3052	/* EGL_TRANSPARENT_TYPE value */
gabomdq@8021
   617
#define EGL_RGB_BUFFER			0x308E	/* EGL_COLOR_BUFFER_TYPE value */
gabomdq@8021
   618
#define EGL_LUMINANCE_BUFFER		0x308F	/* EGL_COLOR_BUFFER_TYPE value */
gabomdq@8021
   619
gabomdq@8021
   620
    /* More config attribute values, for EGL_TEXTURE_FORMAT */
gabomdq@8021
   621
#define EGL_NO_TEXTURE			0x305C
gabomdq@8021
   622
#define EGL_TEXTURE_RGB			0x305D
gabomdq@8021
   623
#define EGL_TEXTURE_RGBA		0x305E
gabomdq@8021
   624
#define EGL_TEXTURE_2D			0x305F
gabomdq@8021
   625
gabomdq@8021
   626
    /* Config attribute mask bits */
gabomdq@8021
   627
#define EGL_PBUFFER_BIT			0x0001	/* EGL_SURFACE_TYPE mask bits */
gabomdq@8021
   628
#define EGL_PIXMAP_BIT			0x0002	/* EGL_SURFACE_TYPE mask bits */
gabomdq@8021
   629
#define EGL_WINDOW_BIT			0x0004	/* EGL_SURFACE_TYPE mask bits */
gabomdq@8021
   630
#define EGL_VG_COLORSPACE_LINEAR_BIT	0x0020	/* EGL_SURFACE_TYPE mask bits */
gabomdq@8021
   631
#define EGL_VG_ALPHA_FORMAT_PRE_BIT	0x0040	/* EGL_SURFACE_TYPE mask bits */
gabomdq@8021
   632
#define EGL_MULTISAMPLE_RESOLVE_BOX_BIT 0x0200	/* EGL_SURFACE_TYPE mask bits */
gabomdq@8021
   633
#define EGL_SWAP_BEHAVIOR_PRESERVED_BIT 0x0400	/* EGL_SURFACE_TYPE mask bits */
gabomdq@8021
   634
gabomdq@8021
   635
#define EGL_OPENGL_ES_BIT		0x0001	/* EGL_RENDERABLE_TYPE mask bits */
gabomdq@8021
   636
#define EGL_OPENVG_BIT			0x0002	/* EGL_RENDERABLE_TYPE mask bits */
gabomdq@8021
   637
#define EGL_OPENGL_ES2_BIT		0x0004	/* EGL_RENDERABLE_TYPE mask bits */
gabomdq@8021
   638
#define EGL_OPENGL_BIT			0x0008	/* EGL_RENDERABLE_TYPE mask bits */
gabomdq@8021
   639
gabomdq@8021
   640
    /* QueryString targets */
gabomdq@8021
   641
#define EGL_VENDOR			0x3053
gabomdq@8021
   642
#define EGL_VERSION			0x3054
gabomdq@8021
   643
#define EGL_EXTENSIONS			0x3055
gabomdq@8021
   644
#define EGL_CLIENT_APIS			0x308D
gabomdq@8021
   645
gabomdq@8021
   646
    /* QuerySurface / SurfaceAttrib / CreatePbufferSurface targets */
gabomdq@8021
   647
#define EGL_HEIGHT			0x3056
gabomdq@8021
   648
#define EGL_WIDTH			0x3057
gabomdq@8021
   649
#define EGL_LARGEST_PBUFFER		0x3058
gabomdq@8021
   650
#define EGL_TEXTURE_FORMAT		0x3080
gabomdq@8021
   651
#define EGL_TEXTURE_TARGET		0x3081
gabomdq@8021
   652
#define EGL_MIPMAP_TEXTURE		0x3082
gabomdq@8021
   653
#define EGL_MIPMAP_LEVEL		0x3083
gabomdq@8021
   654
#define EGL_RENDER_BUFFER		0x3086
gabomdq@8021
   655
#define EGL_VG_COLORSPACE		0x3087
gabomdq@8021
   656
#define EGL_VG_ALPHA_FORMAT		0x3088
gabomdq@8021
   657
#define EGL_HORIZONTAL_RESOLUTION	0x3090
gabomdq@8021
   658
#define EGL_VERTICAL_RESOLUTION		0x3091
gabomdq@8021
   659
#define EGL_PIXEL_ASPECT_RATIO		0x3092
gabomdq@8021
   660
#define EGL_SWAP_BEHAVIOR		0x3093
gabomdq@8021
   661
#define EGL_MULTISAMPLE_RESOLVE		0x3099
gabomdq@8021
   662
gabomdq@8021
   663
    /* EGL_RENDER_BUFFER values / BindTexImage / ReleaseTexImage buffer targets */
gabomdq@8021
   664
#define EGL_BACK_BUFFER			0x3084
gabomdq@8021
   665
#define EGL_SINGLE_BUFFER		0x3085
gabomdq@8021
   666
gabomdq@8021
   667
    /* OpenVG color spaces */
gabomdq@8021
   668
#define EGL_VG_COLORSPACE_sRGB		0x3089	/* EGL_VG_COLORSPACE value */
gabomdq@8021
   669
#define EGL_VG_COLORSPACE_LINEAR	0x308A	/* EGL_VG_COLORSPACE value */
gabomdq@8021
   670
gabomdq@8021
   671
    /* OpenVG alpha formats */
gabomdq@8021
   672
#define EGL_VG_ALPHA_FORMAT_NONPRE	0x308B	/* EGL_ALPHA_FORMAT value */
gabomdq@8021
   673
#define EGL_VG_ALPHA_FORMAT_PRE		0x308C	/* EGL_ALPHA_FORMAT value */
gabomdq@8021
   674
gabomdq@8021
   675
    /* Constant scale factor by which fractional display resolutions &
gabomdq@8021
   676
    * aspect ratio are scaled when queried as integer values.
gabomdq@8021
   677
    */
gabomdq@8021
   678
#define EGL_DISPLAY_SCALING		10000
gabomdq@8021
   679
gabomdq@8021
   680
    /* Unknown display resolution/aspect ratio */
gabomdq@8021
   681
#define EGL_UNKNOWN			((EGLint)-1)
gabomdq@8021
   682
gabomdq@8021
   683
    /* Back buffer swap behaviors */
gabomdq@8021
   684
#define EGL_BUFFER_PRESERVED		0x3094	/* EGL_SWAP_BEHAVIOR value */
gabomdq@8021
   685
#define EGL_BUFFER_DESTROYED		0x3095	/* EGL_SWAP_BEHAVIOR value */
gabomdq@8021
   686
gabomdq@8021
   687
    /* CreatePbufferFromClientBuffer buffer types */
gabomdq@8021
   688
#define EGL_OPENVG_IMAGE		0x3096
gabomdq@8021
   689
gabomdq@8021
   690
    /* QueryContext targets */
gabomdq@8021
   691
#define EGL_CONTEXT_CLIENT_TYPE		0x3097
gabomdq@8021
   692
gabomdq@8021
   693
    /* CreateContext attributes */
gabomdq@8021
   694
#define EGL_CONTEXT_CLIENT_VERSION	0x3098
gabomdq@8021
   695
gabomdq@8021
   696
    /* Multisample resolution behaviors */
gabomdq@8021
   697
#define EGL_MULTISAMPLE_RESOLVE_DEFAULT 0x309A	/* EGL_MULTISAMPLE_RESOLVE value */
gabomdq@8021
   698
#define EGL_MULTISAMPLE_RESOLVE_BOX	0x309B	/* EGL_MULTISAMPLE_RESOLVE value */
gabomdq@8021
   699
gabomdq@8021
   700
    /* BindAPI/QueryAPI targets */
gabomdq@8021
   701
#define EGL_OPENGL_ES_API		0x30A0
gabomdq@8021
   702
#define EGL_OPENVG_API			0x30A1
gabomdq@8021
   703
#define EGL_OPENGL_API			0x30A2
gabomdq@8021
   704
gabomdq@8021
   705
    /* GetCurrentSurface targets */
gabomdq@8021
   706
#define EGL_DRAW			0x3059
gabomdq@8021
   707
#define EGL_READ			0x305A
gabomdq@8021
   708
gabomdq@8021
   709
    /* WaitNative engines */
gabomdq@8021
   710
#define EGL_CORE_NATIVE_ENGINE		0x305B
gabomdq@8021
   711
gabomdq@8021
   712
    /* EGL 1.2 tokens renamed for consistency in EGL 1.3 */
gabomdq@8021
   713
#define EGL_COLORSPACE			EGL_VG_COLORSPACE
gabomdq@8021
   714
#define EGL_ALPHA_FORMAT		EGL_VG_ALPHA_FORMAT
gabomdq@8021
   715
#define EGL_COLORSPACE_sRGB		EGL_VG_COLORSPACE_sRGB
gabomdq@8021
   716
#define EGL_COLORSPACE_LINEAR		EGL_VG_COLORSPACE_LINEAR
gabomdq@8021
   717
#define EGL_ALPHA_FORMAT_NONPRE		EGL_VG_ALPHA_FORMAT_NONPRE
gabomdq@8021
   718
#define EGL_ALPHA_FORMAT_PRE		EGL_VG_ALPHA_FORMAT_PRE
gabomdq@8021
   719
gabomdq@8021
   720
    /* EGL extensions must request enum blocks from the Khronos
gabomdq@8021
   721
    * API Registrar, who maintains the enumerant registry. Submit
gabomdq@8021
   722
    * a bug in Khronos Bugzilla against task "Registry".
gabomdq@8021
   723
    */
gabomdq@8021
   724
gabomdq@8021
   725
gabomdq@8021
   726
gabomdq@8021
   727
    /* EGL Functions */
gabomdq@8021
   728
gabomdq@8021
   729
    EGLAPI EGLint EGLAPIENTRY eglGetError(void);
gabomdq@8021
   730
gabomdq@8021
   731
    EGLAPI EGLDisplay EGLAPIENTRY eglGetDisplay(EGLNativeDisplayType display_id);
gabomdq@8021
   732
    EGLAPI EGLBoolean EGLAPIENTRY eglInitialize(EGLDisplay dpy, EGLint *major, EGLint *minor);
gabomdq@8021
   733
    EGLAPI EGLBoolean EGLAPIENTRY eglTerminate(EGLDisplay dpy);
gabomdq@8021
   734
gabomdq@8021
   735
    EGLAPI const char * EGLAPIENTRY eglQueryString(EGLDisplay dpy, EGLint name);
gabomdq@8021
   736
gabomdq@8021
   737
    EGLAPI EGLBoolean EGLAPIENTRY eglGetConfigs(EGLDisplay dpy, EGLConfig *configs,
gabomdq@8021
   738
        EGLint config_size, EGLint *num_config);
gabomdq@8021
   739
    EGLAPI EGLBoolean EGLAPIENTRY eglChooseConfig(EGLDisplay dpy, const EGLint *attrib_list,
gabomdq@8021
   740
        EGLConfig *configs, EGLint config_size,
gabomdq@8021
   741
        EGLint *num_config);
gabomdq@8021
   742
    EGLAPI EGLBoolean EGLAPIENTRY eglGetConfigAttrib(EGLDisplay dpy, EGLConfig config,
gabomdq@8021
   743
        EGLint attribute, EGLint *value);
gabomdq@8021
   744
gabomdq@8021
   745
    EGLAPI EGLSurface EGLAPIENTRY eglCreateWindowSurface(EGLDisplay dpy, EGLConfig config,
gabomdq@8021
   746
        EGLNativeWindowType win,
gabomdq@8021
   747
        const EGLint *attrib_list);
gabomdq@8021
   748
    EGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferSurface(EGLDisplay dpy, EGLConfig config,
gabomdq@8021
   749
        const EGLint *attrib_list);
gabomdq@8021
   750
    EGLAPI EGLSurface EGLAPIENTRY eglCreatePixmapSurface(EGLDisplay dpy, EGLConfig config,
gabomdq@8021
   751
        EGLNativePixmapType pixmap,
gabomdq@8021
   752
        const EGLint *attrib_list);
gabomdq@8021
   753
    EGLAPI EGLBoolean EGLAPIENTRY eglDestroySurface(EGLDisplay dpy, EGLSurface surface);
gabomdq@8021
   754
    EGLAPI EGLBoolean EGLAPIENTRY eglQuerySurface(EGLDisplay dpy, EGLSurface surface,
gabomdq@8021
   755
        EGLint attribute, EGLint *value);
gabomdq@8021
   756
gabomdq@8021
   757
    EGLAPI EGLBoolean EGLAPIENTRY eglBindAPI(EGLenum api);
gabomdq@8021
   758
    EGLAPI EGLenum EGLAPIENTRY eglQueryAPI(void);
gabomdq@8021
   759
gabomdq@8021
   760
    EGLAPI EGLBoolean EGLAPIENTRY eglWaitClient(void);
gabomdq@8021
   761
gabomdq@8021
   762
    EGLAPI EGLBoolean EGLAPIENTRY eglReleaseThread(void);
gabomdq@8021
   763
gabomdq@8021
   764
    EGLAPI EGLSurface EGLAPIENTRY eglCreatePbufferFromClientBuffer(
gabomdq@8021
   765
        EGLDisplay dpy, EGLenum buftype, EGLClientBuffer buffer,
gabomdq@8021
   766
        EGLConfig config, const EGLint *attrib_list);
gabomdq@8021
   767
gabomdq@8021
   768
    EGLAPI EGLBoolean EGLAPIENTRY eglSurfaceAttrib(EGLDisplay dpy, EGLSurface surface,
gabomdq@8021
   769
        EGLint attribute, EGLint value);
gabomdq@8021
   770
    EGLAPI EGLBoolean EGLAPIENTRY eglBindTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer);
gabomdq@8021
   771
    EGLAPI EGLBoolean EGLAPIENTRY eglReleaseTexImage(EGLDisplay dpy, EGLSurface surface, EGLint buffer);
gabomdq@8021
   772
gabomdq@8021
   773
gabomdq@8021
   774
    EGLAPI EGLBoolean EGLAPIENTRY eglSwapInterval(EGLDisplay dpy, EGLint interval);
gabomdq@8021
   775
gabomdq@8021
   776
gabomdq@8021
   777
    EGLAPI EGLContext EGLAPIENTRY eglCreateContext(EGLDisplay dpy, EGLConfig config,
gabomdq@8021
   778
        EGLContext share_context,
gabomdq@8021
   779
        const EGLint *attrib_list);
gabomdq@8021
   780
    EGLAPI EGLBoolean EGLAPIENTRY eglDestroyContext(EGLDisplay dpy, EGLContext ctx);
gabomdq@8021
   781
    EGLAPI EGLBoolean EGLAPIENTRY eglMakeCurrent(EGLDisplay dpy, EGLSurface draw,
gabomdq@8021
   782
        EGLSurface read, EGLContext ctx);
gabomdq@8021
   783
gabomdq@8021
   784
    EGLAPI EGLContext EGLAPIENTRY eglGetCurrentContext(void);
gabomdq@8021
   785
    EGLAPI EGLSurface EGLAPIENTRY eglGetCurrentSurface(EGLint readdraw);
gabomdq@8021
   786
    EGLAPI EGLDisplay EGLAPIENTRY eglGetCurrentDisplay(void);
gabomdq@8021
   787
    EGLAPI EGLBoolean EGLAPIENTRY eglQueryContext(EGLDisplay dpy, EGLContext ctx,
gabomdq@8021
   788
        EGLint attribute, EGLint *value);
gabomdq@8021
   789
gabomdq@8021
   790
    EGLAPI EGLBoolean EGLAPIENTRY eglWaitGL(void);
gabomdq@8021
   791
    EGLAPI EGLBoolean EGLAPIENTRY eglWaitNative(EGLint engine);
gabomdq@8021
   792
    EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffers(EGLDisplay dpy, EGLSurface surface);
gabomdq@8021
   793
    EGLAPI EGLBoolean EGLAPIENTRY eglCopyBuffers(EGLDisplay dpy, EGLSurface surface,
gabomdq@8021
   794
        EGLNativePixmapType target);
gabomdq@8021
   795
gabomdq@8021
   796
    /* This is a generic function pointer type, whose name indicates it must
gabomdq@8021
   797
    * be cast to the proper type *and calling convention* before use.
gabomdq@8021
   798
    */
gabomdq@8021
   799
    typedef void(*__eglMustCastToProperFunctionPointerType)(void);
gabomdq@8021
   800
gabomdq@8021
   801
    /* Now, define eglGetProcAddress using the generic function ptr. type */
gabomdq@8021
   802
    EGLAPI __eglMustCastToProperFunctionPointerType EGLAPIENTRY
gabomdq@8021
   803
        eglGetProcAddress(const char *procname);
gabomdq@8021
   804
gabomdq@8021
   805
#ifdef __cplusplus
gabomdq@8021
   806
}
gabomdq@8021
   807
#endif
gabomdq@8021
   808
gabomdq@8021
   809
#endif /* __egl_h_ */
gabomdq@8021
   810
gabomdq@8021
   811
gabomdq@8021
   812
gabomdq@8021
   813
gabomdq@8021
   814
#ifndef __eglext_h_
gabomdq@8021
   815
#define __eglext_h_
gabomdq@8021
   816
gabomdq@8021
   817
#ifdef __cplusplus
gabomdq@8021
   818
extern "C" {
gabomdq@8021
   819
#endif
gabomdq@8021
   820
gabomdq@8021
   821
    /*
gabomdq@8021
   822
    ** Copyright (c) 2007-2013 The Khronos Group Inc.
gabomdq@8021
   823
    **
gabomdq@8021
   824
    ** Permission is hereby granted, free of charge, to any person obtaining a
gabomdq@8021
   825
    ** copy of this software and/or associated documentation files (the
gabomdq@8021
   826
    ** "Materials"), to deal in the Materials without restriction, including
gabomdq@8021
   827
    ** without limitation the rights to use, copy, modify, merge, publish,
gabomdq@8021
   828
    ** distribute, sublicense, and/or sell copies of the Materials, and to
gabomdq@8021
   829
    ** permit persons to whom the Materials are furnished to do so, subject to
gabomdq@8021
   830
    ** the following conditions:
gabomdq@8021
   831
    **
gabomdq@8021
   832
    ** The above copyright notice and this permission notice shall be included
gabomdq@8021
   833
    ** in all copies or substantial portions of the Materials.
gabomdq@8021
   834
    **
gabomdq@8021
   835
    ** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
gabomdq@8021
   836
    ** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
gabomdq@8021
   837
    ** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
gabomdq@8021
   838
    ** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
gabomdq@8021
   839
    ** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
gabomdq@8021
   840
    ** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
gabomdq@8021
   841
    ** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
gabomdq@8021
   842
    */
gabomdq@8021
   843
gabomdq@8021
   844
/* #include <EGL/eglplatform.h> */
gabomdq@8021
   845
gabomdq@8021
   846
    /*************************************************************/
gabomdq@8021
   847
gabomdq@8021
   848
    /* Header file version number */
gabomdq@8021
   849
    /* Current version at http://www.khronos.org/registry/egl/ */
gabomdq@8021
   850
    /* $Revision: 21254 $ on $Date: 2013-04-25 03:11:55 -0700 (Thu, 25 Apr 2013) $ */
gabomdq@8021
   851
#define EGL_EGLEXT_VERSION 16
gabomdq@8021
   852
gabomdq@8021
   853
#ifndef EGL_KHR_config_attribs
gabomdq@8021
   854
#define EGL_KHR_config_attribs 1
gabomdq@8021
   855
#define EGL_CONFORMANT_KHR			0x3042	/* EGLConfig attribute */
gabomdq@8021
   856
#define EGL_VG_COLORSPACE_LINEAR_BIT_KHR	0x0020	/* EGL_SURFACE_TYPE bitfield */
gabomdq@8021
   857
#define EGL_VG_ALPHA_FORMAT_PRE_BIT_KHR		0x0040	/* EGL_SURFACE_TYPE bitfield */
gabomdq@8021
   858
#endif
gabomdq@8021
   859
gabomdq@8021
   860
#ifndef EGL_KHR_lock_surface
gabomdq@8021
   861
#define EGL_KHR_lock_surface 1
gabomdq@8021
   862
#define EGL_READ_SURFACE_BIT_KHR		0x0001	/* EGL_LOCK_USAGE_HINT_KHR bitfield */
gabomdq@8021
   863
#define EGL_WRITE_SURFACE_BIT_KHR		0x0002	/* EGL_LOCK_USAGE_HINT_KHR bitfield */
gabomdq@8021
   864
#define EGL_LOCK_SURFACE_BIT_KHR		0x0080	/* EGL_SURFACE_TYPE bitfield */
gabomdq@8021
   865
#define EGL_OPTIMAL_FORMAT_BIT_KHR		0x0100	/* EGL_SURFACE_TYPE bitfield */
gabomdq@8021
   866
#define EGL_MATCH_FORMAT_KHR			0x3043	/* EGLConfig attribute */
gabomdq@8021
   867
#define EGL_FORMAT_RGB_565_EXACT_KHR		0x30C0	/* EGL_MATCH_FORMAT_KHR value */
gabomdq@8021
   868
#define EGL_FORMAT_RGB_565_KHR			0x30C1	/* EGL_MATCH_FORMAT_KHR value */
gabomdq@8021
   869
#define EGL_FORMAT_RGBA_8888_EXACT_KHR		0x30C2	/* EGL_MATCH_FORMAT_KHR value */
gabomdq@8021
   870
#define EGL_FORMAT_RGBA_8888_KHR		0x30C3	/* EGL_MATCH_FORMAT_KHR value */
gabomdq@8021
   871
#define EGL_MAP_PRESERVE_PIXELS_KHR		0x30C4	/* eglLockSurfaceKHR attribute */
gabomdq@8021
   872
#define EGL_LOCK_USAGE_HINT_KHR			0x30C5	/* eglLockSurfaceKHR attribute */
gabomdq@8021
   873
#define EGL_BITMAP_POINTER_KHR			0x30C6	/* eglQuerySurface attribute */
gabomdq@8021
   874
#define EGL_BITMAP_PITCH_KHR			0x30C7	/* eglQuerySurface attribute */
gabomdq@8021
   875
#define EGL_BITMAP_ORIGIN_KHR			0x30C8	/* eglQuerySurface attribute */
gabomdq@8021
   876
#define EGL_BITMAP_PIXEL_RED_OFFSET_KHR		0x30C9	/* eglQuerySurface attribute */
gabomdq@8021
   877
#define EGL_BITMAP_PIXEL_GREEN_OFFSET_KHR	0x30CA	/* eglQuerySurface attribute */
gabomdq@8021
   878
#define EGL_BITMAP_PIXEL_BLUE_OFFSET_KHR	0x30CB	/* eglQuerySurface attribute */
gabomdq@8021
   879
#define EGL_BITMAP_PIXEL_ALPHA_OFFSET_KHR	0x30CC	/* eglQuerySurface attribute */
gabomdq@8021
   880
#define EGL_BITMAP_PIXEL_LUMINANCE_OFFSET_KHR	0x30CD	/* eglQuerySurface attribute */
gabomdq@8021
   881
#define EGL_LOWER_LEFT_KHR			0x30CE	/* EGL_BITMAP_ORIGIN_KHR value */
gabomdq@8021
   882
#define EGL_UPPER_LEFT_KHR			0x30CF	/* EGL_BITMAP_ORIGIN_KHR value */
gabomdq@8021
   883
#ifdef EGL_EGLEXT_PROTOTYPES
gabomdq@8021
   884
    EGLAPI EGLBoolean EGLAPIENTRY eglLockSurfaceKHR(EGLDisplay display, EGLSurface surface, const EGLint *attrib_list);
gabomdq@8021
   885
    EGLAPI EGLBoolean EGLAPIENTRY eglUnlockSurfaceKHR(EGLDisplay display, EGLSurface surface);
gabomdq@8021
   886
#endif /* EGL_EGLEXT_PROTOTYPES */
gabomdq@8021
   887
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLLOCKSURFACEKHRPROC) (EGLDisplay display, EGLSurface surface, const EGLint *attrib_list);
gabomdq@8021
   888
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLUNLOCKSURFACEKHRPROC) (EGLDisplay display, EGLSurface surface);
gabomdq@8021
   889
#endif
gabomdq@8021
   890
gabomdq@8021
   891
#ifndef EGL_KHR_image
gabomdq@8021
   892
#define EGL_KHR_image 1
gabomdq@8021
   893
#define EGL_NATIVE_PIXMAP_KHR			0x30B0	/* eglCreateImageKHR target */
gabomdq@8021
   894
    typedef void *EGLImageKHR;
gabomdq@8021
   895
#define EGL_NO_IMAGE_KHR			((EGLImageKHR)0)
gabomdq@8021
   896
#ifdef EGL_EGLEXT_PROTOTYPES
gabomdq@8021
   897
    EGLAPI EGLImageKHR EGLAPIENTRY eglCreateImageKHR(EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list);
gabomdq@8021
   898
    EGLAPI EGLBoolean EGLAPIENTRY eglDestroyImageKHR(EGLDisplay dpy, EGLImageKHR image);
gabomdq@8021
   899
#endif /* EGL_EGLEXT_PROTOTYPES */
gabomdq@8021
   900
    typedef EGLImageKHR(EGLAPIENTRYP PFNEGLCREATEIMAGEKHRPROC) (EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list);
gabomdq@8021
   901
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLDESTROYIMAGEKHRPROC) (EGLDisplay dpy, EGLImageKHR image);
gabomdq@8021
   902
#endif
gabomdq@8021
   903
gabomdq@8021
   904
#ifndef EGL_KHR_vg_parent_image
gabomdq@8021
   905
#define EGL_KHR_vg_parent_image 1
gabomdq@8021
   906
#define EGL_VG_PARENT_IMAGE_KHR			0x30BA	/* eglCreateImageKHR target */
gabomdq@8021
   907
#endif
gabomdq@8021
   908
gabomdq@8021
   909
#ifndef EGL_KHR_gl_texture_2D_image
gabomdq@8021
   910
#define EGL_KHR_gl_texture_2D_image 1
gabomdq@8021
   911
#define EGL_GL_TEXTURE_2D_KHR			0x30B1	/* eglCreateImageKHR target */
gabomdq@8021
   912
#define EGL_GL_TEXTURE_LEVEL_KHR		0x30BC	/* eglCreateImageKHR attribute */
gabomdq@8021
   913
#endif
gabomdq@8021
   914
gabomdq@8021
   915
#ifndef EGL_KHR_gl_texture_cubemap_image
gabomdq@8021
   916
#define EGL_KHR_gl_texture_cubemap_image 1
gabomdq@8021
   917
#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X_KHR	0x30B3	/* eglCreateImageKHR target */
gabomdq@8021
   918
#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_X_KHR	0x30B4	/* eglCreateImageKHR target */
gabomdq@8021
   919
#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Y_KHR	0x30B5	/* eglCreateImageKHR target */
gabomdq@8021
   920
#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_KHR	0x30B6	/* eglCreateImageKHR target */
gabomdq@8021
   921
#define EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_Z_KHR	0x30B7	/* eglCreateImageKHR target */
gabomdq@8021
   922
#define EGL_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_KHR	0x30B8	/* eglCreateImageKHR target */
gabomdq@8021
   923
#endif
gabomdq@8021
   924
gabomdq@8021
   925
#ifndef EGL_KHR_gl_texture_3D_image
gabomdq@8021
   926
#define EGL_KHR_gl_texture_3D_image 1
gabomdq@8021
   927
#define EGL_GL_TEXTURE_3D_KHR			0x30B2	/* eglCreateImageKHR target */
gabomdq@8021
   928
#define EGL_GL_TEXTURE_ZOFFSET_KHR		0x30BD	/* eglCreateImageKHR attribute */
gabomdq@8021
   929
#endif
gabomdq@8021
   930
gabomdq@8021
   931
#ifndef EGL_KHR_gl_renderbuffer_image
gabomdq@8021
   932
#define EGL_KHR_gl_renderbuffer_image 1
gabomdq@8021
   933
#define EGL_GL_RENDERBUFFER_KHR			0x30B9	/* eglCreateImageKHR target */
gabomdq@8021
   934
#endif
gabomdq@8021
   935
gabomdq@8021
   936
#if KHRONOS_SUPPORT_INT64   /* EGLTimeKHR requires 64-bit uint support */
gabomdq@8021
   937
#ifndef EGL_KHR_reusable_sync
gabomdq@8021
   938
#define EGL_KHR_reusable_sync 1
gabomdq@8021
   939
gabomdq@8021
   940
    typedef void* EGLSyncKHR;
gabomdq@8021
   941
    typedef khronos_utime_nanoseconds_t EGLTimeKHR;
gabomdq@8021
   942
gabomdq@8021
   943
#define EGL_SYNC_STATUS_KHR			0x30F1
gabomdq@8021
   944
#define EGL_SIGNALED_KHR			0x30F2
gabomdq@8021
   945
#define EGL_UNSIGNALED_KHR			0x30F3
gabomdq@8021
   946
#define EGL_TIMEOUT_EXPIRED_KHR			0x30F5
gabomdq@8021
   947
#define EGL_CONDITION_SATISFIED_KHR		0x30F6
gabomdq@8021
   948
#define EGL_SYNC_TYPE_KHR			0x30F7
gabomdq@8021
   949
#define EGL_SYNC_REUSABLE_KHR			0x30FA
gabomdq@8021
   950
#define EGL_SYNC_FLUSH_COMMANDS_BIT_KHR		0x0001	/* eglClientWaitSyncKHR <flags> bitfield */
gabomdq@8021
   951
#define EGL_FOREVER_KHR				0xFFFFFFFFFFFFFFFFull
gabomdq@8021
   952
#define EGL_NO_SYNC_KHR				((EGLSyncKHR)0)
gabomdq@8021
   953
#ifdef EGL_EGLEXT_PROTOTYPES
gabomdq@8021
   954
    EGLAPI EGLSyncKHR EGLAPIENTRY eglCreateSyncKHR(EGLDisplay dpy, EGLenum type, const EGLint *attrib_list);
gabomdq@8021
   955
    EGLAPI EGLBoolean EGLAPIENTRY eglDestroySyncKHR(EGLDisplay dpy, EGLSyncKHR sync);
gabomdq@8021
   956
    EGLAPI EGLint EGLAPIENTRY eglClientWaitSyncKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout);
gabomdq@8021
   957
    EGLAPI EGLBoolean EGLAPIENTRY eglSignalSyncKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLenum mode);
gabomdq@8021
   958
    EGLAPI EGLBoolean EGLAPIENTRY eglGetSyncAttribKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint *value);
gabomdq@8021
   959
#endif /* EGL_EGLEXT_PROTOTYPES */
gabomdq@8021
   960
    typedef EGLSyncKHR(EGLAPIENTRYP PFNEGLCREATESYNCKHRPROC) (EGLDisplay dpy, EGLenum type, const EGLint *attrib_list);
gabomdq@8021
   961
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLDESTROYSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync);
gabomdq@8021
   962
    typedef EGLint(EGLAPIENTRYP PFNEGLCLIENTWAITSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout);
gabomdq@8021
   963
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLSIGNALSYNCKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLenum mode);
gabomdq@8021
   964
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLGETSYNCATTRIBKHRPROC) (EGLDisplay dpy, EGLSyncKHR sync, EGLint attribute, EGLint *value);
gabomdq@8021
   965
#endif
gabomdq@8021
   966
#endif
gabomdq@8021
   967
gabomdq@8021
   968
#ifndef EGL_KHR_image_base
gabomdq@8021
   969
#define EGL_KHR_image_base 1
gabomdq@8021
   970
    /* Most interfaces defined by EGL_KHR_image_pixmap above */
gabomdq@8021
   971
#define EGL_IMAGE_PRESERVED_KHR			0x30D2	/* eglCreateImageKHR attribute */
gabomdq@8021
   972
#endif
gabomdq@8021
   973
gabomdq@8021
   974
#ifndef EGL_KHR_image_pixmap
gabomdq@8021
   975
#define EGL_KHR_image_pixmap 1
gabomdq@8021
   976
    /* Interfaces defined by EGL_KHR_image above */
gabomdq@8021
   977
#endif
gabomdq@8021
   978
gabomdq@8021
   979
#ifndef EGL_IMG_context_priority
gabomdq@8021
   980
#define EGL_IMG_context_priority 1
gabomdq@8021
   981
#define EGL_CONTEXT_PRIORITY_LEVEL_IMG		0x3100
gabomdq@8021
   982
#define EGL_CONTEXT_PRIORITY_HIGH_IMG		0x3101
gabomdq@8021
   983
#define EGL_CONTEXT_PRIORITY_MEDIUM_IMG		0x3102
gabomdq@8021
   984
#define EGL_CONTEXT_PRIORITY_LOW_IMG		0x3103
gabomdq@8021
   985
#endif
gabomdq@8021
   986
gabomdq@8021
   987
#ifndef EGL_KHR_lock_surface2
gabomdq@8021
   988
#define EGL_KHR_lock_surface2 1
gabomdq@8021
   989
#define EGL_BITMAP_PIXEL_SIZE_KHR		0x3110
gabomdq@8021
   990
#endif
gabomdq@8021
   991
gabomdq@8021
   992
#ifndef EGL_NV_coverage_sample
gabomdq@8021
   993
#define EGL_NV_coverage_sample 1
gabomdq@8021
   994
#define EGL_COVERAGE_BUFFERS_NV			0x30E0
gabomdq@8021
   995
#define EGL_COVERAGE_SAMPLES_NV			0x30E1
gabomdq@8021
   996
#endif
gabomdq@8021
   997
gabomdq@8021
   998
#ifndef EGL_NV_depth_nonlinear
gabomdq@8021
   999
#define EGL_NV_depth_nonlinear 1
gabomdq@8021
  1000
#define EGL_DEPTH_ENCODING_NV			0x30E2
gabomdq@8021
  1001
#define EGL_DEPTH_ENCODING_NONE_NV 0
gabomdq@8021
  1002
#define EGL_DEPTH_ENCODING_NONLINEAR_NV		0x30E3
gabomdq@8021
  1003
#endif
gabomdq@8021
  1004
gabomdq@8021
  1005
#if KHRONOS_SUPPORT_INT64   /* EGLTimeNV requires 64-bit uint support */
gabomdq@8021
  1006
#ifndef EGL_NV_sync
gabomdq@8021
  1007
#define EGL_NV_sync 1
gabomdq@8021
  1008
#define EGL_SYNC_PRIOR_COMMANDS_COMPLETE_NV	0x30E6
gabomdq@8021
  1009
#define EGL_SYNC_STATUS_NV			0x30E7
gabomdq@8021
  1010
#define EGL_SIGNALED_NV				0x30E8
gabomdq@8021
  1011
#define EGL_UNSIGNALED_NV			0x30E9
gabomdq@8021
  1012
#define EGL_SYNC_FLUSH_COMMANDS_BIT_NV		0x0001
gabomdq@8021
  1013
#define EGL_FOREVER_NV				0xFFFFFFFFFFFFFFFFull
gabomdq@8021
  1014
#define EGL_ALREADY_SIGNALED_NV			0x30EA
gabomdq@8021
  1015
#define EGL_TIMEOUT_EXPIRED_NV			0x30EB
gabomdq@8021
  1016
#define EGL_CONDITION_SATISFIED_NV		0x30EC
gabomdq@8021
  1017
#define EGL_SYNC_TYPE_NV			0x30ED
gabomdq@8021
  1018
#define EGL_SYNC_CONDITION_NV			0x30EE
gabomdq@8021
  1019
#define EGL_SYNC_FENCE_NV			0x30EF
gabomdq@8021
  1020
#define EGL_NO_SYNC_NV				((EGLSyncNV)0)
gabomdq@8021
  1021
    typedef void* EGLSyncNV;
gabomdq@8021
  1022
    typedef khronos_utime_nanoseconds_t EGLTimeNV;
gabomdq@8021
  1023
#ifdef EGL_EGLEXT_PROTOTYPES
gabomdq@8021
  1024
    EGLAPI EGLSyncNV EGLAPIENTRY eglCreateFenceSyncNV(EGLDisplay dpy, EGLenum condition, const EGLint *attrib_list);
gabomdq@8021
  1025
    EGLAPI EGLBoolean EGLAPIENTRY eglDestroySyncNV(EGLSyncNV sync);
gabomdq@8021
  1026
    EGLAPI EGLBoolean EGLAPIENTRY eglFenceNV(EGLSyncNV sync);
gabomdq@8021
  1027
    EGLAPI EGLint EGLAPIENTRY eglClientWaitSyncNV(EGLSyncNV sync, EGLint flags, EGLTimeNV timeout);
gabomdq@8021
  1028
    EGLAPI EGLBoolean EGLAPIENTRY eglSignalSyncNV(EGLSyncNV sync, EGLenum mode);
gabomdq@8021
  1029
    EGLAPI EGLBoolean EGLAPIENTRY eglGetSyncAttribNV(EGLSyncNV sync, EGLint attribute, EGLint *value);
gabomdq@8021
  1030
#endif /* EGL_EGLEXT_PROTOTYPES */
gabomdq@8021
  1031
    typedef EGLSyncNV(EGLAPIENTRYP PFNEGLCREATEFENCESYNCNVPROC) (EGLDisplay dpy, EGLenum condition, const EGLint *attrib_list);
gabomdq@8021
  1032
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLDESTROYSYNCNVPROC) (EGLSyncNV sync);
gabomdq@8021
  1033
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLFENCENVPROC) (EGLSyncNV sync);
gabomdq@8021
  1034
    typedef EGLint(EGLAPIENTRYP PFNEGLCLIENTWAITSYNCNVPROC) (EGLSyncNV sync, EGLint flags, EGLTimeNV timeout);
gabomdq@8021
  1035
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLSIGNALSYNCNVPROC) (EGLSyncNV sync, EGLenum mode);
gabomdq@8021
  1036
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLGETSYNCATTRIBNVPROC) (EGLSyncNV sync, EGLint attribute, EGLint *value);
gabomdq@8021
  1037
#endif
gabomdq@8021
  1038
#endif
gabomdq@8021
  1039
gabomdq@8021
  1040
#if KHRONOS_SUPPORT_INT64   /* Dependent on EGL_KHR_reusable_sync which requires 64-bit uint support */
gabomdq@8021
  1041
#ifndef EGL_KHR_fence_sync
gabomdq@8021
  1042
#define EGL_KHR_fence_sync 1
gabomdq@8021
  1043
    /* Reuses most tokens and entry points from EGL_KHR_reusable_sync */
gabomdq@8021
  1044
#define EGL_SYNC_PRIOR_COMMANDS_COMPLETE_KHR	0x30F0
gabomdq@8021
  1045
#define EGL_SYNC_CONDITION_KHR			0x30F8
gabomdq@8021
  1046
#define EGL_SYNC_FENCE_KHR			0x30F9
gabomdq@8021
  1047
#endif
gabomdq@8021
  1048
#endif
gabomdq@8021
  1049
gabomdq@8021
  1050
#ifndef EGL_HI_clientpixmap
gabomdq@8021
  1051
#define EGL_HI_clientpixmap 1
gabomdq@8021
  1052
gabomdq@8021
  1053
    /* Surface Attribute */
gabomdq@8021
  1054
#define EGL_CLIENT_PIXMAP_POINTER_HI		0x8F74
gabomdq@8021
  1055
    /*
gabomdq@8021
  1056
    * Structure representing a client pixmap
gabomdq@8021
  1057
    * (pixmap's data is in client-space memory).
gabomdq@8021
  1058
    */
gabomdq@8021
  1059
    struct EGLClientPixmapHI
gabomdq@8021
  1060
    {
gabomdq@8021
  1061
        void*		pData;
gabomdq@8021
  1062
        EGLint		iWidth;
gabomdq@8021
  1063
        EGLint		iHeight;
gabomdq@8021
  1064
        EGLint		iStride;
gabomdq@8021
  1065
    };
gabomdq@8021
  1066
#ifdef EGL_EGLEXT_PROTOTYPES
gabomdq@8021
  1067
    EGLAPI EGLSurface EGLAPIENTRY eglCreatePixmapSurfaceHI(EGLDisplay dpy, EGLConfig config, struct EGLClientPixmapHI* pixmap);
gabomdq@8021
  1068
#endif /* EGL_EGLEXT_PROTOTYPES */
gabomdq@8021
  1069
    typedef EGLSurface(EGLAPIENTRYP PFNEGLCREATEPIXMAPSURFACEHIPROC) (EGLDisplay dpy, EGLConfig config, struct EGLClientPixmapHI* pixmap);
gabomdq@8021
  1070
#endif	/* EGL_HI_clientpixmap */
gabomdq@8021
  1071
gabomdq@8021
  1072
#ifndef EGL_HI_colorformats
gabomdq@8021
  1073
#define EGL_HI_colorformats 1
gabomdq@8021
  1074
    /* Config Attribute */
gabomdq@8021
  1075
#define EGL_COLOR_FORMAT_HI			0x8F70
gabomdq@8021
  1076
    /* Color Formats */
gabomdq@8021
  1077
#define EGL_COLOR_RGB_HI			0x8F71
gabomdq@8021
  1078
#define EGL_COLOR_RGBA_HI			0x8F72
gabomdq@8021
  1079
#define EGL_COLOR_ARGB_HI			0x8F73
gabomdq@8021
  1080
#endif /* EGL_HI_colorformats */
gabomdq@8021
  1081
gabomdq@8021
  1082
#ifndef EGL_MESA_drm_image
gabomdq@8021
  1083
#define EGL_MESA_drm_image 1
gabomdq@8021
  1084
#define EGL_DRM_BUFFER_FORMAT_MESA		0x31D0	    /* CreateDRMImageMESA attribute */
gabomdq@8021
  1085
#define EGL_DRM_BUFFER_USE_MESA			0x31D1	    /* CreateDRMImageMESA attribute */
gabomdq@8021
  1086
#define EGL_DRM_BUFFER_FORMAT_ARGB32_MESA	0x31D2	    /* EGL_IMAGE_FORMAT_MESA attribute value */
gabomdq@8021
  1087
#define EGL_DRM_BUFFER_MESA			0x31D3	    /* eglCreateImageKHR target */
gabomdq@8021
  1088
#define EGL_DRM_BUFFER_STRIDE_MESA		0x31D4
gabomdq@8021
  1089
#define EGL_DRM_BUFFER_USE_SCANOUT_MESA		0x00000001  /* EGL_DRM_BUFFER_USE_MESA bits */
gabomdq@8021
  1090
#define EGL_DRM_BUFFER_USE_SHARE_MESA		0x00000002  /* EGL_DRM_BUFFER_USE_MESA bits */
gabomdq@8021
  1091
#ifdef EGL_EGLEXT_PROTOTYPES
gabomdq@8021
  1092
    EGLAPI EGLImageKHR EGLAPIENTRY eglCreateDRMImageMESA(EGLDisplay dpy, const EGLint *attrib_list);
gabomdq@8021
  1093
    EGLAPI EGLBoolean EGLAPIENTRY eglExportDRMImageMESA(EGLDisplay dpy, EGLImageKHR image, EGLint *name, EGLint *handle, EGLint *stride);
gabomdq@8021
  1094
#endif /* EGL_EGLEXT_PROTOTYPES */
gabomdq@8021
  1095
    typedef EGLImageKHR(EGLAPIENTRYP PFNEGLCREATEDRMIMAGEMESAPROC) (EGLDisplay dpy, const EGLint *attrib_list);
gabomdq@8021
  1096
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLEXPORTDRMIMAGEMESAPROC) (EGLDisplay dpy, EGLImageKHR image, EGLint *name, EGLint *handle, EGLint *stride);
gabomdq@8021
  1097
#endif
gabomdq@8021
  1098
gabomdq@8021
  1099
#ifndef EGL_NV_post_sub_buffer
gabomdq@8021
  1100
#define EGL_NV_post_sub_buffer 1
gabomdq@8021
  1101
#define EGL_POST_SUB_BUFFER_SUPPORTED_NV	0x30BE
gabomdq@8021
  1102
#ifdef EGL_EGLEXT_PROTOTYPES
gabomdq@8021
  1103
    EGLAPI EGLBoolean EGLAPIENTRY eglPostSubBufferNV(EGLDisplay dpy, EGLSurface surface, EGLint x, EGLint y, EGLint width, EGLint height);
gabomdq@8021
  1104
#endif /* EGL_EGLEXT_PROTOTYPES */
gabomdq@8021
  1105
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLPOSTSUBBUFFERNVPROC) (EGLDisplay dpy, EGLSurface surface, EGLint x, EGLint y, EGLint width, EGLint height);
gabomdq@8021
  1106
#endif
gabomdq@8021
  1107
gabomdq@8021
  1108
#ifndef EGL_ANGLE_query_surface_pointer
gabomdq@8021
  1109
#define EGL_ANGLE_query_surface_pointer 1
gabomdq@8021
  1110
#ifdef EGL_EGLEXT_PROTOTYPES
gabomdq@8021
  1111
    EGLAPI EGLBoolean eglQuerySurfacePointerANGLE(EGLDisplay dpy, EGLSurface surface, EGLint attribute, void **value);
gabomdq@8021
  1112
#endif
gabomdq@8021
  1113
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLQUERYSURFACEPOINTERANGLEPROC) (EGLDisplay dpy, EGLSurface surface, EGLint attribute, void **value);
gabomdq@8021
  1114
#endif
gabomdq@8021
  1115
gabomdq@8021
  1116
#ifndef EGL_ANGLE_surface_d3d_texture_2d_share_handle
gabomdq@8021
  1117
#define EGL_ANGLE_surface_d3d_texture_2d_share_handle 1
gabomdq@8021
  1118
#define EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE	0x3200
gabomdq@8021
  1119
#endif
gabomdq@8021
  1120
gabomdq@8021
  1121
#ifndef EGL_NV_coverage_sample_resolve
gabomdq@8021
  1122
#define EGL_NV_coverage_sample_resolve 1
gabomdq@8021
  1123
#define EGL_COVERAGE_SAMPLE_RESOLVE_NV		0x3131
gabomdq@8021
  1124
#define EGL_COVERAGE_SAMPLE_RESOLVE_DEFAULT_NV	0x3132
gabomdq@8021
  1125
#define EGL_COVERAGE_SAMPLE_RESOLVE_NONE_NV	0x3133
gabomdq@8021
  1126
#endif
gabomdq@8021
  1127
gabomdq@8021
  1128
#if KHRONOS_SUPPORT_INT64   /* EGLuint64NV requires 64-bit uint support */
gabomdq@8021
  1129
#ifndef EGL_NV_system_time
gabomdq@8021
  1130
#define EGL_NV_system_time 1
gabomdq@8021
  1131
    typedef khronos_utime_nanoseconds_t EGLuint64NV;
gabomdq@8021
  1132
#ifdef EGL_EGLEXT_PROTOTYPES
gabomdq@8021
  1133
    EGLAPI EGLuint64NV EGLAPIENTRY eglGetSystemTimeFrequencyNV(void);
gabomdq@8021
  1134
    EGLAPI EGLuint64NV EGLAPIENTRY eglGetSystemTimeNV(void);
gabomdq@8021
  1135
#endif /* EGL_EGLEXT_PROTOTYPES */
gabomdq@8021
  1136
    typedef EGLuint64NV(EGLAPIENTRYP PFNEGLGETSYSTEMTIMEFREQUENCYNVPROC) (void);
gabomdq@8021
  1137
    typedef EGLuint64NV(EGLAPIENTRYP PFNEGLGETSYSTEMTIMENVPROC) (void);
gabomdq@8021
  1138
#endif
gabomdq@8021
  1139
#endif
gabomdq@8021
  1140
gabomdq@8021
  1141
#if KHRONOS_SUPPORT_INT64 /* EGLuint64KHR requires 64-bit uint support */
gabomdq@8021
  1142
#ifndef EGL_KHR_stream
gabomdq@8021
  1143
#define EGL_KHR_stream 1
gabomdq@8021
  1144
    typedef void* EGLStreamKHR;
gabomdq@8021
  1145
    typedef khronos_uint64_t EGLuint64KHR;
gabomdq@8021
  1146
#define EGL_NO_STREAM_KHR			((EGLStreamKHR)0)
gabomdq@8021
  1147
#define EGL_CONSUMER_LATENCY_USEC_KHR		0x3210
gabomdq@8021
  1148
#define EGL_PRODUCER_FRAME_KHR			0x3212
gabomdq@8021
  1149
#define EGL_CONSUMER_FRAME_KHR			0x3213
gabomdq@8021
  1150
#define EGL_STREAM_STATE_KHR			0x3214
gabomdq@8021
  1151
#define EGL_STREAM_STATE_CREATED_KHR		0x3215
gabomdq@8021
  1152
#define EGL_STREAM_STATE_CONNECTING_KHR		0x3216
gabomdq@8021
  1153
#define EGL_STREAM_STATE_EMPTY_KHR		0x3217
gabomdq@8021
  1154
#define EGL_STREAM_STATE_NEW_FRAME_AVAILABLE_KHR    0x3218
gabomdq@8021
  1155
#define EGL_STREAM_STATE_OLD_FRAME_AVAILABLE_KHR    0x3219
gabomdq@8021
  1156
#define EGL_STREAM_STATE_DISCONNECTED_KHR	0x321A
gabomdq@8021
  1157
#define EGL_BAD_STREAM_KHR			0x321B
gabomdq@8021
  1158
#define EGL_BAD_STATE_KHR			0x321C
gabomdq@8021
  1159
#ifdef EGL_EGLEXT_PROTOTYPES
gabomdq@8021
  1160
    EGLAPI EGLStreamKHR EGLAPIENTRY eglCreateStreamKHR(EGLDisplay dpy, const EGLint *attrib_list);
gabomdq@8021
  1161
    EGLAPI EGLBoolean EGLAPIENTRY eglDestroyStreamKHR(EGLDisplay dpy, EGLStreamKHR stream);
gabomdq@8021
  1162
    EGLAPI EGLBoolean EGLAPIENTRY eglStreamAttribKHR(EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint value);
gabomdq@8021
  1163
    EGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamKHR(EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint *value);
gabomdq@8021
  1164
    EGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamu64KHR(EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLuint64KHR *value);
gabomdq@8021
  1165
#endif /* EGL_EGLEXT_PROTOTYPES */
gabomdq@8021
  1166
    typedef EGLStreamKHR(EGLAPIENTRYP PFNEGLCREATESTREAMKHRPROC)(EGLDisplay dpy, const EGLint *attrib_list);
gabomdq@8021
  1167
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLDESTROYSTREAMKHRPROC)(EGLDisplay dpy, EGLStreamKHR stream);
gabomdq@8021
  1168
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLSTREAMATTRIBKHRPROC)(EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint value);
gabomdq@8021
  1169
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLQUERYSTREAMKHRPROC)(EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLint *value);
gabomdq@8021
  1170
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLQUERYSTREAMU64KHRPROC)(EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLuint64KHR *value);
gabomdq@8021
  1171
#endif
gabomdq@8021
  1172
#endif
gabomdq@8021
  1173
gabomdq@8021
  1174
#ifdef EGL_KHR_stream /* Requires KHR_stream extension */
gabomdq@8021
  1175
#ifndef EGL_KHR_stream_consumer_gltexture
gabomdq@8021
  1176
#define EGL_KHR_stream_consumer_gltexture 1
gabomdq@8021
  1177
#define EGL_CONSUMER_ACQUIRE_TIMEOUT_USEC_KHR	0x321E
gabomdq@8021
  1178
#ifdef EGL_EGLEXT_PROTOTYPES
gabomdq@8021
  1179
    EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerGLTextureExternalKHR(EGLDisplay dpy, EGLStreamKHR stream);
gabomdq@8021
  1180
    EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerAcquireKHR(EGLDisplay dpy, EGLStreamKHR stream);
gabomdq@8021
  1181
    EGLAPI EGLBoolean EGLAPIENTRY eglStreamConsumerReleaseKHR(EGLDisplay dpy, EGLStreamKHR stream);
gabomdq@8021
  1182
#endif /* EGL_EGLEXT_PROTOTYPES */
gabomdq@8021
  1183
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLSTREAMCONSUMERGLTEXTUREEXTERNALKHRPROC)(EGLDisplay dpy, EGLStreamKHR stream);
gabomdq@8021
  1184
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLSTREAMCONSUMERACQUIREKHRPROC)(EGLDisplay dpy, EGLStreamKHR stream);
gabomdq@8021
  1185
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLSTREAMCONSUMERRELEASEKHRPROC)(EGLDisplay dpy, EGLStreamKHR stream);
gabomdq@8021
  1186
#endif
gabomdq@8021
  1187
#endif
gabomdq@8021
  1188
gabomdq@8021
  1189
#ifdef EGL_KHR_stream /* Requires KHR_stream extension */
gabomdq@8021
  1190
#ifndef EGL_KHR_stream_producer_eglsurface
gabomdq@8021
  1191
#define EGL_KHR_stream_producer_eglsurface 1
gabomdq@8021
  1192
#define EGL_STREAM_BIT_KHR			0x0800
gabomdq@8021
  1193
#ifdef EGL_EGLEXT_PROTOTYPES
gabomdq@8021
  1194
    EGLAPI EGLSurface EGLAPIENTRY eglCreateStreamProducerSurfaceKHR(EGLDisplay dpy, EGLConfig config, EGLStreamKHR stream, const EGLint *attrib_list);
gabomdq@8021
  1195
#endif /* EGL_EGLEXT_PROTOTYPES */
gabomdq@8021
  1196
    typedef EGLSurface(EGLAPIENTRYP PFNEGLCREATESTREAMPRODUCERSURFACEKHRPROC)(EGLDisplay dpy, EGLConfig config, EGLStreamKHR stream, const EGLint *attrib_list);
gabomdq@8021
  1197
#endif
gabomdq@8021
  1198
#endif
gabomdq@8021
  1199
gabomdq@8021
  1200
#ifdef EGL_KHR_stream /* Requires KHR_stream extension */
gabomdq@8021
  1201
#ifndef EGL_KHR_stream_producer_aldatalocator
gabomdq@8021
  1202
#define EGL_KHR_stream_producer_aldatalocator 1
gabomdq@8021
  1203
#endif
gabomdq@8021
  1204
#endif
gabomdq@8021
  1205
gabomdq@8021
  1206
#ifdef EGL_KHR_stream /* Requires KHR_stream extension */
gabomdq@8021
  1207
#ifndef EGL_KHR_stream_fifo
gabomdq@8021
  1208
#define EGL_KHR_stream_fifo 1
gabomdq@8021
  1209
    /* reuse EGLTimeKHR */
gabomdq@8021
  1210
#define EGL_STREAM_FIFO_LENGTH_KHR		0x31FC
gabomdq@8021
  1211
#define EGL_STREAM_TIME_NOW_KHR			0x31FD
gabomdq@8021
  1212
#define EGL_STREAM_TIME_CONSUMER_KHR		0x31FE
gabomdq@8021
  1213
#define EGL_STREAM_TIME_PRODUCER_KHR		0x31FF
gabomdq@8021
  1214
#ifdef EGL_EGLEXT_PROTOTYPES
gabomdq@8021
  1215
    EGLAPI EGLBoolean EGLAPIENTRY eglQueryStreamTimeKHR(EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLTimeKHR *value);
gabomdq@8021
  1216
#endif /* EGL_EGLEXT_PROTOTYPES */
gabomdq@8021
  1217
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLQUERYSTREAMTIMEKHRPROC)(EGLDisplay dpy, EGLStreamKHR stream, EGLenum attribute, EGLTimeKHR *value);
gabomdq@8021
  1218
#endif
gabomdq@8021
  1219
#endif
gabomdq@8021
  1220
gabomdq@8021
  1221
#ifndef EGL_EXT_create_context_robustness
gabomdq@8021
  1222
#define EGL_EXT_create_context_robustness 1
gabomdq@8021
  1223
#define EGL_CONTEXT_OPENGL_ROBUST_ACCESS_EXT	0x30BF
gabomdq@8021
  1224
#define EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_EXT 0x3138
gabomdq@8021
  1225
#define EGL_NO_RESET_NOTIFICATION_EXT		0x31BE
gabomdq@8021
  1226
#define EGL_LOSE_CONTEXT_ON_RESET_EXT		0x31BF
gabomdq@8021
  1227
#endif
gabomdq@8021
  1228
gabomdq@8021
  1229
#ifndef EGL_ANGLE_d3d_share_handle_client_buffer
gabomdq@8021
  1230
#define EGL_ANGLE_d3d_share_handle_client_buffer 1
gabomdq@8021
  1231
    /* reuse EGL_D3D_TEXTURE_2D_SHARE_HANDLE_ANGLE */
gabomdq@8021
  1232
#endif
gabomdq@8021
  1233
gabomdq@8021
  1234
#ifndef EGL_KHR_create_context
gabomdq@8021
  1235
#define EGL_KHR_create_context 1
gabomdq@8021
  1236
#define EGL_CONTEXT_MAJOR_VERSION_KHR			    EGL_CONTEXT_CLIENT_VERSION
gabomdq@8021
  1237
#define EGL_CONTEXT_MINOR_VERSION_KHR			    0x30FB
gabomdq@8021
  1238
#define EGL_CONTEXT_FLAGS_KHR				    0x30FC
gabomdq@8021
  1239
#define EGL_CONTEXT_OPENGL_PROFILE_MASK_KHR		    0x30FD
gabomdq@8021
  1240
#define EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_KHR  0x31BD
gabomdq@8021
  1241
#define EGL_NO_RESET_NOTIFICATION_KHR			    0x31BE
gabomdq@8021
  1242
#define EGL_LOSE_CONTEXT_ON_RESET_KHR			    0x31BF
gabomdq@8021
  1243
#define EGL_CONTEXT_OPENGL_DEBUG_BIT_KHR		    0x00000001
gabomdq@8021
  1244
#define EGL_CONTEXT_OPENGL_FORWARD_COMPATIBLE_BIT_KHR	    0x00000002
gabomdq@8021
  1245
#define EGL_CONTEXT_OPENGL_ROBUST_ACCESS_BIT_KHR	    0x00000004
gabomdq@8021
  1246
#define EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT_KHR		    0x00000001
gabomdq@8021
  1247
#define EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT_KHR    0x00000002
gabomdq@8021
  1248
#define EGL_OPENGL_ES3_BIT_KHR				    0x00000040
gabomdq@8021
  1249
#endif
gabomdq@8021
  1250
gabomdq@8021
  1251
#ifndef EGL_KHR_surfaceless_context
gabomdq@8021
  1252
#define EGL_KHR_surfaceless_context 1
gabomdq@8021
  1253
    /* No tokens/entry points, just relaxes an error condition */
gabomdq@8021
  1254
#endif
gabomdq@8021
  1255
gabomdq@8021
  1256
#ifdef EGL_KHR_stream /* Requires KHR_stream extension */
gabomdq@8021
  1257
#ifndef EGL_KHR_stream_cross_process_fd
gabomdq@8021
  1258
#define EGL_KHR_stream_cross_process_fd 1
gabomdq@8021
  1259
    typedef int EGLNativeFileDescriptorKHR;
gabomdq@8021
  1260
#define EGL_NO_FILE_DESCRIPTOR_KHR		((EGLNativeFileDescriptorKHR)(-1))
gabomdq@8021
  1261
#ifdef EGL_EGLEXT_PROTOTYPES
gabomdq@8021
  1262
    EGLAPI EGLNativeFileDescriptorKHR EGLAPIENTRY eglGetStreamFileDescriptorKHR(EGLDisplay dpy, EGLStreamKHR stream);
gabomdq@8021
  1263
    EGLAPI EGLStreamKHR EGLAPIENTRY eglCreateStreamFromFileDescriptorKHR(EGLDisplay dpy, EGLNativeFileDescriptorKHR file_descriptor);
gabomdq@8021
  1264
#endif /* EGL_EGLEXT_PROTOTYPES */
gabomdq@8021
  1265
    typedef EGLNativeFileDescriptorKHR(EGLAPIENTRYP PFNEGLGETSTREAMFILEDESCRIPTORKHRPROC)(EGLDisplay dpy, EGLStreamKHR stream);
gabomdq@8021
  1266
    typedef EGLStreamKHR(EGLAPIENTRYP PFNEGLCREATESTREAMFROMFILEDESCRIPTORKHRPROC)(EGLDisplay dpy, EGLNativeFileDescriptorKHR file_descriptor);
gabomdq@8021
  1267
#endif
gabomdq@8021
  1268
#endif
gabomdq@8021
  1269
gabomdq@8021
  1270
#ifndef EGL_EXT_multiview_window
gabomdq@8021
  1271
#define EGL_EXT_multiview_window 1
gabomdq@8021
  1272
#define EGL_MULTIVIEW_VIEW_COUNT_EXT		0x3134
gabomdq@8021
  1273
#endif
gabomdq@8021
  1274
gabomdq@8021
  1275
#ifndef EGL_KHR_wait_sync
gabomdq@8021
  1276
#define EGL_KHR_wait_sync 1
gabomdq@8021
  1277
#ifdef EGL_EGLEXT_PROTOTYPES
gabomdq@8021
  1278
    EGLAPI EGLint EGLAPIENTRY eglWaitSyncKHR(EGLDisplay dpy, EGLSyncKHR sync, EGLint flags);
gabomdq@8021
  1279
#endif /* EGL_EGLEXT_PROTOTYPES */
gabomdq@8021
  1280
    typedef EGLint(EGLAPIENTRYP PFNEGLWAITSYNCKHRPROC)(EGLDisplay dpy, EGLSyncKHR sync, EGLint flags);
gabomdq@8021
  1281
#endif
gabomdq@8021
  1282
gabomdq@8021
  1283
#ifndef EGL_NV_post_convert_rounding
gabomdq@8021
  1284
#define EGL_NV_post_convert_rounding 1
gabomdq@8021
  1285
    /* No tokens or entry points, just relaxes behavior of SwapBuffers */
gabomdq@8021
  1286
#endif
gabomdq@8021
  1287
gabomdq@8021
  1288
#ifndef EGL_NV_native_query
gabomdq@8021
  1289
#define EGL_NV_native_query 1
gabomdq@8021
  1290
#ifdef EGL_EGLEXT_PROTOTYPES
gabomdq@8021
  1291
    EGLAPI EGLBoolean EGLAPIENTRY eglQueryNativeDisplayNV(EGLDisplay dpy, EGLNativeDisplayType* display_id);
gabomdq@8021
  1292
    EGLAPI EGLBoolean EGLAPIENTRY eglQueryNativeWindowNV(EGLDisplay dpy, EGLSurface surf, EGLNativeWindowType* window);
gabomdq@8021
  1293
    EGLAPI EGLBoolean EGLAPIENTRY eglQueryNativePixmapNV(EGLDisplay dpy, EGLSurface surf, EGLNativePixmapType* pixmap);
gabomdq@8021
  1294
#endif /* EGL_EGLEXT_PROTOTYPES */
gabomdq@8021
  1295
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLQUERYNATIVEDISPLAYNVPROC)(EGLDisplay dpy, EGLNativeDisplayType *display_id);
gabomdq@8021
  1296
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLQUERYNATIVEWINDOWNVPROC)(EGLDisplay dpy, EGLSurface surf, EGLNativeWindowType *window);
gabomdq@8021
  1297
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLQUERYNATIVEPIXMAPNVPROC)(EGLDisplay dpy, EGLSurface surf, EGLNativePixmapType *pixmap);
gabomdq@8021
  1298
#endif
gabomdq@8021
  1299
gabomdq@8021
  1300
#ifndef EGL_NV_3dvision_surface
gabomdq@8021
  1301
#define EGL_NV_3dvision_surface 1
gabomdq@8021
  1302
#define EGL_AUTO_STEREO_NV			0x3136
gabomdq@8021
  1303
#endif
gabomdq@8021
  1304
gabomdq@8021
  1305
#ifndef EGL_ANDROID_framebuffer_target
gabomdq@8021
  1306
#define EGL_ANDROID_framebuffer_target 1
gabomdq@8021
  1307
#define EGL_FRAMEBUFFER_TARGET_ANDROID		0x3147
gabomdq@8021
  1308
#endif
gabomdq@8021
  1309
gabomdq@8021
  1310
#ifndef EGL_ANDROID_blob_cache
gabomdq@8021
  1311
#define EGL_ANDROID_blob_cache 1
gabomdq@8021
  1312
    typedef khronos_ssize_t EGLsizeiANDROID;
gabomdq@8021
  1313
    typedef void(*EGLSetBlobFuncANDROID) (const void *key, EGLsizeiANDROID keySize, const void *value, EGLsizeiANDROID valueSize);
gabomdq@8021
  1314
    typedef EGLsizeiANDROID(*EGLGetBlobFuncANDROID) (const void *key, EGLsizeiANDROID keySize, void *value, EGLsizeiANDROID valueSize);
gabomdq@8021
  1315
#ifdef EGL_EGLEXT_PROTOTYPES
gabomdq@8021
  1316
    EGLAPI void EGLAPIENTRY eglSetBlobCacheFuncsANDROID(EGLDisplay dpy, EGLSetBlobFuncANDROID set, EGLGetBlobFuncANDROID get);
gabomdq@8021
  1317
#endif /* EGL_EGLEXT_PROTOTYPES */
gabomdq@8021
  1318
    typedef void (EGLAPIENTRYP PFNEGLSETBLOBCACHEFUNCSANDROIDPROC)(EGLDisplay dpy, EGLSetBlobFuncANDROID set, EGLGetBlobFuncANDROID get);
gabomdq@8021
  1319
#endif
gabomdq@8021
  1320
gabomdq@8021
  1321
#ifndef EGL_ANDROID_image_native_buffer
gabomdq@8021
  1322
#define EGL_ANDROID_image_native_buffer 1
gabomdq@8021
  1323
#define EGL_NATIVE_BUFFER_ANDROID		0x3140
gabomdq@8021
  1324
#endif
gabomdq@8021
  1325
gabomdq@8021
  1326
#ifndef EGL_ANDROID_native_fence_sync
gabomdq@8021
  1327
#define EGL_ANDROID_native_fence_sync 1
gabomdq@8021
  1328
#define EGL_SYNC_NATIVE_FENCE_ANDROID		0x3144
gabomdq@8021
  1329
#define EGL_SYNC_NATIVE_FENCE_FD_ANDROID	0x3145
gabomdq@8021
  1330
#define EGL_SYNC_NATIVE_FENCE_SIGNALED_ANDROID	0x3146
gabomdq@8021
  1331
#define EGL_NO_NATIVE_FENCE_FD_ANDROID		-1
gabomdq@8021
  1332
#ifdef EGL_EGLEXT_PROTOTYPES
gabomdq@8021
  1333
    EGLAPI EGLint EGLAPIENTRY eglDupNativeFenceFDANDROID(EGLDisplay dpy, EGLSyncKHR);
gabomdq@8021
  1334
#endif /* EGL_EGLEXT_PROTOTYPES */
gabomdq@8021
  1335
    typedef EGLint(EGLAPIENTRYP PFNEGLDUPNATIVEFENCEFDANDROIDPROC)(EGLDisplay dpy, EGLSyncKHR);
gabomdq@8021
  1336
#endif
gabomdq@8021
  1337
gabomdq@8021
  1338
#ifndef EGL_ANDROID_recordable
gabomdq@8021
  1339
#define EGL_ANDROID_recordable 1
gabomdq@8021
  1340
#define EGL_RECORDABLE_ANDROID			0x3142
gabomdq@8021
  1341
#endif
gabomdq@8021
  1342
gabomdq@8021
  1343
#ifndef EGL_EXT_buffer_age
gabomdq@8021
  1344
#define EGL_EXT_buffer_age 1
gabomdq@8021
  1345
#define EGL_BUFFER_AGE_EXT			0x313D
gabomdq@8021
  1346
#endif
gabomdq@8021
  1347
gabomdq@8021
  1348
#ifndef EGL_EXT_image_dma_buf_import
gabomdq@8021
  1349
#define EGL_EXT_image_dma_buf_import 1
gabomdq@8021
  1350
#define EGL_LINUX_DMA_BUF_EXT			0x3270
gabomdq@8021
  1351
#define EGL_LINUX_DRM_FOURCC_EXT		0x3271
gabomdq@8021
  1352
#define EGL_DMA_BUF_PLANE0_FD_EXT		0x3272
gabomdq@8021
  1353
#define EGL_DMA_BUF_PLANE0_OFFSET_EXT		0x3273
gabomdq@8021
  1354
#define EGL_DMA_BUF_PLANE0_PITCH_EXT		0x3274
gabomdq@8021
  1355
#define EGL_DMA_BUF_PLANE1_FD_EXT		0x3275
gabomdq@8021
  1356
#define EGL_DMA_BUF_PLANE1_OFFSET_EXT		0x3276
gabomdq@8021
  1357
#define EGL_DMA_BUF_PLANE1_PITCH_EXT		0x3277
gabomdq@8021
  1358
#define EGL_DMA_BUF_PLANE2_FD_EXT		0x3278
gabomdq@8021
  1359
#define EGL_DMA_BUF_PLANE2_OFFSET_EXT		0x3279
gabomdq@8021
  1360
#define EGL_DMA_BUF_PLANE2_PITCH_EXT		0x327A
gabomdq@8021
  1361
#define EGL_YUV_COLOR_SPACE_HINT_EXT		0x327B
gabomdq@8021
  1362
#define EGL_SAMPLE_RANGE_HINT_EXT		0x327C
gabomdq@8021
  1363
#define EGL_YUV_CHROMA_HORIZONTAL_SITING_HINT_EXT 0x327D
gabomdq@8021
  1364
#define EGL_YUV_CHROMA_VERTICAL_SITING_HINT_EXT 0x327E
gabomdq@8021
  1365
#define EGL_ITU_REC601_EXT			0x327F
gabomdq@8021
  1366
#define EGL_ITU_REC709_EXT			0x3280
gabomdq@8021
  1367
#define EGL_ITU_REC2020_EXT			0x3281
gabomdq@8021
  1368
#define EGL_YUV_FULL_RANGE_EXT			0x3282
gabomdq@8021
  1369
#define EGL_YUV_NARROW_RANGE_EXT		0x3283
gabomdq@8021
  1370
#define EGL_YUV_CHROMA_SITING_0_EXT		0x3284
gabomdq@8021
  1371
#define EGL_YUV_CHROMA_SITING_0_5_EXT		0x3285
gabomdq@8021
  1372
#endif
gabomdq@8021
  1373
gabomdq@8021
  1374
#ifndef EGL_ARM_pixmap_multisample_discard
gabomdq@8021
  1375
#define EGL_ARM_pixmap_multisample_discard 1
gabomdq@8021
  1376
#define EGL_DISCARD_SAMPLES_ARM			0x3286
gabomdq@8021
  1377
#endif
gabomdq@8021
  1378
gabomdq@8021
  1379
#ifndef EGL_EXT_swap_buffers_with_damage
gabomdq@8021
  1380
#define EGL_EXT_swap_buffers_with_damage 1
gabomdq@8021
  1381
#ifdef EGL_EGLEXT_PROTOTYPES
gabomdq@8021
  1382
    EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffersWithDamageEXT(EGLDisplay dpy, EGLSurface surface, EGLint *rects, EGLint n_rects);
gabomdq@8021
  1383
#endif /* EGL_EGLEXT_PROTOTYPES */
gabomdq@8021
  1384
    typedef EGLBoolean(EGLAPIENTRYP PFNEGLSWAPBUFFERSWITHDAMAGEEXTPROC)(EGLDisplay dpy, EGLSurface surface, EGLint *rects, EGLint n_rects);
gabomdq@8021
  1385
#endif
gabomdq@8021
  1386
gabomdq@8021
  1387
/* #include <EGL/eglmesaext.h> */
gabomdq@8021
  1388
gabomdq@8021
  1389
#ifdef __cplusplus
gabomdq@8021
  1390
}
gabomdq@8021
  1391
#endif
gabomdq@8021
  1392
gabomdq@8021
  1393
#endif /* __eglext_h_ */
gabomdq@8021
  1394
gabomdq@8021
  1395
gabomdq@8021
  1396
slouken@8149
  1397
#endif /* _MSC_VER */