1 #ifndef _EVAS_GL_H
2 #define _EVAS_GL_H
3 
4 #include <Evas.h>
5 //#include <GL/gl.h>
6 
7 #ifdef EAPI
8 # undef EAPI
9 #endif
10 
11 #ifdef _WIN32
12 # ifdef EFL_BUILD
13 #  ifdef DLL_EXPORT
14 #   define EAPI __declspec(dllexport)
15 #  else
16 #   define EAPI
17 #  endif
18 # else
19 #  define EAPI __declspec(dllimport)
20 # endif
21 #else
22 # ifdef __GNUC__
23 #  if __GNUC__ >= 4
24 #   define EAPI __attribute__ ((visibility("default")))
25 #  else
26 #   define EAPI
27 #  endif
28 # else
29 #  define EAPI
30 # endif
31 #endif
32 
33 #ifdef __cplusplus
34 extern "C" {
35 #endif
36 
37 /*
38 Some of the remainder of this file is lifted from Khronos' public
39 EGL/glext headers.  The copyright notice from a recent version of the
40 headers is reproduced here.
41 
42 Much of it is from Mesa, so their copyright is included as well.
43 */
44 
45 /*
46 ** Copyright (c) 2013-2016 The Khronos Group Inc.
47 **
48 ** Permission is hereby granted, free of charge, to any person obtaining a
49 ** copy of this software and/or associated documentation files (the
50 ** "Materials"), to deal in the Materials without restriction, including
51 ** without limitation the rights to use, copy, modify, merge, publish,
52 ** distribute, sublicense, and/or sell copies of the Materials, and to
53 ** permit persons to whom the Materials are furnished to do so, subject to
54 ** the following conditions:
55 **
56 ** The above copyright notice and this permission notice shall be included
57 ** in all copies or substantial portions of the Materials.
58 **
59 ** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
60 ** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
61 ** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
62 ** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
63 ** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
64 ** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
65 ** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
66 */
67 /*
68  * Mesa 3-D graphics library
69  *
70  * Copyright (C) 1999-2006  Brian Paul   All Rights Reserved.
71  * Copyright (C) 2009  VMware, Inc.  All Rights Reserved.
72  *
73  * Permission is hereby granted, free of charge, to any person obtaining a
74  * copy of this software and associated documentation files (the "Software"),
75  * to deal in the Software without restriction, including without limitation
76  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
77  * and/or sell copies of the Software, and to permit persons to whom the
78  * Software is furnished to do so, subject to the following conditions:
79  *
80  * The above copyright notice and this permission notice shall be included
81  * in all copies or substantial portions of the Software.
82  *
83  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
84  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
85  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
86  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
87  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
88  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
89  * OTHER DEALINGS IN THE SOFTWARE.
90  */
91 
92 
93 /**
94  * @defgroup Evas_GL Rendering GL on Evas
95  * @ingroup Evas_Canvas
96  *
97  * @brief This group discusses the functions that are used to do OpenGL rendering on Evas. Evas allows you
98  *        to use OpenGL to render to specially set up image objects (which act as
99  *        render target surfaces).
100  *
101  *
102  * <h2> Evas GL usage example </h2>
103  *
104  * Below is an illustrative example of how to use OpenGL to render to an
105  * object in Evas.
106  *
107  * @code
108 // Simple Evas_GL example
109 #include <Ecore_Evas.h>
110 #include <Ecore.h>
111 #include <Evas_GL.h>
112 #include <stdio.h>
113 
114 // GL related data here..
115 typedef struct _GLData
116 {
117    Evas_GL_Context *ctx;
118    Evas_GL_Surface *sfc;
119    Evas_GL_Config  *cfg;
120    Evas_GL         *evasgl;
121    Evas_GL_API     *glapi;
122    GLuint           program;
123    GLuint           vtx_shader;
124    GLuint           fgmt_shader;
125    Eina_Bool        initialized : 1;
126 } GLData;
127 
128 // Callbacks we need to handle deletion on the object and updates/draws
129 static void      on_del       (void *data, Evas *e, Evas_Object *obj, void *event_info);
130 static void      on_pixels    (void *data, Evas_Object *obj);
131 // Demo - animator just to keep ticking over asking to draw the image
132 static Eina_Bool on_animate   (void *data);
133 // gl stuff
134 static int       init_shaders (GLData *gld);
135 static GLuint    load_shader  (GLData *gld, GLenum type, const char *shader_src);
136 
137 int
138 main(int argc, char **argv)
139 {
140    // A size by default
141    int w = 256, h = 256;
142    // Some variables we will use
143    Ecore_Evas  *ee;
144    Evas *canvas;
145    Evas_Object *r1;
146    Evas_Native_Surface ns;
147    GLData *gld = NULL;
148 
149    // Regular low-level EFL (ecore+ecore-evas) init. elm is simpler
150    ecore_init();
151    ecore_evas_init();
152    ee = ecore_evas_gl_x11_new(NULL, 0, 0, 0, 512, 512);
153    ecore_evas_title_set(ee, "Ecore_Evas Template");
154    canvas = ecore_evas_get(ee);
155 
156    // Alloc a data struct to hold our relevant gl info in it
157    if (!(gld = calloc(1, sizeof(GLData)))) return 0;
158 
159    //-//-//-// THIS IS WHERE GL INIT STUFF HAPPENS (ALA EGL)
160    //-//
161    // get the evas gl handle for doing gl things
162    gld->evasgl = evas_gl_new(canvas);
163    gld->glapi = evas_gl_api_get(gld->evasgl);
164 
165    // Set a surface config
166    gld->cfg = evas_gl_config_new();
167    gld->cfg->color_format = EVAS_GL_RGBA_8888;
168    //gld->cfg->depth_bits   = EVAS_GL_DEPTH_NONE;        // Othe config options
169    //gld->cfg->stencil_bits = EVAS_GL_STENCIL_NONE;
170    //gld->cfg->options_bits = EVAS_GL_OPTIONS_NONE;
171 
172    // Create a surface and context
173    gld->sfc = evas_gl_surface_create(gld->evasgl, gld->cfg, w, h);
174    gld->ctx = evas_gl_context_create(gld->evasgl, NULL);
175    //-//
176    //-//-//-// END GL INIT BLOB
177 
178    // Set up the image object. A filled one by default
179    r1 = evas_object_image_filled_add(canvas);
180    // Attach important data we need to the object using key names. This just
181    // avoids some global variables which means we can do a good cleanup. You can
182    // avoid this if you are lazy
183    evas_object_data_set(r1, "..gld", gld);
184    // When the object is deleted - call the on_del callback. Like the above,
185    // this is just being clean
186    evas_object_event_callback_add(r1, EVAS_CALLBACK_DEL, on_del, NULL);
187    // Set up an actual pixel size for the buffer data. It may be different
188    // from the output size. Any windowing system has something like this, only
189    // evas has 2 sizes, a pixel size and the output object size
190    evas_object_image_size_set(r1, w, h);
191    // Set up the native surface info to use the context and surface created
192    // above
193 
194    //-//-//-// THIS IS WHERE GL INIT STUFF HAPPENS (ALA EGL)
195    //-//
196    evas_gl_native_surface_get(gld->evasgl, gld->sfc, &ns);
197    evas_object_image_native_surface_set(r1, &ns);
198    evas_object_image_pixels_get_callback_set(r1, on_pixels, r1);
199    //-//
200    //-//-//-// END GL INIT BLOB
201 
202    // Move the image object somewhere, resize it, and show it. Any windowing
203    // system would need this kind of thing - place a child "window"
204    evas_object_move(r1, 128, 128);
205    evas_object_resize(r1, w, h);
206    evas_object_show(r1);
207 
208    // Animating - just a demo. As long as you trigger an update on the image
209    // object via evas_object_image_pixels_dirty_set(), any display system,
210    // mainloop system etc., will have something of this kind unless it's making
211    // you spin infinitely by yourself and invent your own animation mechanism
212    //
213    // NOTE: If you delete r1, this animator will keep running and trying to access
214    // r1 so you'd better delete this animator with ecore_animator_del() or
215    // structure how you do animation differently. You can also attach it like
216    // evasgl, sfc, etc., if this animator is specific to this object
217    // then delete it in the del handler for the obj.
218    ecore_animator_add(on_animate, r1);
219 
220    // Finally show the window for the world to see. Windowing system generic
221    ecore_evas_show(ee);
222 
223    // Begin the mainloop and tick over the animator, handle events, etc.
224    // Also windowing system generic
225    ecore_main_loop_begin();
226 
227    // Standard EFL shutdown stuff - generic for most systems, EFL or not
228    ecore_evas_shutdown();
229    ecore_shutdown();
230    return 0;
231 }
232 
233 static void
234 on_del(void *data, Evas *e, Evas_Object *obj, void *event_info)
235 {
236    // On delete of our object clean up some things that don't get auto
237    // deleted for us as they are not intrinsically bound to the image
238    // object as such (you could use the same context and surface across
239    // multiple image objects and re-use the evasgl handle multiple times.
240    // Here we bind them to only 1 object though by doing this.
241    GLData *gld = evas_object_data_get(obj, "..gld");
242    if (!gld) return;
243    Evas_GL_API *gl = gld->glapi;
244 
245    evas_object_data_del(obj, "..gld");
246 
247    // Do a make_current before deleting all the GL stuff.
248    evas_gl_make_current(gld->evasgl, gld->sfc, gld->ctx);
249    gl->glDeleteShader(gld->vtx_shader);
250    gl->glDeleteShader(gld->fgmt_shader);
251    gl->glDeleteProgram(gld->program);
252 
253    evas_gl_surface_destroy(gld->evasgl, gld->sfc);
254    evas_gl_context_destroy(gld->evasgl, gld->ctx);
255    evas_gl_config_free(gld->cfg);
256    evas_gl_free(gld->evasgl);
257    free(gld);
258 }
259 
260 static void
261 on_pixels(void *data, Evas_Object *obj)
262 {
263    // Get some variable we need from the object data keys
264    GLData *gld = evas_object_data_get(obj, "..gld");
265    if (!gld) return;
266    Evas_GL_API *gl = gld->glapi;
267    GLfloat vVertices[] =
268      {
269          0.0f,  0.5f, 0.0f,
270         -0.5f, -0.5f, 0.0f,
271          0.5f, -0.5f, 0.0f
272      };
273    int w, h;
274 
275    // Get the image size, in case it changed, with evas_object_image_size_set()
276    evas_object_image_size_get(obj, &w, &h);
277    // Set up the context and surface as the current one
278    evas_gl_make_current(gld->evasgl, gld->sfc, gld->ctx);
279 
280    if (!gld->initialized)
281      {
282         if (!init_shaders(gld)) printf("Error Initializing Shaders\n");
283         gld->initialized = EINA_TRUE;
284      }
285 
286    // GL Viewport stuff. You can avoid doing this if viewport is all the
287    // same as the last frame, if you want
288    gl->glViewport(0, 0, w, h);
289 
290    // Clear the buffer
291    gl->glClearColor(1.0, 0.0, 0.0, 1);
292    gl->glClear(GL_COLOR_BUFFER_BIT);
293 
294    // Draw a Triangle
295    gl->glEnable(GL_BLEND);
296 
297    gl->glUseProgram(gld->program);
298 
299    gl->glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, vVertices);
300    gl->glEnableVertexAttribArray(0);
301 
302    gl->glDrawArrays(GL_TRIANGLES, 0, 3);
303 
304    // Optional - Flush the GL pipeline
305    gl->glFlush();
306 }
307 
308 static Eina_Bool
309 on_animate(void *data)
310 {
311    // Just a demo - Animate here whenever an animation tick happens and then
312    // mark the image as "dirty" meaning it needs an update the next time evas
313    // renders. It will then call the pixel get callback.
314    evas_object_image_pixels_dirty_set(data, EINA_TRUE);
315    return EINA_TRUE; // Keep looping
316 }
317 
318 static GLuint
319 load_shader(GLData *gld, GLenum type, const char *shader_src)
320 {
321    Evas_GL_API *gl = gld->glapi;
322    GLuint shader;
323    GLint compiled = 0;
324 
325    // Create the shader object
326    if (!(shader = gl->glCreateShader(type))) return 0;
327    gl->glShaderSource(shader, 1, &shader_src, NULL);
328    // Compile the shader
329    gl->glCompileShader(shader);
330    gl->glGetShaderiv(shader, GL_COMPILE_STATUS, &compiled);
331 
332    if (!compiled)
333      {
334         GLint len = 0;
335 
336         gl->glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &len);
337         if (len > 1)
338           {
339              char *info = malloc(sizeof(char) * len);
340 
341              if (info)
342                {
343                   gl->glGetShaderInfoLog(shader, len, NULL, info);
344                   printf("Error compiling shader:\n"
345                          "%s\n", info);
346                   free(info);
347                }
348           }
349         gl->glDeleteShader(shader);
350         return 0;
351      }
352    return shader;
353 }
354 
355 // Initialize the shader and program object
356 static int
357 init_shaders(GLData *gld)
358 {
359    Evas_GL_API *gl = gld->glapi;
360    const char vShaderStr[] =
361       "attribute vec4 vPosition;    \n"
362       "void main()                  \n"
363       "{                            \n"
364       "   gl_Position = vPosition;  \n"
365       "}                            \n";
366    const char fShaderStr[] =
367       "precision mediump float;                    \n"
368       "void main()                                 \n"
369       "{                                           \n"
370       "  gl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\n"
371       "}                                           \n";
372    GLint linked = 0;
373 
374    // Load the vertex/fragment shaders
375    gld->vtx_shader  = load_shader(gld, GL_VERTEX_SHADER, vShaderStr);
376    gld->fgmt_shader = load_shader(gld, GL_FRAGMENT_SHADER, fShaderStr);
377 
378    // Create the program object
379    if (!(gld->program = gl->glCreateProgram())) return 0;
380 
381    gl->glAttachShader(gld->program, gld->vtx_shader);
382    gl->glAttachShader(gld->program, gld->fgmt_shader);
383 
384    // Bind vPosition to attribute 0
385    gl->glBindAttribLocation(gld->program, 0, "vPosition");
386    // Link the program
387    gl->glLinkProgram(gld->program);
388    gl->glGetProgramiv(gld->program, GL_LINK_STATUS, &linked);
389 
390    if (!linked)
391      {
392         GLint len = 0;
393 
394         gl->glGetProgramiv(gld->program, GL_INFO_LOG_LENGTH, &len);
395         if (len > 1)
396           {
397              char *info = malloc(sizeof(char) * len);
398 
399              if (info)
400                {
401                   gl->glGetProgramInfoLog(gld->program, len, NULL, info);
402                   printf("Error linking program:\n"
403                          "%s\n", info);
404                   free(info);
405                }
406           }
407         gl->glDeleteProgram(gld->program);
408         return 0;
409      }
410    return 1;
411 }
412  * @endcode
413  *
414  * @ingroup Evas_Canvas
415  */
416 
417 /**
418  * @addtogroup Evas_GL
419  * @{
420  */
421 
422 /**
423   * @typedef Evas_GL
424   *
425   * @brief The structure type of the Evas GL object used to render GL in Evas.
426   */
427 typedef struct _Evas_GL               Evas_GL;
428 
429 /**
430   * @typedef Evas_GL_Surface
431   *
432   * @brief The structure type of the Evas GL Surface object, a GL rendering target in Evas GL.
433   */
434 typedef struct _Evas_GL_Surface       Evas_GL_Surface;
435 
436 /**
437   * @typedef Evas_GL_Context
438   *
439   * @brief The structure type of the Evas GL Context object, a GL rendering context in Evas GL.
440   */
441 typedef struct _Evas_GL_Context       Evas_GL_Context;
442 
443 /**
444   * @typedef Evas_GL_Config
445   *
446   * @brief The structure type of the Evas GL Surface configuration object for surface creation.
447   */
448 typedef struct _Evas_GL_Config        Evas_GL_Config;
449 
450 /**
451   * @typedef Evas_GL_API
452   *
453   * @brief The structure type of the Evas GL API object that contains the GL APIs to be used in Evas GL.
454   */
455 typedef struct _Evas_GL_API           Evas_GL_API;
456 
457 /**
458   * @typedef Evas_GL_Func
459   *
460   * @brief Represents a function pointer, that can be used for Evas GL extensions.
461   */
462 typedef void                         *Evas_GL_Func;
463 
464 /**
465   * @typedef EvasGLImage
466   *
467   * @brief Represents an Evas GL Image object used with Evas GL Image extensions.
468   */
469 typedef void                         *EvasGLImage;
470 
471 /**
472  * @brief Enumeration that defines the available surface color formats.
473  */
474 typedef enum _Evas_GL_Color_Format
475 {
476     EVAS_GL_RGB_888   = 0, /**< Opaque RGB surface */
477     EVAS_GL_RGBA_8888 = 1, /**< RGBA surface with alpha */
478     EVAS_GL_NO_FBO    = 2  /**< Special value for creating PBuffer surfaces without any attached buffer. @see evas_gl_pbuffer_surface_create. @since 1.12*/
479 } Evas_GL_Color_Format;
480 
481 /**
482  * @brief Enumeration that defines the Surface Depth Format.
483  */
484 typedef enum _Evas_GL_Depth_Bits
485 {
486     EVAS_GL_DEPTH_NONE   = 0,
487     EVAS_GL_DEPTH_BIT_8  = 1,   /**< 8 bits precision surface depth */
488     EVAS_GL_DEPTH_BIT_16 = 2,   /**< 16 bits precision surface depth */
489     EVAS_GL_DEPTH_BIT_24 = 3,   /**< 24 bits precision surface depth */
490     EVAS_GL_DEPTH_BIT_32 = 4    /**< 32 bits precision surface depth */
491 } Evas_GL_Depth_Bits;
492 
493 /**
494  * @brief Enumeration that defines the Surface Stencil Format.
495  */
496 typedef enum _Evas_GL_Stencil_Bits
497 {
498     EVAS_GL_STENCIL_NONE   = 0,
499     EVAS_GL_STENCIL_BIT_1  = 1,   /**< 1 bit precision for stencil buffer */
500     EVAS_GL_STENCIL_BIT_2  = 2,   /**< 2 bits precision for stencil buffer */
501     EVAS_GL_STENCIL_BIT_4  = 3,   /**< 4 bits precision for stencil buffer */
502     EVAS_GL_STENCIL_BIT_8  = 4,   /**< 8 bits precision for stencil buffer */
503     EVAS_GL_STENCIL_BIT_16 = 5    /**< 16 bits precision for stencil buffer */
504 } Evas_GL_Stencil_Bits;
505 
506 /**
507  * @brief Enumeration that defines the Configuration Options.
508  *
509  * @since 1.1
510  */
511 typedef enum _Evas_GL_Options_Bits
512 {
513    EVAS_GL_OPTIONS_NONE    = 0,     /**< No extra options */
514    EVAS_GL_OPTIONS_DIRECT  = (1<<0),/**< Optional hint to allow rendering directly to the Evas window if possible */
515    EVAS_GL_OPTIONS_CLIENT_SIDE_ROTATION = (1<<1) /**< Force direct rendering even if the canvas is rotated.
516                                                   *   In that case, it is the application's role to rotate the contents of
517                                                   *   the Evas_GL view. @see evas_gl_rotation_get. @since 1.12 */
518 } Evas_GL_Options_Bits;
519 
520 /**
521  * @brief Enumeration that defines the configuration options for a Multisample Anti-Aliased (MSAA) rendering surface.
522  *
523  * @since 1.2
524  *
525  * @remarks This only works on devices that support the required extensions.
526  */
527 typedef enum _Evas_GL_Multisample_Bits
528 {
529    EVAS_GL_MULTISAMPLE_NONE = 0, /**< No multisample rendering */
530    EVAS_GL_MULTISAMPLE_LOW  = 1, /**< MSAA with minimum number of samples */
531    EVAS_GL_MULTISAMPLE_MED  = 2, /**< MSAA with half the maximum number of samples */
532    EVAS_GL_MULTISAMPLE_HIGH = 3  /**< MSAA with maximum allowed samples */
533 } Evas_GL_Multisample_Bits;
534 
535 /**
536  * @brief Enumeration that defines the available OpenGL ES version numbers.
537  *        They can be used to create OpenGL-ES 1.1 contexts.
538  *
539  * @since 1.12
540  *
541  * @see evas_gl_context_version_create
542  *
543  * @remarks This will only work with EGL/GLES (but not with desktop OpenGL).
544  */
545 typedef enum _Evas_GL_Context_Version
546 {
547    EVAS_GL_GLES_1_X = 1, /**< OpenGL-ES 1.x */
548    EVAS_GL_GLES_2_X = 2, /**< OpenGL-ES 2.x is the default */
549    EVAS_GL_GLES_3_X = 3  /**< @internal OpenGL-ES 3.x, not implemented yet */
550 } Evas_GL_Context_Version;
551 
552 /**
553  * @struct _Evas_GL_Config
554  *
555  * @brief A structure used to specify the configuration of an @ref Evas_GL_Surface.
556  *
557  * This structure should be allocated with @ref evas_gl_config_new() and released
558  * with @ref evas_gl_config_free().
559  *
560  * @see evas_gl_surface_create
561  * @see evas_gl_pbuffer_surface_create
562  */
563 struct _Evas_GL_Config
564 {
565    Evas_GL_Color_Format       color_format;     /**< Surface Color Format */
566    Evas_GL_Depth_Bits         depth_bits;       /**< Surface Depth Bits */
567    Evas_GL_Stencil_Bits       stencil_bits;     /**< Surface Stencil Bits */
568    Evas_GL_Options_Bits       options_bits;     /**< Extra Surface Options */
569    Evas_GL_Multisample_Bits   multisample_bits; /**< Optional Surface MSAA Bits */
570    Evas_GL_Context_Version    gles_version;     /**< @internal Special flag for OpenGL-ES 1.1 indirect rendering surfaces (since 1.12) */
571 };
572 
573 /** @brief Constant to use when calling @ref evas_gl_string_query to retrieve the available Evas_GL extensions. */
574 #define EVAS_GL_EXTENSIONS       1
575 
576 
577 /**
578  * @brief Creates a new Evas_GL object and returns a handle for GL rendering with the EFL.
579  *
580  * @param[in] e The given Evas canvas to use
581  *
582  * @return The created Evas_GL object, or @c NULL in case of failure
583  */
584 EAPI Evas_GL                 *evas_gl_new                (Evas *e) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
585 
586 /**
587  * @brief Frees an Evas_GL object.
588  *
589  * @param[in] evas_gl   The given Evas_GL object to destroy
590  *
591  * @see evas_gl_new
592  */
593 EAPI void                     evas_gl_free               (Evas_GL *evas_gl) EINA_ARG_NONNULL(1);
594 
595 /**
596  * @brief Allocates a new config object for the user to fill out.
597  *
598  * @remarks As long as Evas creates a config object for the user, it takes care
599  *          of the backward compatibility issue.
600  *
601  * @see evas_gl_config_free
602  */
603 EAPI Evas_GL_Config          *evas_gl_config_new         (void);
604 
605 /**
606  * @brief Frees a config object created from evas_gl_config_new.
607  *
608  * @param[in] cfg  The configuration structure to free, it can not be accessed afterwards.
609  *
610  * @remarks As long as Evas creates a config object for the user, it takes care
611  *          of the backward compatibility issue.
612  *
613  * @see evas_gl_config_new
614  */
615 EAPI void                     evas_gl_config_free        (Evas_GL_Config *cfg) EINA_ARG_NONNULL(1);
616 
617 /**
618  * @brief Creates and returns a new @ref Evas_GL_Surface object for GL Rendering.
619  *
620  * @param[in] evas_gl The given Evas_GL object
621  * @param[in] cfg     The pixel format and configuration of the rendering surface
622  * @param[in] w       The width of the surface
623  * @param[in] h       The height of the surface
624  *
625  * @return The created GL surface object,
626  *         otherwise @c NULL on failure
627  *
628  * @see evas_gl_surface_destroy
629  */
630 EAPI Evas_GL_Surface         *evas_gl_surface_create     (Evas_GL *evas_gl, Evas_GL_Config *cfg, int w, int h) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1,2);
631 
632 /**
633  * @brief Create a pixel buffer surface
634  *
635  * @param[in] evas_gl     The given Evas_GL object
636  * @param[in] cfg         Pixel format and configuration of the pixel buffer surface
637  * @param[in] w           Requested width of the buffer
638  * @param[in] h           Requested height of the buffer
639  * @param[in] attrib_list An optional list of attribute-value pairs terminated by attribute 0, can be @c NULL. Currently, no attributes are supported.
640  *
641  * @return The created GL surface object,
642  *         otherwise @c NULL on failure
643  *
644  * The surface must be released with @ref evas_gl_surface_destroy.
645  *
646  * If the color format in @a cfg is @ref EVAS_GL_RGB_888 or @ref EVAS_GL_RGBA_8888,
647  * then Evas will automatically generate a framebuffer attached to this PBuffer.
648  * Its properties can be queried using @ref evas_gl_native_surface_get.
649  * If you want to attach an FBO yourself, or create a PBuffer surface only,
650  * please use the color format @ref EVAS_GL_NO_FBO.
651  *
652  * Creating a 1x1 PBuffer surface can be useful in order to call
653  * @ref evas_gl_make_current() from another thread.
654  *
655  * @note The attribute list can be terminated by EVAS_GL_NONE or 0.
656  *       As of now, no special attributes are supported yet. Also, only EGL
657  *       is supported at the moment of writing.
658  *
659  * @see evas_gl_surface_destroy
660  *
661  * @since 1.12
662  */
663 EAPI Evas_GL_Surface         *evas_gl_pbuffer_surface_create(Evas_GL *evas_gl, Evas_GL_Config *cfg, int w, int h, const int *attrib_list) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1,2);
664 
665 /**
666  * @brief Destroys an Evas GL Surface.
667  *
668  * @param[in] evas_gl   The given Evas_GL object
669  * @param[in] surf      The given GL surface object
670  *
671  * @note This function can also destroy pbuffer surfaces.
672  */
673 EAPI void                     evas_gl_surface_destroy    (Evas_GL *evas_gl, Evas_GL_Surface *surf) EINA_ARG_NONNULL(1,2);
674 
675 /**
676  * @brief Creates and returns a new Evas GL context object.
677  *
678  * @param[in] evas_gl    The given Evas_GL object
679  * @param[in] share_ctx  An Evas_GL context to share with the new context
680  *
681  * @return The created context,
682  *         otherwise @c NULL on failure
683  */
684 EAPI Evas_GL_Context         *evas_gl_context_create     (Evas_GL *evas_gl, Evas_GL_Context *share_ctx) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
685 
686 /**
687  * @brief Creates and returns a new Evas GL context object for OpenGL-ES 1.1 or 2.0.
688  *
689  * @param[in] evas_gl    The given Evas_GL object
690  * @param[in] share_ctx  A context to share (can be NULL)
691  * @param[in] version    Major OpenGL-ES version number
692  *
693  * @return The created context,
694  *         otherwise @c NULL on failure
695  *
696  * This function can be used to create OpenGL-ES 1.1 contexts, but OpenGL-ES 3.x
697  * is not supported yet.
698  *
699  * The GL API bound to the created context must be queried using
700  * @ref evas_gl_context_api_get (instead of @ref evas_gl_api_get).
701  *
702  * @note GLES 3.x is not supported yet.
703  *
704  * @see Evas_GL_Context_Version
705  * @see evas_gl_context_api_get
706  *
707  * @since 1.12
708  */
709 EAPI Evas_GL_Context         *evas_gl_context_version_create(Evas_GL *evas_gl, Evas_GL_Context *share_ctx, Evas_GL_Context_Version version) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
710 
711 /**
712  * @brief Destroys the given Evas GL context object.
713  *
714  * @param[in] evas_gl The given Evas_GL object
715  * @param[in] ctx     The given Evas GL context
716  *
717  * @see evas_gl_context_create
718  * @see evas_gl_context_version_create
719  */
720 EAPI void                     evas_gl_context_destroy    (Evas_GL *evas_gl, Evas_GL_Context *ctx) EINA_ARG_NONNULL(1,2);
721 
722 /**
723  * @brief Sets the given context as the current context for the given surface.
724  *
725  * @param[in] evas_gl The given Evas_GL object
726  * @param[in] surf The given Evas GL surface
727  * @param[in] ctx The given Evas GL context
728  * @return @c EINA_TRUE if successful,
729  *         otherwise @c EINA_FALSE if not
730  */
731 EAPI Eina_Bool                evas_gl_make_current       (Evas_GL *evas_gl, Evas_GL_Surface *surf, Evas_GL_Context *ctx) EINA_ARG_NONNULL(1,2);
732 
733 /**
734  * @brief Returns a pointer to a static, null-terminated string describing some aspect of Evas GL.
735  *
736  * @param[in] evas_gl The given Evas_GL object
737  * @param[in] name    A symbolic constant, only @ref EVAS_GL_EXTENSIONS is supported for now
738  */
739 EAPI const char              *evas_gl_string_query       (Evas_GL *evas_gl, int name) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1) EINA_PURE;
740 
741 /**
742  * @brief Returns a extension function from OpenGL or the Evas_GL glue layer.
743  *
744  * @param[in] evas_gl  The given Evas_GL object
745  * @param[in] name     The name of the function to return
746  *
747  * The available extension functions may depend on the backend engine Evas GL is
748  * running on.
749  *
750  * @return A function pointer to the Evas_GL extension.
751  */
752 EAPI Evas_GL_Func             evas_gl_proc_address_get   (Evas_GL *evas_gl, const char *name) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1,2) EINA_PURE;
753 
754 /**
755  * @brief Fills in the Native Surface information from a given Evas GL surface.
756  *
757  * @param[in]  evas_gl The given Evas_GL object
758  * @param[in]  surf    The given Evas GL surface to retrieve the Native Surface information from
759  * @param[out] ns      The native surface structure that the function fills in
760  * @return @c EINA_TRUE if successful,
761  *         otherwise @c EINA_FALSE if not
762  *
763  * @details This function can be called to later set this native surface as
764  *          source of an Evas Object Image. Please refer to
765  *          @ref evas_object_image_native_surface_set.
766  *
767  * @warning Applications should not rely on the information set in @p ns
768  *          since its properties are internal to Evas and are not meant to be
769  *          tampered with in any way or form from outside Evas.
770  */
771 EAPI Eina_Bool                evas_gl_native_surface_get (Evas_GL *evas_gl, Evas_GL_Surface *surf, Evas_Native_Surface *ns) EINA_ARG_NONNULL(1,2,3);
772 
773 /**
774  * @brief Gets the API for rendering using OpenGL.
775  *
776  * @details This returns a structure that contains all the OpenGL functions you can
777  *          use to render in Evas. These functions consist of all the standard
778  *          OpenGL-ES2.0 functions and any additional ones that Evas has decided to provide.
779  *          This means that if you have your code ported to OpenGL-ES2.0,
780  *          it is going to be easy to render to Evas.
781  *
782  * @param[in] evas_gl The given Evas_GL object
783  *
784  * @return The API to use
785  *
786  * @note This function will always return an OpenGL-ES 2.0 API, please use
787  *       @ref evas_gl_context_api_get instead to get an OpenGL-ES 1.1 set of APIs.
788  *
789  * @see Evas_GL_API
790  * @see evas_gl_context_api_get
791  *
792  */
793 EAPI Evas_GL_API             *evas_gl_api_get            (Evas_GL *evas_gl) EINA_ARG_NONNULL(1);
794 
795 /**
796  * @brief Gets the API for rendering using OpenGL with non standard contexts.
797  *
798  * This function is similar to @ref evas_gl_api_get but takes an extra Evas GL
799  * context argument as it is used to get the real API used by special contexts,
800  * that have been instantiated with @ref evas_gl_context_version_create().
801  *
802  * This function can be used to get the GL API for an OpenGL-ES 1.1 context. When
803  * using OpenGL-ES 1.1, applications should always use @ref evas_gl_context_api_get
804  * and never call @ref evas_gl_api_get (this will always return a OpenGL-ES 2+ API).
805  *
806  * @param[in] evas_gl The given Evas_GL object
807  * @param[in] ctx     Specifies which context to use, based on this, Evas GL
808  *                    will return a 1.1- or a 2.0-compatible OpenGL-ES API.
809  *
810  * @return The API to use. Only the available function pointers will be set
811  *         in the structure. All the non compatible functions or unsupported
812  *         extension function pointers will be set to NULL.
813  *
814  * @see Evas_GL_API
815  * @see evas_gl_api_get
816  * @see evas_gl_context_version_create
817  *
818  * @since 1.12
819  */
820 EAPI Evas_GL_API             *evas_gl_context_api_get    (Evas_GL *evas_gl, Evas_GL_Context *ctx) EINA_ARG_NONNULL(1);
821 
822 /**
823  * @brief Get the current rotation of the view, in degrees.
824  *
825  * This function should be called in order to properly handle the current
826  * rotation of the view. It will always return 0 unless the option
827  * @ref EVAS_GL_OPTIONS_CLIENT_SIDE_ROTATION has been set.
828  *
829  * Indeed, in case of direct rendering to the back buffer, the client
830  * application is responsible for properly rotating its view. This can generally
831  * be done by applying a rotation to a view matrix.
832  *
833  * @param[in] evas_gl    The current Evas_GL object
834  *
835  * @note The returned value may not be the same as the window rotation, for
836  * example if indirect rendering is used as a fallback, or if the GPU supports
837  * transparent rotation of the buffer during swap.
838  *
839  * @return 0, 90, 180 or 270 depending on the Evas canvas' orientation.
840  *
841  * @see EVAS_GL_OPTIONS_CLIENT_SIDE_ROTATION
842  *
843  * @since 1.12
844  */
845 EAPI int                      evas_gl_rotation_get       (Evas_GL *evas_gl) EINA_ARG_NONNULL(1) EINA_WARN_UNUSED_RESULT;
846 
847 /**
848  * @brief Query a surface for its properties
849  *
850  * @param[in]  evas_gl    The current Evas_GL object
851  * @param[in]  surface    An Evas_GL_Surface surface to query
852  * @param[in]  attribute  Specifies the attribute to query.
853  * @param[out] value      Returns the requested value (usually an int)
854  *
855  * The currently accepted attributes are the following:
856  * @li @ref EVAS_GL_WIDTH,
857  * @li @ref EVAS_GL_HEIGHT,
858  * @li @ref EVAS_GL_TEXTURE_FORMAT,
859  * @li @ref EVAS_GL_TEXTURE_TARGET
860  *
861  * @return EINA_TRUE in case of success, EINA_FALSE in case of error.
862  *
863  * @since 1.12
864  */
865 EAPI Eina_Bool                evas_gl_surface_query      (Evas_GL *evas_gl, Evas_GL_Surface *surface, int attribute, void *value) EINA_ARG_NONNULL(1,2);
866 
867 /**
868  * @brief Returns the last error of any evas_gl function called in the current thread.
869  *        Initially, the error is set to @ref EVAS_GL_SUCCESS. A call to @ref evas_gl_error_get
870  *        resets the error to @ref EVAS_GL_SUCCESS.
871  *
872  * @param[in] evas_gl The given Evas_GL object
873  *
874  * @return @ref EVAS_GL_SUCCESS in case of no error, or any other @c EVAS_GL error code.
875  *
876  * Since Evas GL is a glue layer for GL imitating EGL, the error codes returned
877  * have a similar meaning as those defined in EGL, so please refer to the EGL
878  * documentation for more information about the various error codes.
879  *
880  * @note Evas GL does not specify exactly which error codes will be returned in
881  *       which circumstances. This is because different backends may behave
882  *       differently and Evas GL will try to give the most meaningful error code
883  *       based on the backend's error. Evas GL only tries to provide some
884  *       information, so an application can not expect the exact same error
885  *       codes as EGL would return.
886  *
887  * @since 1.12
888  */
889 EAPI int                      evas_gl_error_get          (Evas_GL *evas_gl) EINA_ARG_NONNULL(1);
890 
891 /**
892  * @brief Returns the Evas GL context object in use or set by @ref evas_gl_make_current.
893  *
894  * @param[in] evas_gl The given Evas_GL object
895  *
896  * @return The current context for the calling thread, or @c NULL in case of
897  *         failure and when there is no current context in this thread.
898  *
899  * @since 1.12
900  */
901 EAPI Evas_GL_Context         *evas_gl_current_context_get (Evas_GL *evas_gl) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
902 
903 /**
904  * @brief Returns the Evas GL surface object in use or set by @ref evas_gl_make_current
905  *
906  * @param[in] evas_gl The given Evas_GL object
907  *
908  * @return The current surface for the calling thread, or @c NULL in case of
909  *         failure and when there is no current surface in this thread.
910  *
911  * This can be used to get a handle to the current surface, so as to switch
912  * between contexts back and forth. Note that the OpenGL driver may stall when
913  * doing so.
914  *
915  * @see evas_gl_make_current
916  *
917  * @since 1.12
918  */
919 EAPI Evas_GL_Surface         *evas_gl_current_surface_get (Evas_GL *evas_gl) EINA_WARN_UNUSED_RESULT EINA_ARG_NONNULL(1);
920 
921 /**
922  * @brief Get current Evas GL
923  *
924  * @param[out] context  Optional return value for the current context
925  * @param[out] surface  Optional return value for the current surface
926  *
927  * @return The current Evas GL, i.e. the last Evas GL passed to evas_gl_make_current
928  *
929  * @see evas_gl_make_current
930  *
931  * @note This can be used to restore a previous context, for instance if you
932  *       are writing a library that needs to work transparently with Evas GL,
933  *       and may not have control over the other Evas GL objects.
934  *
935  * @since 1.16
936  */
937 EAPI Evas_GL                 *evas_gl_current_evas_gl_get (Evas_GL_Context **context, Evas_GL_Surface **surface) EINA_WARN_UNUSED_RESULT;
938 
939 
940 /*-------------------------------------------------------------------------
941  * Data types, definitions and values for use with Evas GL.
942  *
943  * The following definitions have been imported from the official GLES/GLES2
944  * header files. Please do not include the official GL headers along with
945  * Evas_GL.h as these will conflict.
946  *-----------------------------------------------------------------------*/
947 
948 #if !defined(__gl2_h_)
949 # define __gl2_h_
950 
951 /*
952  * This document is licensed under the SGI Free Software B License Version
953  * 2.0. For details, see https://spdx.org/licenses/SGI-B-2.0.html .
954  */
955 
956 /*-------------------------------------------------------------------------
957  * Data type definitions
958  *-----------------------------------------------------------------------*/
959 
960 typedef void             GLvoid;
961 typedef char             GLchar;
962 typedef unsigned int     GLenum;
963 typedef unsigned char    GLboolean;
964 typedef unsigned int     GLbitfield;
965 typedef signed char      GLbyte;       // Changed khronos_int8_t
966 typedef short            GLshort;
967 typedef int              GLint;
968 typedef int              GLsizei;
969 typedef unsigned char    GLubyte;      // Changed khronos_uint8_t
970 typedef unsigned short   GLushort;
971 typedef unsigned int     GLuint;
972 typedef float            GLfloat;      // Changed khronos_float_t
973 typedef float            GLclampf;     // Changed khronos_float_t
974 typedef signed int       GLfixed;      // Changed khronos_int32_t
975 
976 /* OpenGL ES core versions */
977 //#define GL_ES_VERSION_2_0                 1
978 
979 /* ClearBufferMask */
980 #define GL_DEPTH_BUFFER_BIT               0x00000100
981 #define GL_STENCIL_BUFFER_BIT             0x00000400
982 #define GL_COLOR_BUFFER_BIT               0x00004000
983 
984 /* Boolean */
985 #define GL_FALSE                          0
986 #define GL_TRUE                           1
987 
988 /* BeginMode */
989 #define GL_POINTS                         0x0000
990 #define GL_LINES                          0x0001
991 #define GL_LINE_LOOP                      0x0002
992 #define GL_LINE_STRIP                     0x0003
993 #define GL_TRIANGLES                      0x0004
994 #define GL_TRIANGLE_STRIP                 0x0005
995 #define GL_TRIANGLE_FAN                   0x0006
996 
997 /* AlphaFunction (not supported in ES20) */
998 /*      GL_NEVER */
999 /*      GL_LESS */
1000 /*      GL_EQUAL */
1001 /*      GL_LEQUAL */
1002 /*      GL_GREATER */
1003 /*      GL_NOTEQUAL */
1004 /*      GL_GEQUAL */
1005 /*      GL_ALWAYS */
1006 
1007 /* BlendingFactorDest */
1008 #define GL_ZERO                           0
1009 #define GL_ONE                            1
1010 #define GL_SRC_COLOR                      0x0300
1011 #define GL_ONE_MINUS_SRC_COLOR            0x0301
1012 #define GL_SRC_ALPHA                      0x0302
1013 #define GL_ONE_MINUS_SRC_ALPHA            0x0303
1014 #define GL_DST_ALPHA                      0x0304
1015 #define GL_ONE_MINUS_DST_ALPHA            0x0305
1016 
1017 /* BlendingFactorSrc */
1018 /*      GL_ZERO */
1019 /*      GL_ONE */
1020 #define GL_DST_COLOR                      0x0306
1021 #define GL_ONE_MINUS_DST_COLOR            0x0307
1022 #define GL_SRC_ALPHA_SATURATE             0x0308
1023 /*      GL_SRC_ALPHA */
1024 /*      GL_ONE_MINUS_SRC_ALPHA */
1025 /*      GL_DST_ALPHA */
1026 /*      GL_ONE_MINUS_DST_ALPHA */
1027 
1028 /* BlendEquationSeparate */
1029 #define GL_FUNC_ADD                       0x8006
1030 #define GL_BLEND_EQUATION                 0x8009
1031 #define GL_BLEND_EQUATION_RGB             0x8009    /* same as BLEND_EQUATION */
1032 #define GL_BLEND_EQUATION_ALPHA           0x883D
1033 
1034 /* BlendSubtract */
1035 #define GL_FUNC_SUBTRACT                  0x800A
1036 #define GL_FUNC_REVERSE_SUBTRACT          0x800B
1037 
1038 /* Separate Blend Functions */
1039 #define GL_BLEND_DST_RGB                  0x80C8
1040 #define GL_BLEND_SRC_RGB                  0x80C9
1041 #define GL_BLEND_DST_ALPHA                0x80CA
1042 #define GL_BLEND_SRC_ALPHA                0x80CB
1043 #define GL_CONSTANT_COLOR                 0x8001
1044 #define GL_ONE_MINUS_CONSTANT_COLOR       0x8002
1045 #define GL_CONSTANT_ALPHA                 0x8003
1046 #define GL_ONE_MINUS_CONSTANT_ALPHA       0x8004
1047 #define GL_BLEND_COLOR                    0x8005
1048 
1049 /* Buffer Objects */
1050 #define GL_ARRAY_BUFFER                   0x8892
1051 #define GL_ELEMENT_ARRAY_BUFFER           0x8893
1052 #define GL_ARRAY_BUFFER_BINDING           0x8894
1053 #define GL_ELEMENT_ARRAY_BUFFER_BINDING   0x8895
1054 
1055 #define GL_STREAM_DRAW                    0x88E0
1056 #define GL_STATIC_DRAW                    0x88E4
1057 #define GL_DYNAMIC_DRAW                   0x88E8
1058 
1059 #define GL_BUFFER_SIZE                    0x8764
1060 #define GL_BUFFER_USAGE                   0x8765
1061 
1062 #define GL_CURRENT_VERTEX_ATTRIB          0x8626
1063 
1064 /* CullFaceMode */
1065 #define GL_FRONT                          0x0404
1066 #define GL_BACK                           0x0405
1067 #define GL_FRONT_AND_BACK                 0x0408
1068 
1069 /* DepthFunction */
1070 /*      GL_NEVER */
1071 /*      GL_LESS */
1072 /*      GL_EQUAL */
1073 /*      GL_LEQUAL */
1074 /*      GL_GREATER */
1075 /*      GL_NOTEQUAL */
1076 /*      GL_GEQUAL */
1077 /*      GL_ALWAYS */
1078 
1079 /* EnableCap */
1080 #define GL_TEXTURE_2D                     0x0DE1
1081 #define GL_CULL_FACE                      0x0B44
1082 #define GL_BLEND                          0x0BE2
1083 #define GL_DITHER                         0x0BD0
1084 #define GL_STENCIL_TEST                   0x0B90
1085 #define GL_DEPTH_TEST                     0x0B71
1086 #define GL_SCISSOR_TEST                   0x0C11
1087 #define GL_POLYGON_OFFSET_FILL            0x8037
1088 #define GL_SAMPLE_ALPHA_TO_COVERAGE       0x809E
1089 #define GL_SAMPLE_COVERAGE                0x80A0
1090 
1091 /* ErrorCode */
1092 #define GL_NO_ERROR                       0
1093 #define GL_INVALID_ENUM                   0x0500
1094 #define GL_INVALID_VALUE                  0x0501
1095 #define GL_INVALID_OPERATION              0x0502
1096 #define GL_OUT_OF_MEMORY                  0x0505
1097 
1098 /* FrontFaceDirection */
1099 #define GL_CW                             0x0900
1100 #define GL_CCW                            0x0901
1101 
1102 /* GetPName */
1103 #define GL_LINE_WIDTH                     0x0B21
1104 #define GL_ALIASED_POINT_SIZE_RANGE       0x846D
1105 #define GL_ALIASED_LINE_WIDTH_RANGE       0x846E
1106 #define GL_CULL_FACE_MODE                 0x0B45
1107 #define GL_FRONT_FACE                     0x0B46
1108 #define GL_DEPTH_RANGE                    0x0B70
1109 #define GL_DEPTH_WRITEMASK                0x0B72
1110 #define GL_DEPTH_CLEAR_VALUE              0x0B73
1111 #define GL_DEPTH_FUNC                     0x0B74
1112 #define GL_STENCIL_CLEAR_VALUE            0x0B91
1113 #define GL_STENCIL_FUNC                   0x0B92
1114 #define GL_STENCIL_FAIL                   0x0B94
1115 #define GL_STENCIL_PASS_DEPTH_FAIL        0x0B95
1116 #define GL_STENCIL_PASS_DEPTH_PASS        0x0B96
1117 #define GL_STENCIL_REF                    0x0B97
1118 #define GL_STENCIL_VALUE_MASK             0x0B93
1119 #define GL_STENCIL_WRITEMASK              0x0B98
1120 #define GL_STENCIL_BACK_FUNC              0x8800
1121 #define GL_STENCIL_BACK_FAIL              0x8801
1122 #define GL_STENCIL_BACK_PASS_DEPTH_FAIL   0x8802
1123 #define GL_STENCIL_BACK_PASS_DEPTH_PASS   0x8803
1124 #define GL_STENCIL_BACK_REF               0x8CA3
1125 #define GL_STENCIL_BACK_VALUE_MASK        0x8CA4
1126 #define GL_STENCIL_BACK_WRITEMASK         0x8CA5
1127 #define GL_VIEWPORT                       0x0BA2
1128 #define GL_SCISSOR_BOX                    0x0C10
1129 /*      GL_SCISSOR_TEST */
1130 #define GL_COLOR_CLEAR_VALUE              0x0C22
1131 #define GL_COLOR_WRITEMASK                0x0C23
1132 #define GL_UNPACK_ALIGNMENT               0x0CF5
1133 #define GL_PACK_ALIGNMENT                 0x0D05
1134 #define GL_MAX_TEXTURE_SIZE               0x0D33
1135 #define GL_MAX_VIEWPORT_DIMS              0x0D3A
1136 #define GL_SUBPIXEL_BITS                  0x0D50
1137 #define GL_RED_BITS                       0x0D52
1138 #define GL_GREEN_BITS                     0x0D53
1139 #define GL_BLUE_BITS                      0x0D54
1140 #define GL_ALPHA_BITS                     0x0D55
1141 #define GL_DEPTH_BITS                     0x0D56
1142 #define GL_STENCIL_BITS                   0x0D57
1143 #define GL_POLYGON_OFFSET_UNITS           0x2A00
1144 /*      GL_POLYGON_OFFSET_FILL */
1145 #define GL_POLYGON_OFFSET_FACTOR          0x8038
1146 #define GL_TEXTURE_BINDING_2D             0x8069
1147 #define GL_SAMPLE_BUFFERS                 0x80A8
1148 #define GL_SAMPLES                        0x80A9
1149 #define GL_SAMPLE_COVERAGE_VALUE          0x80AA
1150 #define GL_SAMPLE_COVERAGE_INVERT         0x80AB
1151 
1152 /* GetTextureParameter */
1153 /*      GL_TEXTURE_MAG_FILTER */
1154 /*      GL_TEXTURE_MIN_FILTER */
1155 /*      GL_TEXTURE_WRAP_S */
1156 /*      GL_TEXTURE_WRAP_T */
1157 
1158 #define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2
1159 #define GL_COMPRESSED_TEXTURE_FORMATS     0x86A3
1160 
1161 /* HintMode */
1162 #define GL_DONT_CARE                      0x1100
1163 #define GL_FASTEST                        0x1101
1164 #define GL_NICEST                         0x1102
1165 
1166 /* HintTarget */
1167 #define GL_GENERATE_MIPMAP_HINT            0x8192
1168 
1169 /* DataType */
1170 #define GL_BYTE                           0x1400
1171 #define GL_UNSIGNED_BYTE                  0x1401
1172 #define GL_SHORT                          0x1402
1173 #define GL_UNSIGNED_SHORT                 0x1403
1174 #define GL_INT                            0x1404
1175 #define GL_UNSIGNED_INT                   0x1405
1176 #define GL_FLOAT                          0x1406
1177 #define GL_FIXED                          0x140C
1178 
1179 /* PixelFormat */
1180 #define GL_DEPTH_COMPONENT                0x1902
1181 #define GL_ALPHA                          0x1906
1182 #define GL_RGB                            0x1907
1183 #define GL_RGBA                           0x1908
1184 #define GL_LUMINANCE                      0x1909
1185 #define GL_LUMINANCE_ALPHA                0x190A
1186 
1187 /* PixelType */
1188 /*      GL_UNSIGNED_BYTE */
1189 #define GL_UNSIGNED_SHORT_4_4_4_4         0x8033
1190 #define GL_UNSIGNED_SHORT_5_5_5_1         0x8034
1191 #define GL_UNSIGNED_SHORT_5_6_5           0x8363
1192 
1193 /* Shaders */
1194 #define GL_FRAGMENT_SHADER                  0x8B30
1195 #define GL_VERTEX_SHADER                    0x8B31
1196 #define GL_MAX_VERTEX_ATTRIBS               0x8869
1197 #define GL_MAX_VERTEX_UNIFORM_VECTORS       0x8DFB
1198 #define GL_MAX_VARYING_VECTORS              0x8DFC
1199 #define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D
1200 #define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS   0x8B4C
1201 #define GL_MAX_TEXTURE_IMAGE_UNITS          0x8872
1202 #define GL_MAX_FRAGMENT_UNIFORM_VECTORS     0x8DFD
1203 #define GL_SHADER_TYPE                      0x8B4F
1204 #define GL_DELETE_STATUS                    0x8B80
1205 #define GL_LINK_STATUS                      0x8B82
1206 #define GL_VALIDATE_STATUS                  0x8B83
1207 #define GL_ATTACHED_SHADERS                 0x8B85
1208 #define GL_ACTIVE_UNIFORMS                  0x8B86
1209 #define GL_ACTIVE_UNIFORM_MAX_LENGTH        0x8B87
1210 #define GL_ACTIVE_ATTRIBUTES                0x8B89
1211 #define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH      0x8B8A
1212 #define GL_SHADING_LANGUAGE_VERSION         0x8B8C
1213 #define GL_CURRENT_PROGRAM                  0x8B8D
1214 
1215 /* StencilFunction */
1216 #define GL_NEVER                          0x0200
1217 #define GL_LESS                           0x0201
1218 #define GL_EQUAL                          0x0202
1219 #define GL_LEQUAL                         0x0203
1220 #define GL_GREATER                        0x0204
1221 #define GL_NOTEQUAL                       0x0205
1222 #define GL_GEQUAL                         0x0206
1223 #define GL_ALWAYS                         0x0207
1224 
1225 /* StencilOp */
1226 /*      GL_ZERO */
1227 #define GL_KEEP                           0x1E00
1228 #define GL_REPLACE                        0x1E01
1229 #define GL_INCR                           0x1E02
1230 #define GL_DECR                           0x1E03
1231 #define GL_INVERT                         0x150A
1232 #define GL_INCR_WRAP                      0x8507
1233 #define GL_DECR_WRAP                      0x8508
1234 
1235 /* StringName */
1236 #define GL_VENDOR                         0x1F00
1237 #define GL_RENDERER                       0x1F01
1238 #define GL_VERSION                        0x1F02
1239 #define GL_EXTENSIONS                     0x1F03
1240 
1241 /* TextureMagFilter */
1242 #define GL_NEAREST                        0x2600
1243 #define GL_LINEAR                         0x2601
1244 
1245 /* TextureMinFilter */
1246 /*      GL_NEAREST */
1247 /*      GL_LINEAR */
1248 #define GL_NEAREST_MIPMAP_NEAREST         0x2700
1249 #define GL_LINEAR_MIPMAP_NEAREST          0x2701
1250 #define GL_NEAREST_MIPMAP_LINEAR          0x2702
1251 #define GL_LINEAR_MIPMAP_LINEAR           0x2703
1252 
1253 /* TextureParameterName */
1254 #define GL_TEXTURE_MAG_FILTER             0x2800
1255 #define GL_TEXTURE_MIN_FILTER             0x2801
1256 #define GL_TEXTURE_WRAP_S                 0x2802
1257 #define GL_TEXTURE_WRAP_T                 0x2803
1258 
1259 /* TextureTarget */
1260 /*      GL_TEXTURE_2D */
1261 #define GL_TEXTURE                        0x1702
1262 
1263 #define GL_TEXTURE_CUBE_MAP               0x8513
1264 #define GL_TEXTURE_BINDING_CUBE_MAP       0x8514
1265 #define GL_TEXTURE_CUBE_MAP_POSITIVE_X    0x8515
1266 #define GL_TEXTURE_CUBE_MAP_NEGATIVE_X    0x8516
1267 #define GL_TEXTURE_CUBE_MAP_POSITIVE_Y    0x8517
1268 #define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y    0x8518
1269 #define GL_TEXTURE_CUBE_MAP_POSITIVE_Z    0x8519
1270 #define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z    0x851A
1271 #define GL_MAX_CUBE_MAP_TEXTURE_SIZE      0x851C
1272 
1273 /* TextureUnit */
1274 #define GL_TEXTURE0                       0x84C0
1275 #define GL_TEXTURE1                       0x84C1
1276 #define GL_TEXTURE2                       0x84C2
1277 #define GL_TEXTURE3                       0x84C3
1278 #define GL_TEXTURE4                       0x84C4
1279 #define GL_TEXTURE5                       0x84C5
1280 #define GL_TEXTURE6                       0x84C6
1281 #define GL_TEXTURE7                       0x84C7
1282 #define GL_TEXTURE8                       0x84C8
1283 #define GL_TEXTURE9                       0x84C9
1284 #define GL_TEXTURE10                      0x84CA
1285 #define GL_TEXTURE11                      0x84CB
1286 #define GL_TEXTURE12                      0x84CC
1287 #define GL_TEXTURE13                      0x84CD
1288 #define GL_TEXTURE14                      0x84CE
1289 #define GL_TEXTURE15                      0x84CF
1290 #define GL_TEXTURE16                      0x84D0
1291 #define GL_TEXTURE17                      0x84D1
1292 #define GL_TEXTURE18                      0x84D2
1293 #define GL_TEXTURE19                      0x84D3
1294 #define GL_TEXTURE20                      0x84D4
1295 #define GL_TEXTURE21                      0x84D5
1296 #define GL_TEXTURE22                      0x84D6
1297 #define GL_TEXTURE23                      0x84D7
1298 #define GL_TEXTURE24                      0x84D8
1299 #define GL_TEXTURE25                      0x84D9
1300 #define GL_TEXTURE26                      0x84DA
1301 #define GL_TEXTURE27                      0x84DB
1302 #define GL_TEXTURE28                      0x84DC
1303 #define GL_TEXTURE29                      0x84DD
1304 #define GL_TEXTURE30                      0x84DE
1305 #define GL_TEXTURE31                      0x84DF
1306 #define GL_ACTIVE_TEXTURE                 0x84E0
1307 
1308 /* TextureWrapMode */
1309 #define GL_REPEAT                         0x2901
1310 #define GL_CLAMP_TO_EDGE                  0x812F
1311 #define GL_MIRRORED_REPEAT                0x8370
1312 
1313 /* Uniform Types */
1314 #define GL_FLOAT_VEC2                     0x8B50
1315 #define GL_FLOAT_VEC3                     0x8B51
1316 #define GL_FLOAT_VEC4                     0x8B52
1317 #define GL_INT_VEC2                       0x8B53
1318 #define GL_INT_VEC3                       0x8B54
1319 #define GL_INT_VEC4                       0x8B55
1320 #define GL_BOOL                           0x8B56
1321 #define GL_BOOL_VEC2                      0x8B57
1322 #define GL_BOOL_VEC3                      0x8B58
1323 #define GL_BOOL_VEC4                      0x8B59
1324 #define GL_FLOAT_MAT2                     0x8B5A
1325 #define GL_FLOAT_MAT3                     0x8B5B
1326 #define GL_FLOAT_MAT4                     0x8B5C
1327 #define GL_SAMPLER_2D                     0x8B5E
1328 #define GL_SAMPLER_CUBE                   0x8B60
1329 
1330 /* Vertex Arrays */
1331 #define GL_VERTEX_ATTRIB_ARRAY_ENABLED        0x8622
1332 #define GL_VERTEX_ATTRIB_ARRAY_SIZE           0x8623
1333 #define GL_VERTEX_ATTRIB_ARRAY_STRIDE         0x8624
1334 #define GL_VERTEX_ATTRIB_ARRAY_TYPE           0x8625
1335 #define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED     0x886A
1336 #define GL_VERTEX_ATTRIB_ARRAY_POINTER        0x8645
1337 #define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F
1338 
1339 /* Read Format */
1340 #define GL_IMPLEMENTATION_COLOR_READ_TYPE   0x8B9A
1341 #define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B
1342 
1343 /* Shader Source */
1344 #define GL_COMPILE_STATUS                 0x8B81
1345 #define GL_INFO_LOG_LENGTH                0x8B84
1346 #define GL_SHADER_SOURCE_LENGTH           0x8B88
1347 #define GL_SHADER_COMPILER                0x8DFA
1348 
1349 /* Shader Binary */
1350 #define GL_SHADER_BINARY_FORMATS          0x8DF8
1351 #define GL_NUM_SHADER_BINARY_FORMATS      0x8DF9
1352 
1353 /* Shader Precision-Specified Types */
1354 #define GL_LOW_FLOAT                      0x8DF0
1355 #define GL_MEDIUM_FLOAT                   0x8DF1
1356 #define GL_HIGH_FLOAT                     0x8DF2
1357 #define GL_LOW_INT                        0x8DF3
1358 #define GL_MEDIUM_INT                     0x8DF4
1359 #define GL_HIGH_INT                       0x8DF5
1360 
1361 /* Framebuffer Object. */
1362 #define GL_FRAMEBUFFER                    0x8D40
1363 #define GL_RENDERBUFFER                   0x8D41
1364 
1365 #define GL_RGBA4                          0x8056
1366 #define GL_RGB5_A1                        0x8057
1367 #define GL_RGB565                         0x8D62
1368 #define GL_DEPTH_COMPONENT16              0x81A5
1369 #define GL_STENCIL_INDEX                  0x1901
1370 #define GL_STENCIL_INDEX8                 0x8D48
1371 
1372 #define GL_RENDERBUFFER_WIDTH             0x8D42
1373 #define GL_RENDERBUFFER_HEIGHT            0x8D43
1374 #define GL_RENDERBUFFER_INTERNAL_FORMAT   0x8D44
1375 #define GL_RENDERBUFFER_RED_SIZE          0x8D50
1376 #define GL_RENDERBUFFER_GREEN_SIZE        0x8D51
1377 #define GL_RENDERBUFFER_BLUE_SIZE         0x8D52
1378 #define GL_RENDERBUFFER_ALPHA_SIZE        0x8D53
1379 #define GL_RENDERBUFFER_DEPTH_SIZE        0x8D54
1380 #define GL_RENDERBUFFER_STENCIL_SIZE      0x8D55
1381 
1382 #define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE           0x8CD0
1383 #define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME           0x8CD1
1384 #define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL         0x8CD2
1385 #define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE 0x8CD3
1386 
1387 #define GL_COLOR_ATTACHMENT0              0x8CE0
1388 #define GL_DEPTH_ATTACHMENT               0x8D00
1389 #define GL_STENCIL_ATTACHMENT             0x8D20
1390 
1391 #define GL_NONE                           0
1392 
1393 #define GL_FRAMEBUFFER_COMPLETE                      0x8CD5
1394 #define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT         0x8CD6
1395 #define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7
1396 #define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS         0x8CD9
1397 #define GL_FRAMEBUFFER_UNSUPPORTED                   0x8CDD
1398 
1399 #define GL_FRAMEBUFFER_BINDING            0x8CA6
1400 #define GL_RENDERBUFFER_BINDING           0x8CA7
1401 #define GL_MAX_RENDERBUFFER_SIZE          0x84E8
1402 
1403 #define GL_INVALID_FRAMEBUFFER_OPERATION  0x0506
1404 
1405 #else
1406 # ifndef EVAS_GL_NO_GL_H_CHECK
1407 #  error "You may only include either Evas_GL.h OR use your native OpenGL's headers. If you use Evas to do GL, then you cannot use the native gl headers."
1408 # endif
1409 #endif
1410 
1411 #ifndef __gl2ext_h_
1412 #define __gl2ext_h_ 1
1413 
1414 #ifndef GL_KHR_blend_equation_advanced
1415 #define GL_KHR_blend_equation_advanced 1
1416 #define GL_MULTIPLY_KHR                   0x9294
1417 #define GL_SCREEN_KHR                     0x9295
1418 #define GL_OVERLAY_KHR                    0x9296
1419 #define GL_DARKEN_KHR                     0x9297
1420 #define GL_LIGHTEN_KHR                    0x9298
1421 #define GL_COLORDODGE_KHR                 0x9299
1422 #define GL_COLORBURN_KHR                  0x929A
1423 #define GL_HARDLIGHT_KHR                  0x929B
1424 #define GL_SOFTLIGHT_KHR                  0x929C
1425 #define GL_DIFFERENCE_KHR                 0x929E
1426 #define GL_EXCLUSION_KHR                  0x92A0
1427 #define GL_HSL_HUE_KHR                    0x92AD
1428 #define GL_HSL_SATURATION_KHR             0x92AE
1429 #define GL_HSL_COLOR_KHR                  0x92AF
1430 #define GL_HSL_LUMINOSITY_KHR             0x92B0
1431 #endif /* GL_KHR_blend_equation_advanced */
1432 
1433 #ifndef GL_KHR_blend_equation_advanced_coherent
1434 #define GL_KHR_blend_equation_advanced_coherent 1
1435 #define GL_BLEND_ADVANCED_COHERENT_KHR    0x9285
1436 #endif /* GL_KHR_blend_equation_advanced_coherent */
1437 
1438 #ifndef GL_KHR_context_flush_control
1439 #define GL_KHR_context_flush_control 1
1440 #define GL_CONTEXT_RELEASE_BEHAVIOR_KHR   0x82FB
1441 #define GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_KHR 0x82FC
1442 #endif /* GL_KHR_context_flush_control */
1443 
1444 #ifndef GL_KHR_debug
1445 #define GL_KHR_debug 1
1446 #define GL_SAMPLER                        0x82E6
1447 #define GL_DEBUG_OUTPUT_SYNCHRONOUS_KHR   0x8242
1448 #define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_KHR 0x8243
1449 #define GL_DEBUG_CALLBACK_FUNCTION_KHR    0x8244
1450 #define GL_DEBUG_CALLBACK_USER_PARAM_KHR  0x8245
1451 #define GL_DEBUG_SOURCE_API_KHR           0x8246
1452 #define GL_DEBUG_SOURCE_WINDOW_SYSTEM_KHR 0x8247
1453 #define GL_DEBUG_SOURCE_SHADER_COMPILER_KHR 0x8248
1454 #define GL_DEBUG_SOURCE_THIRD_PARTY_KHR   0x8249
1455 #define GL_DEBUG_SOURCE_APPLICATION_KHR   0x824A
1456 #define GL_DEBUG_SOURCE_OTHER_KHR         0x824B
1457 #define GL_DEBUG_TYPE_ERROR_KHR           0x824C
1458 #define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_KHR 0x824D
1459 #define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_KHR 0x824E
1460 #define GL_DEBUG_TYPE_PORTABILITY_KHR     0x824F
1461 #define GL_DEBUG_TYPE_PERFORMANCE_KHR     0x8250
1462 #define GL_DEBUG_TYPE_OTHER_KHR           0x8251
1463 #define GL_DEBUG_TYPE_MARKER_KHR          0x8268
1464 #define GL_DEBUG_TYPE_PUSH_GROUP_KHR      0x8269
1465 #define GL_DEBUG_TYPE_POP_GROUP_KHR       0x826A
1466 #define GL_DEBUG_SEVERITY_NOTIFICATION_KHR 0x826B
1467 #define GL_MAX_DEBUG_GROUP_STACK_DEPTH_KHR 0x826C
1468 #define GL_DEBUG_GROUP_STACK_DEPTH_KHR    0x826D
1469 #define GL_BUFFER_KHR                     0x82E0
1470 #define GL_SHADER_KHR                     0x82E1
1471 #define GL_PROGRAM_KHR                    0x82E2
1472 #define GL_VERTEX_ARRAY_KHR               0x8074
1473 #define GL_QUERY_KHR                      0x82E3
1474 #define GL_PROGRAM_PIPELINE_KHR           0x82E4
1475 #define GL_SAMPLER_KHR                    0x82E6
1476 #define GL_MAX_LABEL_LENGTH_KHR           0x82E8
1477 #define GL_MAX_DEBUG_MESSAGE_LENGTH_KHR   0x9143
1478 #define GL_MAX_DEBUG_LOGGED_MESSAGES_KHR  0x9144
1479 #define GL_DEBUG_LOGGED_MESSAGES_KHR      0x9145
1480 #define GL_DEBUG_SEVERITY_HIGH_KHR        0x9146
1481 #define GL_DEBUG_SEVERITY_MEDIUM_KHR      0x9147
1482 #define GL_DEBUG_SEVERITY_LOW_KHR         0x9148
1483 #define GL_DEBUG_OUTPUT_KHR               0x92E0
1484 #define GL_CONTEXT_FLAG_DEBUG_BIT_KHR     0x00000002
1485 #define GL_STACK_OVERFLOW_KHR             0x0503
1486 #define GL_STACK_UNDERFLOW_KHR            0x0504
1487 #endif /* GL_KHR_debug */
1488 
1489 #ifndef GL_KHR_texture_compression_astc_hdr
1490 #define GL_KHR_texture_compression_astc_hdr 1
1491 #define GL_COMPRESSED_RGBA_ASTC_4x4_KHR   0x93B0
1492 #define GL_COMPRESSED_RGBA_ASTC_5x4_KHR   0x93B1
1493 #define GL_COMPRESSED_RGBA_ASTC_5x5_KHR   0x93B2
1494 #define GL_COMPRESSED_RGBA_ASTC_6x5_KHR   0x93B3
1495 #define GL_COMPRESSED_RGBA_ASTC_6x6_KHR   0x93B4
1496 #define GL_COMPRESSED_RGBA_ASTC_8x5_KHR   0x93B5
1497 #define GL_COMPRESSED_RGBA_ASTC_8x6_KHR   0x93B6
1498 #define GL_COMPRESSED_RGBA_ASTC_8x8_KHR   0x93B7
1499 #define GL_COMPRESSED_RGBA_ASTC_10x5_KHR  0x93B8
1500 #define GL_COMPRESSED_RGBA_ASTC_10x6_KHR  0x93B9
1501 #define GL_COMPRESSED_RGBA_ASTC_10x8_KHR  0x93BA
1502 #define GL_COMPRESSED_RGBA_ASTC_10x10_KHR 0x93BB
1503 #define GL_COMPRESSED_RGBA_ASTC_12x10_KHR 0x93BC
1504 #define GL_COMPRESSED_RGBA_ASTC_12x12_KHR 0x93BD
1505 #define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR 0x93D0
1506 #define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR 0x93D1
1507 #define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR 0x93D2
1508 #define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR 0x93D3
1509 #define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR 0x93D4
1510 #define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR 0x93D5
1511 #define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR 0x93D6
1512 #define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR 0x93D7
1513 #define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR 0x93D8
1514 #define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR 0x93D9
1515 #define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR 0x93DA
1516 #define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR 0x93DB
1517 #define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR 0x93DC
1518 #define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR 0x93DD
1519 #endif /* GL_KHR_texture_compression_astc_hdr */
1520 
1521 #ifndef GL_KHR_texture_compression_astc_ldr
1522 #define GL_KHR_texture_compression_astc_ldr 1
1523 #endif /* GL_KHR_texture_compression_astc_ldr */
1524 
1525 #ifndef GL_KHR_texture_compression_astc_sliced_3d
1526 #define GL_KHR_texture_compression_astc_sliced_3d 1
1527 #endif /* GL_KHR_texture_compression_astc_sliced_3d */
1528 
1529 #ifndef GL_OES_EGL_image
1530 #define GL_OES_EGL_image 1
1531 #endif /* GL_OES_EGL_image */
1532 
1533 #ifndef GL_OES_EGL_image_external
1534 #define GL_OES_EGL_image_external 1
1535 #define GL_TEXTURE_EXTERNAL_OES           0x8D65
1536 #define GL_TEXTURE_BINDING_EXTERNAL_OES   0x8D67
1537 #define GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES 0x8D68
1538 #define GL_SAMPLER_EXTERNAL_OES           0x8D66
1539 #endif /* GL_OES_EGL_image_external */
1540 
1541 #ifndef GL_OES_EGL_image_external_essl3
1542 #define GL_OES_EGL_image_external_essl3 1
1543 #endif /* GL_OES_EGL_image_external_essl3 */
1544 
1545 #ifndef GL_OES_compressed_ETC1_RGB8_sub_texture
1546 #define GL_OES_compressed_ETC1_RGB8_sub_texture 1
1547 #endif /* GL_OES_compressed_ETC1_RGB8_sub_texture */
1548 
1549 #ifndef GL_OES_compressed_ETC1_RGB8_texture
1550 #define GL_OES_compressed_ETC1_RGB8_texture 1
1551 #define GL_ETC1_RGB8_OES                  0x8D64
1552 #endif /* GL_OES_compressed_ETC1_RGB8_texture */
1553 
1554 #ifndef GL_OES_compressed_paletted_texture
1555 #define GL_OES_compressed_paletted_texture 1
1556 #define GL_PALETTE4_RGB8_OES              0x8B90
1557 #define GL_PALETTE4_RGBA8_OES             0x8B91
1558 #define GL_PALETTE4_R5_G6_B5_OES          0x8B92
1559 #define GL_PALETTE4_RGBA4_OES             0x8B93
1560 #define GL_PALETTE4_RGB5_A1_OES           0x8B94
1561 #define GL_PALETTE8_RGB8_OES              0x8B95
1562 #define GL_PALETTE8_RGBA8_OES             0x8B96
1563 #define GL_PALETTE8_R5_G6_B5_OES          0x8B97
1564 #define GL_PALETTE8_RGBA4_OES             0x8B98
1565 #define GL_PALETTE8_RGB5_A1_OES           0x8B99
1566 #endif /* GL_OES_compressed_paletted_texture */
1567 
1568 #ifndef GL_OES_copy_image
1569 #define GL_OES_copy_image 1
1570 #endif /* GL_OES_copy_image */
1571 
1572 #ifndef GL_OES_depth24
1573 #define GL_OES_depth24 1
1574 #define GL_DEPTH_COMPONENT24_OES          0x81A6
1575 #endif /* GL_OES_depth24 */
1576 
1577 #ifndef GL_OES_depth32
1578 #define GL_OES_depth32 1
1579 #define GL_DEPTH_COMPONENT32_OES          0x81A7
1580 #endif /* GL_OES_depth32 */
1581 
1582 #ifndef GL_OES_depth_texture
1583 #define GL_OES_depth_texture 1
1584 #endif /* GL_OES_depth_texture */
1585 
1586 #ifndef GL_OES_draw_buffers_indexed
1587 #define GL_OES_draw_buffers_indexed 1
1588 #define GL_MIN                            0x8007
1589 #define GL_MAX                            0x8008
1590 #endif /* GL_OES_draw_buffers_indexed */
1591 
1592 #ifndef GL_OES_draw_elements_base_vertex
1593 #define GL_OES_draw_elements_base_vertex 1
1594 #endif /* GL_OES_draw_elements_base_vertex */
1595 
1596 #ifndef GL_OES_element_index_uint
1597 #define GL_OES_element_index_uint 1
1598 #endif /* GL_OES_element_index_uint */
1599 
1600 #ifndef GL_OES_fbo_render_mipmap
1601 #define GL_OES_fbo_render_mipmap 1
1602 #endif /* GL_OES_fbo_render_mipmap */
1603 
1604 #ifndef GL_OES_fragment_precision_high
1605 #define GL_OES_fragment_precision_high 1
1606 #endif /* GL_OES_fragment_precision_high */
1607 
1608 #ifndef GL_OES_geometry_point_size
1609 #define GL_OES_geometry_point_size 1
1610 #endif /* GL_OES_geometry_point_size */
1611 
1612 #ifndef GL_OES_geometry_shader
1613 #define GL_OES_geometry_shader 1
1614 #define GL_GEOMETRY_SHADER_OES            0x8DD9
1615 #define GL_GEOMETRY_SHADER_BIT_OES        0x00000004
1616 #define GL_GEOMETRY_LINKED_VERTICES_OUT_OES 0x8916
1617 #define GL_GEOMETRY_LINKED_INPUT_TYPE_OES 0x8917
1618 #define GL_GEOMETRY_LINKED_OUTPUT_TYPE_OES 0x8918
1619 #define GL_GEOMETRY_SHADER_INVOCATIONS_OES 0x887F
1620 #define GL_LAYER_PROVOKING_VERTEX_OES     0x825E
1621 #define GL_LINES_ADJACENCY_OES            0x000A
1622 #define GL_LINE_STRIP_ADJACENCY_OES       0x000B
1623 #define GL_TRIANGLES_ADJACENCY_OES        0x000C
1624 #define GL_TRIANGLE_STRIP_ADJACENCY_OES   0x000D
1625 #define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_OES 0x8DDF
1626 #define GL_MAX_GEOMETRY_UNIFORM_BLOCKS_OES 0x8A2C
1627 #define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_OES 0x8A32
1628 #define GL_MAX_GEOMETRY_INPUT_COMPONENTS_OES 0x9123
1629 #define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS_OES 0x9124
1630 #define GL_MAX_GEOMETRY_OUTPUT_VERTICES_OES 0x8DE0
1631 #define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_OES 0x8DE1
1632 #define GL_MAX_GEOMETRY_SHADER_INVOCATIONS_OES 0x8E5A
1633 #define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_OES 0x8C29
1634 #define GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_OES 0x92CF
1635 #define GL_MAX_GEOMETRY_ATOMIC_COUNTERS_OES 0x92D5
1636 #define GL_MAX_GEOMETRY_IMAGE_UNIFORMS_OES 0x90CD
1637 #define GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_OES 0x90D7
1638 #define GL_FIRST_VERTEX_CONVENTION_OES    0x8E4D
1639 #define GL_LAST_VERTEX_CONVENTION_OES     0x8E4E
1640 #define GL_UNDEFINED_VERTEX_OES           0x8260
1641 #define GL_PRIMITIVES_GENERATED_OES       0x8C87
1642 #define GL_FRAMEBUFFER_DEFAULT_LAYERS_OES 0x9312
1643 #define GL_MAX_FRAMEBUFFER_LAYERS_OES     0x9317
1644 #define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_OES 0x8DA8
1645 #define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_OES 0x8DA7
1646 #define GL_REFERENCED_BY_GEOMETRY_SHADER_OES 0x9309
1647 #endif /* GL_OES_geometry_shader */
1648 
1649 #ifndef GL_OES_get_program_binary
1650 #define GL_OES_get_program_binary 1
1651 #define GL_PROGRAM_BINARY_LENGTH_OES      0x8741
1652 #define GL_NUM_PROGRAM_BINARY_FORMATS_OES 0x87FE
1653 #define GL_PROGRAM_BINARY_FORMATS_OES     0x87FF
1654 #endif /* GL_OES_get_program_binary */
1655 
1656 #ifndef GL_OES_gpu_shader5
1657 #define GL_OES_gpu_shader5 1
1658 #endif /* GL_OES_gpu_shader5 */
1659 
1660 #ifndef GL_OES_mapbuffer
1661 #define GL_OES_mapbuffer 1
1662 #define GL_WRITE_ONLY_OES                 0x88B9
1663 #define GL_BUFFER_ACCESS_OES              0x88BB
1664 #define GL_BUFFER_MAPPED_OES              0x88BC
1665 #define GL_BUFFER_MAP_POINTER_OES         0x88BD
1666 #endif /* GL_OES_mapbuffer */
1667 
1668 #ifndef GL_OES_packed_depth_stencil
1669 #define GL_OES_packed_depth_stencil 1
1670 #define GL_DEPTH_STENCIL_OES              0x84F9
1671 #define GL_UNSIGNED_INT_24_8_OES          0x84FA
1672 #define GL_DEPTH24_STENCIL8_OES           0x88F0
1673 #endif /* GL_OES_packed_depth_stencil */
1674 
1675 #ifndef GL_OES_primitive_bounding_box
1676 #define GL_OES_primitive_bounding_box 1
1677 #define GL_PRIMITIVE_BOUNDING_BOX_OES     0x92BE
1678 #endif /* GL_OES_primitive_bounding_box */
1679 
1680 #ifndef GL_OES_required_internalformat
1681 #define GL_OES_required_internalformat 1
1682 #define GL_ALPHA8_OES                     0x803C
1683 #define GL_DEPTH_COMPONENT16_OES          0x81A5
1684 #define GL_LUMINANCE4_ALPHA4_OES          0x8043
1685 #define GL_LUMINANCE8_ALPHA8_OES          0x8045
1686 #define GL_LUMINANCE8_OES                 0x8040
1687 #define GL_RGBA4_OES                      0x8056
1688 #define GL_RGB5_A1_OES                    0x8057
1689 #define GL_RGB565_OES                     0x8D62
1690 #define GL_RGB8_OES                       0x8051
1691 #define GL_RGBA8_OES                      0x8058
1692 #define GL_RGB10_EXT                      0x8052
1693 #define GL_RGB10_A2_EXT                   0x8059
1694 #endif /* GL_OES_required_internalformat */
1695 
1696 #ifndef GL_OES_rgb8_rgba8
1697 #define GL_OES_rgb8_rgba8 1
1698 #endif /* GL_OES_rgb8_rgba8 */
1699 
1700 #ifndef GL_OES_sample_shading
1701 #define GL_OES_sample_shading 1
1702 #define GL_SAMPLE_SHADING_OES             0x8C36
1703 #define GL_MIN_SAMPLE_SHADING_VALUE_OES   0x8C37
1704 #endif /* GL_OES_sample_shading */
1705 
1706 #ifndef GL_OES_sample_variables
1707 #define GL_OES_sample_variables 1
1708 #endif /* GL_OES_sample_variables */
1709 
1710 #ifndef GL_OES_shader_image_atomic
1711 #define GL_OES_shader_image_atomic 1
1712 #endif /* GL_OES_shader_image_atomic */
1713 
1714 #ifndef GL_OES_shader_io_blocks
1715 #define GL_OES_shader_io_blocks 1
1716 #endif /* GL_OES_shader_io_blocks */
1717 
1718 #ifndef GL_OES_shader_multisample_interpolation
1719 #define GL_OES_shader_multisample_interpolation 1
1720 #define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_OES 0x8E5B
1721 #define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_OES 0x8E5C
1722 #define GL_FRAGMENT_INTERPOLATION_OFFSET_BITS_OES 0x8E5D
1723 #endif /* GL_OES_shader_multisample_interpolation */
1724 
1725 #ifndef GL_OES_standard_derivatives
1726 #define GL_OES_standard_derivatives 1
1727 #define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES 0x8B8B
1728 #endif /* GL_OES_standard_derivatives */
1729 
1730 #ifndef GL_OES_stencil1
1731 #define GL_OES_stencil1 1
1732 #define GL_STENCIL_INDEX1_OES             0x8D46
1733 #endif /* GL_OES_stencil1 */
1734 
1735 #ifndef GL_OES_stencil4
1736 #define GL_OES_stencil4 1
1737 #define GL_STENCIL_INDEX4_OES             0x8D47
1738 #endif /* GL_OES_stencil4 */
1739 
1740 #ifndef GL_OES_surfaceless_context
1741 #define GL_OES_surfaceless_context 1
1742 #define GL_FRAMEBUFFER_UNDEFINED_OES      0x8219
1743 #endif /* GL_OES_surfaceless_context */
1744 
1745 #ifndef GL_OES_tessellation_point_size
1746 #define GL_OES_tessellation_point_size 1
1747 #endif /* GL_OES_tessellation_point_size */
1748 
1749 #ifndef GL_OES_tessellation_shader
1750 #define GL_OES_tessellation_shader 1
1751 #define GL_PATCHES_OES                    0x000E
1752 #define GL_PATCH_VERTICES_OES             0x8E72
1753 #define GL_TESS_CONTROL_OUTPUT_VERTICES_OES 0x8E75
1754 #define GL_TESS_GEN_MODE_OES              0x8E76
1755 #define GL_TESS_GEN_SPACING_OES           0x8E77
1756 #define GL_TESS_GEN_VERTEX_ORDER_OES      0x8E78
1757 #define GL_TESS_GEN_POINT_MODE_OES        0x8E79
1758 #define GL_ISOLINES_OES                   0x8E7A
1759 #define GL_QUADS_OES                      0x0007
1760 #define GL_FRACTIONAL_ODD_OES             0x8E7B
1761 #define GL_FRACTIONAL_EVEN_OES            0x8E7C
1762 #define GL_MAX_PATCH_VERTICES_OES         0x8E7D
1763 #define GL_MAX_TESS_GEN_LEVEL_OES         0x8E7E
1764 #define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS_OES 0x8E7F
1765 #define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS_OES 0x8E80
1766 #define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS_OES 0x8E81
1767 #define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS_OES 0x8E82
1768 #define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS_OES 0x8E83
1769 #define GL_MAX_TESS_PATCH_COMPONENTS_OES  0x8E84
1770 #define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS_OES 0x8E85
1771 #define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS_OES 0x8E86
1772 #define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS_OES 0x8E89
1773 #define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS_OES 0x8E8A
1774 #define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS_OES 0x886C
1775 #define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS_OES 0x886D
1776 #define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS_OES 0x8E1E
1777 #define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS_OES 0x8E1F
1778 #define GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS_OES 0x92CD
1779 #define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS_OES 0x92CE
1780 #define GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS_OES 0x92D3
1781 #define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS_OES 0x92D4
1782 #define GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS_OES 0x90CB
1783 #define GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS_OES 0x90CC
1784 #define GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS_OES 0x90D8
1785 #define GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS_OES 0x90D9
1786 #define GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED_OES 0x8221
1787 #define GL_IS_PER_PATCH_OES               0x92E7
1788 #define GL_REFERENCED_BY_TESS_CONTROL_SHADER_OES 0x9307
1789 #define GL_REFERENCED_BY_TESS_EVALUATION_SHADER_OES 0x9308
1790 #define GL_TESS_CONTROL_SHADER_OES        0x8E88
1791 #define GL_TESS_EVALUATION_SHADER_OES     0x8E87
1792 #define GL_TESS_CONTROL_SHADER_BIT_OES    0x00000008
1793 #define GL_TESS_EVALUATION_SHADER_BIT_OES 0x00000010
1794 #endif /* GL_OES_tessellation_shader */
1795 
1796 #ifndef GL_OES_texture_3D
1797 #define GL_OES_texture_3D 1
1798 #define GL_TEXTURE_WRAP_R_OES             0x8072
1799 #define GL_TEXTURE_3D_OES                 0x806F
1800 #define GL_TEXTURE_BINDING_3D_OES         0x806A
1801 #define GL_MAX_3D_TEXTURE_SIZE_OES        0x8073
1802 #define GL_SAMPLER_3D_OES                 0x8B5F
1803 #define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES 0x8CD4
1804 #endif /* GL_OES_texture_3D */
1805 
1806 #ifndef GL_OES_texture_border_clamp
1807 #define GL_OES_texture_border_clamp 1
1808 #define GL_TEXTURE_BORDER_COLOR_OES       0x1004
1809 #define GL_CLAMP_TO_BORDER_OES            0x812D
1810 #endif /* GL_OES_texture_border_clamp */
1811 
1812 #ifndef GL_OES_texture_buffer
1813 #define GL_OES_texture_buffer 1
1814 #define GL_TEXTURE_BUFFER_OES             0x8C2A
1815 #define GL_TEXTURE_BUFFER_BINDING_OES     0x8C2A
1816 #define GL_MAX_TEXTURE_BUFFER_SIZE_OES    0x8C2B
1817 #define GL_TEXTURE_BINDING_BUFFER_OES     0x8C2C
1818 #define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_OES 0x8C2D
1819 #define GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT_OES 0x919F
1820 #define GL_SAMPLER_BUFFER_OES             0x8DC2
1821 #define GL_INT_SAMPLER_BUFFER_OES         0x8DD0
1822 #define GL_UNSIGNED_INT_SAMPLER_BUFFER_OES 0x8DD8
1823 #define GL_IMAGE_BUFFER_OES               0x9051
1824 #define GL_INT_IMAGE_BUFFER_OES           0x905C
1825 #define GL_UNSIGNED_INT_IMAGE_BUFFER_OES  0x9067
1826 #define GL_TEXTURE_BUFFER_OFFSET_OES      0x919D
1827 #define GL_TEXTURE_BUFFER_SIZE_OES        0x919E
1828 #endif /* GL_OES_texture_buffer */
1829 
1830 #ifndef GL_OES_texture_compression_astc
1831 #define GL_OES_texture_compression_astc 1
1832 #define GL_COMPRESSED_RGBA_ASTC_3x3x3_OES 0x93C0
1833 #define GL_COMPRESSED_RGBA_ASTC_4x3x3_OES 0x93C1
1834 #define GL_COMPRESSED_RGBA_ASTC_4x4x3_OES 0x93C2
1835 #define GL_COMPRESSED_RGBA_ASTC_4x4x4_OES 0x93C3
1836 #define GL_COMPRESSED_RGBA_ASTC_5x4x4_OES 0x93C4
1837 #define GL_COMPRESSED_RGBA_ASTC_5x5x4_OES 0x93C5
1838 #define GL_COMPRESSED_RGBA_ASTC_5x5x5_OES 0x93C6
1839 #define GL_COMPRESSED_RGBA_ASTC_6x5x5_OES 0x93C7
1840 #define GL_COMPRESSED_RGBA_ASTC_6x6x5_OES 0x93C8
1841 #define GL_COMPRESSED_RGBA_ASTC_6x6x6_OES 0x93C9
1842 #define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES 0x93E0
1843 #define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3_OES 0x93E1
1844 #define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3_OES 0x93E2
1845 #define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4_OES 0x93E3
1846 #define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4_OES 0x93E4
1847 #define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4_OES 0x93E5
1848 #define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5_OES 0x93E6
1849 #define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5_OES 0x93E7
1850 #define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES 0x93E8
1851 #define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES 0x93E9
1852 #endif /* GL_OES_texture_compression_astc */
1853 
1854 #ifndef GL_OES_texture_cube_map_array
1855 #define GL_OES_texture_cube_map_array 1
1856 #define GL_TEXTURE_CUBE_MAP_ARRAY_OES     0x9009
1857 #define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_OES 0x900A
1858 #define GL_SAMPLER_CUBE_MAP_ARRAY_OES     0x900C
1859 #define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_OES 0x900D
1860 #define GL_INT_SAMPLER_CUBE_MAP_ARRAY_OES 0x900E
1861 #define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_OES 0x900F
1862 #define GL_IMAGE_CUBE_MAP_ARRAY_OES       0x9054
1863 #define GL_INT_IMAGE_CUBE_MAP_ARRAY_OES   0x905F
1864 #define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_OES 0x906A
1865 #endif /* GL_OES_texture_cube_map_array */
1866 
1867 #ifndef GL_OES_texture_float
1868 #define GL_OES_texture_float 1
1869 #endif /* GL_OES_texture_float */
1870 
1871 #ifndef GL_OES_texture_float_linear
1872 #define GL_OES_texture_float_linear 1
1873 #endif /* GL_OES_texture_float_linear */
1874 
1875 #ifndef GL_OES_texture_half_float
1876 #define GL_OES_texture_half_float 1
1877 #define GL_HALF_FLOAT_OES                 0x8D61
1878 #endif /* GL_OES_texture_half_float */
1879 
1880 #ifndef GL_OES_texture_half_float_linear
1881 #define GL_OES_texture_half_float_linear 1
1882 #endif /* GL_OES_texture_half_float_linear */
1883 
1884 #ifndef GL_OES_texture_npot
1885 #define GL_OES_texture_npot 1
1886 #endif /* GL_OES_texture_npot */
1887 
1888 #ifndef GL_OES_texture_stencil8
1889 #define GL_OES_texture_stencil8 1
1890 #define GL_STENCIL_INDEX_OES              0x1901
1891 #define GL_STENCIL_INDEX8_OES             0x8D48
1892 #endif /* GL_OES_texture_stencil8 */
1893 
1894 #ifndef GL_OES_texture_storage_multisample_2d_array
1895 #define GL_OES_texture_storage_multisample_2d_array 1
1896 #define GL_TEXTURE_2D_MULTISAMPLE_ARRAY_OES 0x9102
1897 #define GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY_OES 0x9105
1898 #define GL_SAMPLER_2D_MULTISAMPLE_ARRAY_OES 0x910B
1899 #define GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES 0x910C
1900 #define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES 0x910D
1901 #endif /* GL_OES_texture_storage_multisample_2d_array */
1902 
1903 #ifndef GL_OES_texture_view
1904 #define GL_OES_texture_view 1
1905 #define GL_TEXTURE_VIEW_MIN_LEVEL_OES     0x82DB
1906 #define GL_TEXTURE_VIEW_NUM_LEVELS_OES    0x82DC
1907 #define GL_TEXTURE_VIEW_MIN_LAYER_OES     0x82DD
1908 #define GL_TEXTURE_VIEW_NUM_LAYERS_OES    0x82DE
1909 #define GL_TEXTURE_IMMUTABLE_LEVELS       0x82DF
1910 #endif /* GL_OES_texture_view */
1911 
1912 #ifndef GL_OES_vertex_array_object
1913 #define GL_OES_vertex_array_object 1
1914 #define GL_VERTEX_ARRAY_BINDING_OES       0x85B5
1915 #endif /* GL_OES_vertex_array_object */
1916 
1917 #ifndef GL_OES_vertex_half_float
1918 #define GL_OES_vertex_half_float 1
1919 #endif /* GL_OES_vertex_half_float */
1920 
1921 #ifndef GL_OES_vertex_type_10_10_10_2
1922 #define GL_OES_vertex_type_10_10_10_2 1
1923 #define GL_UNSIGNED_INT_10_10_10_2_OES    0x8DF6
1924 #define GL_INT_10_10_10_2_OES             0x8DF7
1925 #endif /* GL_OES_vertex_type_10_10_10_2 */
1926 
1927 #ifndef GL_AMD_compressed_3DC_texture
1928 #define GL_AMD_compressed_3DC_texture 1
1929 #define GL_3DC_X_AMD                      0x87F9
1930 #define GL_3DC_XY_AMD                     0x87FA
1931 #endif /* GL_AMD_compressed_3DC_texture */
1932 
1933 #ifndef GL_AMD_compressed_ATC_texture
1934 #define GL_AMD_compressed_ATC_texture 1
1935 #define GL_ATC_RGB_AMD                    0x8C92
1936 #define GL_ATC_RGBA_EXPLICIT_ALPHA_AMD    0x8C93
1937 #define GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD 0x87EE
1938 #endif /* GL_AMD_compressed_ATC_texture */
1939 
1940 #ifndef GL_AMD_performance_monitor
1941 #define GL_AMD_performance_monitor 1
1942 #define GL_COUNTER_TYPE_AMD               0x8BC0
1943 #define GL_COUNTER_RANGE_AMD              0x8BC1
1944 #define GL_UNSIGNED_INT64_AMD             0x8BC2
1945 #define GL_PERCENTAGE_AMD                 0x8BC3
1946 #define GL_PERFMON_RESULT_AVAILABLE_AMD   0x8BC4
1947 #define GL_PERFMON_RESULT_SIZE_AMD        0x8BC5
1948 #define GL_PERFMON_RESULT_AMD             0x8BC6
1949 #endif /* GL_AMD_performance_monitor */
1950 
1951 #ifndef GL_AMD_program_binary_Z400
1952 #define GL_AMD_program_binary_Z400 1
1953 #define GL_Z400_BINARY_AMD                0x8740
1954 #endif /* GL_AMD_program_binary_Z400 */
1955 
1956 #ifndef GL_ANDROID_extension_pack_es31a
1957 #define GL_ANDROID_extension_pack_es31a 1
1958 #endif /* GL_ANDROID_extension_pack_es31a */
1959 
1960 #ifndef GL_ANGLE_depth_texture
1961 #define GL_ANGLE_depth_texture 1
1962 #endif /* GL_ANGLE_depth_texture */
1963 
1964 #ifndef GL_ANGLE_framebuffer_blit
1965 #define GL_ANGLE_framebuffer_blit 1
1966 #define GL_READ_FRAMEBUFFER_ANGLE         0x8CA8
1967 #define GL_DRAW_FRAMEBUFFER_ANGLE         0x8CA9
1968 #define GL_DRAW_FRAMEBUFFER_BINDING_ANGLE 0x8CA6
1969 #define GL_READ_FRAMEBUFFER_BINDING_ANGLE 0x8CAA
1970 #endif /* GL_ANGLE_framebuffer_blit */
1971 
1972 #ifndef GL_ANGLE_framebuffer_multisample
1973 #define GL_ANGLE_framebuffer_multisample 1
1974 #define GL_RENDERBUFFER_SAMPLES_ANGLE     0x8CAB
1975 #define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_ANGLE 0x8D56
1976 #define GL_MAX_SAMPLES_ANGLE              0x8D57
1977 #endif /* GL_ANGLE_framebuffer_multisample */
1978 
1979 #ifndef GL_ANGLE_instanced_arrays
1980 #define GL_ANGLE_instanced_arrays 1
1981 #define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE 0x88FE
1982 #endif /* GL_ANGLE_instanced_arrays */
1983 
1984 #ifndef GL_ANGLE_pack_reverse_row_order
1985 #define GL_ANGLE_pack_reverse_row_order 1
1986 #define GL_PACK_REVERSE_ROW_ORDER_ANGLE   0x93A4
1987 #endif /* GL_ANGLE_pack_reverse_row_order */
1988 
1989 #ifndef GL_ANGLE_program_binary
1990 #define GL_ANGLE_program_binary 1
1991 #define GL_PROGRAM_BINARY_ANGLE           0x93A6
1992 #endif /* GL_ANGLE_program_binary */
1993 
1994 #ifndef GL_ANGLE_texture_compression_dxt3
1995 #define GL_ANGLE_texture_compression_dxt3 1
1996 #define GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE 0x83F2
1997 #endif /* GL_ANGLE_texture_compression_dxt3 */
1998 
1999 #ifndef GL_ANGLE_texture_compression_dxt5
2000 #define GL_ANGLE_texture_compression_dxt5 1
2001 #define GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE 0x83F3
2002 #endif /* GL_ANGLE_texture_compression_dxt5 */
2003 
2004 #ifndef GL_ANGLE_texture_usage
2005 #define GL_ANGLE_texture_usage 1
2006 #define GL_TEXTURE_USAGE_ANGLE            0x93A2
2007 #define GL_FRAMEBUFFER_ATTACHMENT_ANGLE   0x93A3
2008 #endif /* GL_ANGLE_texture_usage */
2009 
2010 #ifndef GL_ANGLE_translated_shader_source
2011 #define GL_ANGLE_translated_shader_source 1
2012 #define GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE 0x93A0
2013 #endif /* GL_ANGLE_translated_shader_source */
2014 
2015 #ifndef GL_APPLE_clip_distance
2016 #define GL_APPLE_clip_distance 1
2017 #define GL_MAX_CLIP_DISTANCES_APPLE       0x0D32
2018 #define GL_CLIP_DISTANCE0_APPLE           0x3000
2019 #define GL_CLIP_DISTANCE1_APPLE           0x3001
2020 #define GL_CLIP_DISTANCE2_APPLE           0x3002
2021 #define GL_CLIP_DISTANCE3_APPLE           0x3003
2022 #define GL_CLIP_DISTANCE4_APPLE           0x3004
2023 #define GL_CLIP_DISTANCE5_APPLE           0x3005
2024 #define GL_CLIP_DISTANCE6_APPLE           0x3006
2025 #define GL_CLIP_DISTANCE7_APPLE           0x3007
2026 #endif /* GL_APPLE_clip_distance */
2027 
2028 #ifndef GL_APPLE_color_buffer_packed_float
2029 #define GL_APPLE_color_buffer_packed_float 1
2030 #endif /* GL_APPLE_color_buffer_packed_float */
2031 
2032 #ifndef GL_APPLE_copy_texture_levels
2033 #define GL_APPLE_copy_texture_levels 1
2034 #endif /* GL_APPLE_copy_texture_levels */
2035 
2036 #ifndef GL_APPLE_framebuffer_multisample
2037 #define GL_APPLE_framebuffer_multisample 1
2038 #define GL_RENDERBUFFER_SAMPLES_APPLE     0x8CAB
2039 #define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_APPLE 0x8D56
2040 #define GL_MAX_SAMPLES_APPLE              0x8D57
2041 #define GL_READ_FRAMEBUFFER_APPLE         0x8CA8
2042 #define GL_DRAW_FRAMEBUFFER_APPLE         0x8CA9
2043 #define GL_DRAW_FRAMEBUFFER_BINDING_APPLE 0x8CA6
2044 #define GL_READ_FRAMEBUFFER_BINDING_APPLE 0x8CAA
2045 #endif /* GL_APPLE_framebuffer_multisample */
2046 
2047 #ifndef GL_APPLE_rgb_422
2048 #define GL_APPLE_rgb_422 1
2049 #define GL_RGB_422_APPLE                  0x8A1F
2050 #define GL_UNSIGNED_SHORT_8_8_APPLE       0x85BA
2051 #define GL_UNSIGNED_SHORT_8_8_REV_APPLE   0x85BB
2052 #define GL_RGB_RAW_422_APPLE              0x8A51
2053 #endif /* GL_APPLE_rgb_422 */
2054 
2055 #ifndef GL_APPLE_sync
2056 #define GL_APPLE_sync 1
2057 #define GL_SYNC_OBJECT_APPLE              0x8A53
2058 #define GL_MAX_SERVER_WAIT_TIMEOUT_APPLE  0x9111
2059 #define GL_OBJECT_TYPE_APPLE              0x9112
2060 #define GL_SYNC_CONDITION_APPLE           0x9113
2061 #define GL_SYNC_STATUS_APPLE              0x9114
2062 #define GL_SYNC_FLAGS_APPLE               0x9115
2063 #define GL_SYNC_FENCE_APPLE               0x9116
2064 #define GL_SYNC_GPU_COMMANDS_COMPLETE_APPLE 0x9117
2065 #define GL_UNSIGNALED_APPLE               0x9118
2066 #define GL_SIGNALED_APPLE                 0x9119
2067 #define GL_ALREADY_SIGNALED_APPLE         0x911A
2068 #define GL_TIMEOUT_EXPIRED_APPLE          0x911B
2069 #define GL_CONDITION_SATISFIED_APPLE      0x911C
2070 #define GL_WAIT_FAILED_APPLE              0x911D
2071 #define GL_SYNC_FLUSH_COMMANDS_BIT_APPLE  0x00000001
2072 #define GL_TIMEOUT_IGNORED_APPLE          0xFFFFFFFFFFFFFFFFull
2073 #endif /* GL_APPLE_sync */
2074 
2075 #ifndef GL_APPLE_texture_format_BGRA8888
2076 #define GL_APPLE_texture_format_BGRA8888 1
2077 #define GL_BGRA_EXT                       0x80E1
2078 #define GL_BGRA8_EXT                      0x93A1
2079 #endif /* GL_APPLE_texture_format_BGRA8888 */
2080 
2081 #ifndef GL_APPLE_texture_max_level
2082 #define GL_APPLE_texture_max_level 1
2083 #define GL_TEXTURE_MAX_LEVEL_APPLE        0x813D
2084 #endif /* GL_APPLE_texture_max_level */
2085 
2086 #ifndef GL_APPLE_texture_packed_float
2087 #define GL_APPLE_texture_packed_float 1
2088 #define GL_UNSIGNED_INT_10F_11F_11F_REV_APPLE 0x8C3B
2089 #define GL_UNSIGNED_INT_5_9_9_9_REV_APPLE 0x8C3E
2090 #define GL_R11F_G11F_B10F_APPLE           0x8C3A
2091 #define GL_RGB9_E5_APPLE                  0x8C3D
2092 #endif /* GL_APPLE_texture_packed_float */
2093 
2094 #ifndef GL_ARM_mali_program_binary
2095 #define GL_ARM_mali_program_binary 1
2096 #define GL_MALI_PROGRAM_BINARY_ARM        0x8F61
2097 #endif /* GL_ARM_mali_program_binary */
2098 
2099 #ifndef GL_ARM_mali_shader_binary
2100 #define GL_ARM_mali_shader_binary 1
2101 #define GL_MALI_SHADER_BINARY_ARM         0x8F60
2102 #endif /* GL_ARM_mali_shader_binary */
2103 
2104 #ifndef GL_ARM_rgba8
2105 #define GL_ARM_rgba8 1
2106 #endif /* GL_ARM_rgba8 */
2107 
2108 #ifndef GL_ARM_shader_framebuffer_fetch
2109 #define GL_ARM_shader_framebuffer_fetch 1
2110 #define GL_FETCH_PER_SAMPLE_ARM           0x8F65
2111 #define GL_FRAGMENT_SHADER_FRAMEBUFFER_FETCH_MRT_ARM 0x8F66
2112 #endif /* GL_ARM_shader_framebuffer_fetch */
2113 
2114 #ifndef GL_ARM_shader_framebuffer_fetch_depth_stencil
2115 #define GL_ARM_shader_framebuffer_fetch_depth_stencil 1
2116 #endif /* GL_ARM_shader_framebuffer_fetch_depth_stencil */
2117 
2118 #ifndef GL_DMP_program_binary
2119 #define GL_DMP_program_binary 1
2120 #define GL_SMAPHS30_PROGRAM_BINARY_DMP    0x9251
2121 #define GL_SMAPHS_PROGRAM_BINARY_DMP      0x9252
2122 #define GL_DMP_PROGRAM_BINARY_DMP         0x9253
2123 #endif /* GL_DMP_program_binary */
2124 
2125 #ifndef GL_DMP_shader_binary
2126 #define GL_DMP_shader_binary 1
2127 #define GL_SHADER_BINARY_DMP              0x9250
2128 #endif /* GL_DMP_shader_binary */
2129 
2130 #ifndef GL_EXT_YUV_target
2131 #define GL_EXT_YUV_target 1
2132 #define GL_SAMPLER_EXTERNAL_2D_Y2Y_EXT    0x8BE7
2133 #endif /* GL_EXT_YUV_target */
2134 
2135 #ifndef GL_EXT_base_instance
2136 #define GL_EXT_base_instance 1
2137 #endif /* GL_EXT_base_instance */
2138 
2139 #ifndef GL_EXT_blend_func_extended
2140 #define GL_EXT_blend_func_extended 1
2141 #define GL_SRC1_COLOR_EXT                 0x88F9
2142 #define GL_SRC1_ALPHA_EXT                 0x8589
2143 #define GL_ONE_MINUS_SRC1_COLOR_EXT       0x88FA
2144 #define GL_ONE_MINUS_SRC1_ALPHA_EXT       0x88FB
2145 #define GL_SRC_ALPHA_SATURATE_EXT         0x0308
2146 #define GL_LOCATION_INDEX_EXT             0x930F
2147 #define GL_MAX_DUAL_SOURCE_DRAW_BUFFERS_EXT 0x88FC
2148 #endif /* GL_EXT_blend_func_extended */
2149 
2150 #ifndef GL_EXT_blend_minmax
2151 #define GL_EXT_blend_minmax 1
2152 #define GL_MIN_EXT                        0x8007
2153 #define GL_MAX_EXT                        0x8008
2154 #endif /* GL_EXT_blend_minmax */
2155 
2156 #ifndef GL_EXT_buffer_storage
2157 #define GL_EXT_buffer_storage 1
2158 #define GL_MAP_READ_BIT                   0x0001
2159 #define GL_MAP_WRITE_BIT                  0x0002
2160 #define GL_MAP_PERSISTENT_BIT_EXT         0x0040
2161 #define GL_MAP_COHERENT_BIT_EXT           0x0080
2162 #define GL_DYNAMIC_STORAGE_BIT_EXT        0x0100
2163 #define GL_CLIENT_STORAGE_BIT_EXT         0x0200
2164 #define GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT_EXT 0x00004000
2165 #define GL_BUFFER_IMMUTABLE_STORAGE_EXT   0x821F
2166 #define GL_BUFFER_STORAGE_FLAGS_EXT       0x8220
2167 #endif /* GL_EXT_buffer_storage */
2168 
2169 #ifndef GL_EXT_color_buffer_float
2170 #define GL_EXT_color_buffer_float 1
2171 #endif /* GL_EXT_color_buffer_float */
2172 
2173 #ifndef GL_EXT_color_buffer_half_float
2174 #define GL_EXT_color_buffer_half_float 1
2175 #define GL_RGBA16F_EXT                    0x881A
2176 #define GL_RGB16F_EXT                     0x881B
2177 #define GL_RG16F_EXT                      0x822F
2178 #define GL_R16F_EXT                       0x822D
2179 #define GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT 0x8211
2180 #define GL_UNSIGNED_NORMALIZED_EXT        0x8C17
2181 #endif /* GL_EXT_color_buffer_half_float */
2182 
2183 #ifndef GL_EXT_copy_image
2184 #define GL_EXT_copy_image 1
2185 #endif /* GL_EXT_copy_image */
2186 
2187 #ifndef GL_EXT_debug_label
2188 #define GL_EXT_debug_label 1
2189 #define GL_PROGRAM_PIPELINE_OBJECT_EXT    0x8A4F
2190 #define GL_PROGRAM_OBJECT_EXT             0x8B40
2191 #define GL_SHADER_OBJECT_EXT              0x8B48
2192 #define GL_BUFFER_OBJECT_EXT              0x9151
2193 #define GL_QUERY_OBJECT_EXT               0x9153
2194 #define GL_VERTEX_ARRAY_OBJECT_EXT        0x9154
2195 #define GL_TRANSFORM_FEEDBACK             0x8E22
2196 #endif /* GL_EXT_debug_label */
2197 
2198 #ifndef GL_EXT_debug_marker
2199 #define GL_EXT_debug_marker 1
2200 #endif /* GL_EXT_debug_marker */
2201 
2202 #ifndef GL_EXT_discard_framebuffer
2203 #define GL_EXT_discard_framebuffer 1
2204 #define GL_COLOR_EXT                      0x1800
2205 #define GL_DEPTH_EXT                      0x1801
2206 #define GL_STENCIL_EXT                    0x1802
2207 #endif /* GL_EXT_discard_framebuffer */
2208 
2209 #ifndef GL_EXT_disjoint_timer_query
2210 #define GL_EXT_disjoint_timer_query 1
2211 #define GL_QUERY_COUNTER_BITS_EXT         0x8864
2212 #define GL_CURRENT_QUERY_EXT              0x8865
2213 #define GL_QUERY_RESULT_EXT               0x8866
2214 #define GL_QUERY_RESULT_AVAILABLE_EXT     0x8867
2215 #define GL_TIME_ELAPSED_EXT               0x88BF
2216 #define GL_TIMESTAMP_EXT                  0x8E28
2217 #define GL_GPU_DISJOINT_EXT               0x8FBB
2218 #endif /* GL_EXT_disjoint_timer_query */
2219 
2220 #ifndef GL_EXT_draw_buffers
2221 #define GL_EXT_draw_buffers 1
2222 #define GL_MAX_COLOR_ATTACHMENTS_EXT      0x8CDF
2223 #define GL_MAX_DRAW_BUFFERS_EXT           0x8824
2224 #define GL_DRAW_BUFFER0_EXT               0x8825
2225 #define GL_DRAW_BUFFER1_EXT               0x8826
2226 #define GL_DRAW_BUFFER2_EXT               0x8827
2227 #define GL_DRAW_BUFFER3_EXT               0x8828
2228 #define GL_DRAW_BUFFER4_EXT               0x8829
2229 #define GL_DRAW_BUFFER5_EXT               0x882A
2230 #define GL_DRAW_BUFFER6_EXT               0x882B
2231 #define GL_DRAW_BUFFER7_EXT               0x882C
2232 #define GL_DRAW_BUFFER8_EXT               0x882D
2233 #define GL_DRAW_BUFFER9_EXT               0x882E
2234 #define GL_DRAW_BUFFER10_EXT              0x882F
2235 #define GL_DRAW_BUFFER11_EXT              0x8830
2236 #define GL_DRAW_BUFFER12_EXT              0x8831
2237 #define GL_DRAW_BUFFER13_EXT              0x8832
2238 #define GL_DRAW_BUFFER14_EXT              0x8833
2239 #define GL_DRAW_BUFFER15_EXT              0x8834
2240 #define GL_COLOR_ATTACHMENT0_EXT          0x8CE0
2241 #define GL_COLOR_ATTACHMENT1_EXT          0x8CE1
2242 #define GL_COLOR_ATTACHMENT2_EXT          0x8CE2
2243 #define GL_COLOR_ATTACHMENT3_EXT          0x8CE3
2244 #define GL_COLOR_ATTACHMENT4_EXT          0x8CE4
2245 #define GL_COLOR_ATTACHMENT5_EXT          0x8CE5
2246 #define GL_COLOR_ATTACHMENT6_EXT          0x8CE6
2247 #define GL_COLOR_ATTACHMENT7_EXT          0x8CE7
2248 #define GL_COLOR_ATTACHMENT8_EXT          0x8CE8
2249 #define GL_COLOR_ATTACHMENT9_EXT          0x8CE9
2250 #define GL_COLOR_ATTACHMENT10_EXT         0x8CEA
2251 #define GL_COLOR_ATTACHMENT11_EXT         0x8CEB
2252 #define GL_COLOR_ATTACHMENT12_EXT         0x8CEC
2253 #define GL_COLOR_ATTACHMENT13_EXT         0x8CED
2254 #define GL_COLOR_ATTACHMENT14_EXT         0x8CEE
2255 #define GL_COLOR_ATTACHMENT15_EXT         0x8CEF
2256 #endif /* GL_EXT_draw_buffers */
2257 
2258 #ifndef GL_EXT_draw_buffers_indexed
2259 #define GL_EXT_draw_buffers_indexed 1
2260 #endif /* GL_EXT_draw_buffers_indexed */
2261 
2262 #ifndef GL_EXT_draw_elements_base_vertex
2263 #define GL_EXT_draw_elements_base_vertex 1
2264 #endif /* GL_EXT_draw_elements_base_vertex */
2265 
2266 #ifndef GL_EXT_draw_instanced
2267 #define GL_EXT_draw_instanced 1
2268 #endif /* GL_EXT_draw_instanced */
2269 
2270 #ifndef GL_EXT_float_blend
2271 #define GL_EXT_float_blend 1
2272 #endif /* GL_EXT_float_blend */
2273 
2274 #ifndef GL_EXT_geometry_point_size
2275 #define GL_EXT_geometry_point_size 1
2276 #endif /* GL_EXT_geometry_point_size */
2277 
2278 #ifndef GL_EXT_geometry_shader
2279 #define GL_EXT_geometry_shader 1
2280 #define GL_GEOMETRY_SHADER_EXT            0x8DD9
2281 #define GL_GEOMETRY_SHADER_BIT_EXT        0x00000004
2282 #define GL_GEOMETRY_LINKED_VERTICES_OUT_EXT 0x8916
2283 #define GL_GEOMETRY_LINKED_INPUT_TYPE_EXT 0x8917
2284 #define GL_GEOMETRY_LINKED_OUTPUT_TYPE_EXT 0x8918
2285 #define GL_GEOMETRY_SHADER_INVOCATIONS_EXT 0x887F
2286 #define GL_LAYER_PROVOKING_VERTEX_EXT     0x825E
2287 #define GL_LINES_ADJACENCY_EXT            0x000A
2288 #define GL_LINE_STRIP_ADJACENCY_EXT       0x000B
2289 #define GL_TRIANGLES_ADJACENCY_EXT        0x000C
2290 #define GL_TRIANGLE_STRIP_ADJACENCY_EXT   0x000D
2291 #define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8DDF
2292 #define GL_MAX_GEOMETRY_UNIFORM_BLOCKS_EXT 0x8A2C
2293 #define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8A32
2294 #define GL_MAX_GEOMETRY_INPUT_COMPONENTS_EXT 0x9123
2295 #define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS_EXT 0x9124
2296 #define GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT 0x8DE0
2297 #define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT 0x8DE1
2298 #define GL_MAX_GEOMETRY_SHADER_INVOCATIONS_EXT 0x8E5A
2299 #define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT 0x8C29
2300 #define GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_EXT 0x92CF
2301 #define GL_MAX_GEOMETRY_ATOMIC_COUNTERS_EXT 0x92D5
2302 #define GL_MAX_GEOMETRY_IMAGE_UNIFORMS_EXT 0x90CD
2303 #define GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_EXT 0x90D7
2304 #define GL_FIRST_VERTEX_CONVENTION_EXT    0x8E4D
2305 #define GL_LAST_VERTEX_CONVENTION_EXT     0x8E4E
2306 #define GL_UNDEFINED_VERTEX_EXT           0x8260
2307 #define GL_PRIMITIVES_GENERATED_EXT       0x8C87
2308 #define GL_FRAMEBUFFER_DEFAULT_LAYERS_EXT 0x9312
2309 #define GL_MAX_FRAMEBUFFER_LAYERS_EXT     0x9317
2310 #define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT 0x8DA8
2311 #define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT 0x8DA7
2312 #define GL_REFERENCED_BY_GEOMETRY_SHADER_EXT 0x9309
2313 #endif /* GL_EXT_geometry_shader */
2314 
2315 #ifndef GL_EXT_gpu_shader5
2316 #define GL_EXT_gpu_shader5 1
2317 #endif /* GL_EXT_gpu_shader5 */
2318 
2319 #ifndef GL_EXT_instanced_arrays
2320 #define GL_EXT_instanced_arrays 1
2321 #define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_EXT 0x88FE
2322 #endif /* GL_EXT_instanced_arrays */
2323 
2324 #ifndef GL_EXT_map_buffer_range
2325 #define GL_EXT_map_buffer_range 1
2326 #define GL_MAP_READ_BIT_EXT               0x0001
2327 #define GL_MAP_WRITE_BIT_EXT              0x0002
2328 #define GL_MAP_INVALIDATE_RANGE_BIT_EXT   0x0004
2329 #define GL_MAP_INVALIDATE_BUFFER_BIT_EXT  0x0008
2330 #define GL_MAP_FLUSH_EXPLICIT_BIT_EXT     0x0010
2331 #define GL_MAP_UNSYNCHRONIZED_BIT_EXT     0x0020
2332 #endif /* GL_EXT_map_buffer_range */
2333 
2334 #ifndef GL_EXT_multi_draw_arrays
2335 #define GL_EXT_multi_draw_arrays 1
2336 #endif /* GL_EXT_multi_draw_arrays */
2337 
2338 #ifndef GL_EXT_multi_draw_indirect
2339 #define GL_EXT_multi_draw_indirect 1
2340 #endif /* GL_EXT_multi_draw_indirect */
2341 
2342 #ifndef GL_EXT_multisampled_compatibility
2343 #define GL_EXT_multisampled_compatibility 1
2344 #define GL_MULTISAMPLE_EXT                0x809D
2345 #define GL_SAMPLE_ALPHA_TO_ONE_EXT        0x809F
2346 #endif /* GL_EXT_multisampled_compatibility */
2347 
2348 #ifndef GL_EXT_multisampled_render_to_texture
2349 #define GL_EXT_multisampled_render_to_texture 1
2350 #define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT 0x8D6C
2351 #define GL_RENDERBUFFER_SAMPLES_EXT       0x8CAB
2352 #define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56
2353 #define GL_MAX_SAMPLES_EXT                0x8D57
2354 #endif /* GL_EXT_multisampled_render_to_texture */
2355 
2356 #ifndef GL_EXT_multiview_draw_buffers
2357 #define GL_EXT_multiview_draw_buffers 1
2358 #define GL_COLOR_ATTACHMENT_EXT           0x90F0
2359 #define GL_MULTIVIEW_EXT                  0x90F1
2360 #define GL_DRAW_BUFFER_EXT                0x0C01
2361 #define GL_READ_BUFFER_EXT                0x0C02
2362 #define GL_MAX_MULTIVIEW_BUFFERS_EXT      0x90F2
2363 #endif /* GL_EXT_multiview_draw_buffers */
2364 
2365 #ifndef GL_EXT_occlusion_query_boolean
2366 #define GL_EXT_occlusion_query_boolean 1
2367 #define GL_ANY_SAMPLES_PASSED_EXT         0x8C2F
2368 #define GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT 0x8D6A
2369 #endif /* GL_EXT_occlusion_query_boolean */
2370 
2371 #ifndef GL_EXT_polygon_offset_clamp
2372 #define GL_EXT_polygon_offset_clamp 1
2373 #define GL_POLYGON_OFFSET_CLAMP_EXT       0x8E1B
2374 #endif /* GL_EXT_polygon_offset_clamp */
2375 
2376 #ifndef GL_EXT_post_depth_coverage
2377 #define GL_EXT_post_depth_coverage 1
2378 #endif /* GL_EXT_post_depth_coverage */
2379 
2380 #ifndef GL_EXT_primitive_bounding_box
2381 #define GL_EXT_primitive_bounding_box 1
2382 #define GL_PRIMITIVE_BOUNDING_BOX_EXT     0x92BE
2383 #endif /* GL_EXT_primitive_bounding_box */
2384 
2385 #ifndef GL_EXT_pvrtc_sRGB
2386 #define GL_EXT_pvrtc_sRGB 1
2387 #define GL_COMPRESSED_SRGB_PVRTC_2BPPV1_EXT 0x8A54
2388 #define GL_COMPRESSED_SRGB_PVRTC_4BPPV1_EXT 0x8A55
2389 #define GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV1_EXT 0x8A56
2390 #define GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV1_EXT 0x8A57
2391 #define GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV2_IMG 0x93F0
2392 #define GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV2_IMG 0x93F1
2393 #endif /* GL_EXT_pvrtc_sRGB */
2394 
2395 #ifndef GL_EXT_raster_multisample
2396 #define GL_EXT_raster_multisample 1
2397 #define GL_RASTER_MULTISAMPLE_EXT         0x9327
2398 #define GL_RASTER_SAMPLES_EXT             0x9328
2399 #define GL_MAX_RASTER_SAMPLES_EXT         0x9329
2400 #define GL_RASTER_FIXED_SAMPLE_LOCATIONS_EXT 0x932A
2401 #define GL_MULTISAMPLE_RASTERIZATION_ALLOWED_EXT 0x932B
2402 #define GL_EFFECTIVE_RASTER_SAMPLES_EXT   0x932C
2403 #endif /* GL_EXT_raster_multisample */
2404 
2405 #ifndef GL_EXT_read_format_bgra
2406 #define GL_EXT_read_format_bgra 1
2407 #define GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT 0x8365
2408 #define GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT 0x8366
2409 #endif /* GL_EXT_read_format_bgra */
2410 
2411 #ifndef GL_EXT_render_snorm
2412 #define GL_EXT_render_snorm 1
2413 #define GL_R8_SNORM                       0x8F94
2414 #define GL_RG8_SNORM                      0x8F95
2415 #define GL_RGBA8_SNORM                    0x8F97
2416 #define GL_R16_SNORM_EXT                  0x8F98
2417 #define GL_RG16_SNORM_EXT                 0x8F99
2418 #define GL_RGBA16_SNORM_EXT               0x8F9B
2419 #endif /* GL_EXT_render_snorm */
2420 
2421 #ifndef GL_EXT_robustness
2422 #define GL_EXT_robustness 1
2423 #define GL_GUILTY_CONTEXT_RESET_EXT       0x8253
2424 #define GL_INNOCENT_CONTEXT_RESET_EXT     0x8254
2425 #define GL_UNKNOWN_CONTEXT_RESET_EXT      0x8255
2426 #define GL_CONTEXT_ROBUST_ACCESS_EXT      0x90F3
2427 #define GL_RESET_NOTIFICATION_STRATEGY_EXT 0x8256
2428 #define GL_LOSE_CONTEXT_ON_RESET_EXT      0x8252
2429 #define GL_NO_RESET_NOTIFICATION_EXT      0x8261
2430 #endif /* GL_EXT_robustness */
2431 
2432 #ifndef GL_EXT_sRGB
2433 #define GL_EXT_sRGB 1
2434 #define GL_SRGB_EXT                       0x8C40
2435 #define GL_SRGB_ALPHA_EXT                 0x8C42
2436 #define GL_SRGB8_ALPHA8_EXT               0x8C43
2437 #define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT 0x8210
2438 #endif /* GL_EXT_sRGB */
2439 
2440 #ifndef GL_EXT_sRGB_write_control
2441 #define GL_EXT_sRGB_write_control 1
2442 #define GL_FRAMEBUFFER_SRGB_EXT           0x8DB9
2443 #endif /* GL_EXT_sRGB_write_control */
2444 
2445 #ifndef GL_EXT_separate_shader_objects
2446 #define GL_EXT_separate_shader_objects 1
2447 #define GL_ACTIVE_PROGRAM_EXT             0x8259
2448 #define GL_VERTEX_SHADER_BIT_EXT          0x00000001
2449 #define GL_FRAGMENT_SHADER_BIT_EXT        0x00000002
2450 #define GL_ALL_SHADER_BITS_EXT            0xFFFFFFFF
2451 #define GL_PROGRAM_SEPARABLE_EXT          0x8258
2452 #define GL_PROGRAM_PIPELINE_BINDING_EXT   0x825A
2453 #endif /* GL_EXT_separate_shader_objects */
2454 
2455 #ifndef GL_EXT_shader_framebuffer_fetch
2456 #define GL_EXT_shader_framebuffer_fetch 1
2457 #define GL_FRAGMENT_SHADER_DISCARDS_SAMPLES_EXT 0x8A52
2458 #endif /* GL_EXT_shader_framebuffer_fetch */
2459 
2460 #ifndef GL_EXT_shader_group_vote
2461 #define GL_EXT_shader_group_vote 1
2462 #endif /* GL_EXT_shader_group_vote */
2463 
2464 #ifndef GL_EXT_shader_implicit_conversions
2465 #define GL_EXT_shader_implicit_conversions 1
2466 #endif /* GL_EXT_shader_implicit_conversions */
2467 
2468 #ifndef GL_EXT_shader_integer_mix
2469 #define GL_EXT_shader_integer_mix 1
2470 #endif /* GL_EXT_shader_integer_mix */
2471 
2472 #ifndef GL_EXT_shader_io_blocks
2473 #define GL_EXT_shader_io_blocks 1
2474 #endif /* GL_EXT_shader_io_blocks */
2475 
2476 #ifndef GL_EXT_shader_pixel_local_storage
2477 #define GL_EXT_shader_pixel_local_storage 1
2478 #define GL_MAX_SHADER_PIXEL_LOCAL_STORAGE_FAST_SIZE_EXT 0x8F63
2479 #define GL_MAX_SHADER_PIXEL_LOCAL_STORAGE_SIZE_EXT 0x8F67
2480 #define GL_SHADER_PIXEL_LOCAL_STORAGE_EXT 0x8F64
2481 #endif /* GL_EXT_shader_pixel_local_storage */
2482 
2483 #ifndef GL_EXT_shader_pixel_local_storage2
2484 #define GL_EXT_shader_pixel_local_storage2 1
2485 #define GL_MAX_SHADER_COMBINED_LOCAL_STORAGE_FAST_SIZE_EXT 0x9650
2486 #define GL_MAX_SHADER_COMBINED_LOCAL_STORAGE_SIZE_EXT 0x9651
2487 #define GL_FRAMEBUFFER_INCOMPLETE_INSUFFICIENT_SHADER_COMBINED_LOCAL_STORAGE_EXT 0x9652
2488 #endif /* GL_EXT_shader_pixel_local_storage2 */
2489 
2490 #ifndef GL_EXT_shader_texture_lod
2491 #define GL_EXT_shader_texture_lod 1
2492 #endif /* GL_EXT_shader_texture_lod */
2493 
2494 #ifndef GL_EXT_shadow_samplers
2495 #define GL_EXT_shadow_samplers 1
2496 #define GL_TEXTURE_COMPARE_MODE_EXT       0x884C
2497 #define GL_TEXTURE_COMPARE_FUNC_EXT       0x884D
2498 #define GL_COMPARE_REF_TO_TEXTURE_EXT     0x884E
2499 #define GL_SAMPLER_2D_SHADOW_EXT          0x8B62
2500 #endif /* GL_EXT_shadow_samplers */
2501 
2502 #ifndef GL_EXT_sparse_texture
2503 #define GL_EXT_sparse_texture 1
2504 #define GL_TEXTURE_SPARSE_EXT             0x91A6
2505 #define GL_VIRTUAL_PAGE_SIZE_INDEX_EXT    0x91A7
2506 #define GL_NUM_SPARSE_LEVELS_EXT          0x91AA
2507 #define GL_NUM_VIRTUAL_PAGE_SIZES_EXT     0x91A8
2508 #define GL_VIRTUAL_PAGE_SIZE_X_EXT        0x9195
2509 #define GL_VIRTUAL_PAGE_SIZE_Y_EXT        0x9196
2510 #define GL_VIRTUAL_PAGE_SIZE_Z_EXT        0x9197
2511 #define GL_TEXTURE_2D_ARRAY               0x8C1A
2512 #define GL_TEXTURE_3D                     0x806F
2513 #define GL_MAX_SPARSE_TEXTURE_SIZE_EXT    0x9198
2514 #define GL_MAX_SPARSE_3D_TEXTURE_SIZE_EXT 0x9199
2515 #define GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS_EXT 0x919A
2516 #define GL_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_EXT 0x91A9
2517 #endif /* GL_EXT_sparse_texture */
2518 
2519 #ifndef GL_EXT_tessellation_point_size
2520 #define GL_EXT_tessellation_point_size 1
2521 #endif /* GL_EXT_tessellation_point_size */
2522 
2523 #ifndef GL_EXT_tessellation_shader
2524 #define GL_EXT_tessellation_shader 1
2525 #define GL_PATCHES_EXT                    0x000E
2526 #define GL_PATCH_VERTICES_EXT             0x8E72
2527 #define GL_TESS_CONTROL_OUTPUT_VERTICES_EXT 0x8E75
2528 #define GL_TESS_GEN_MODE_EXT              0x8E76
2529 #define GL_TESS_GEN_SPACING_EXT           0x8E77
2530 #define GL_TESS_GEN_VERTEX_ORDER_EXT      0x8E78
2531 #define GL_TESS_GEN_POINT_MODE_EXT        0x8E79
2532 #define GL_ISOLINES_EXT                   0x8E7A
2533 #define GL_QUADS_EXT                      0x0007
2534 #define GL_FRACTIONAL_ODD_EXT             0x8E7B
2535 #define GL_FRACTIONAL_EVEN_EXT            0x8E7C
2536 #define GL_MAX_PATCH_VERTICES_EXT         0x8E7D
2537 #define GL_MAX_TESS_GEN_LEVEL_EXT         0x8E7E
2538 #define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS_EXT 0x8E7F
2539 #define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT 0x8E80
2540 #define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS_EXT 0x8E81
2541 #define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS_EXT 0x8E82
2542 #define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS_EXT 0x8E83
2543 #define GL_MAX_TESS_PATCH_COMPONENTS_EXT  0x8E84
2544 #define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS_EXT 0x8E85
2545 #define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS_EXT 0x8E86
2546 #define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS_EXT 0x8E89
2547 #define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS_EXT 0x8E8A
2548 #define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS_EXT 0x886C
2549 #define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS_EXT 0x886D
2550 #define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS_EXT 0x8E1E
2551 #define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT 0x8E1F
2552 #define GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS_EXT 0x92CD
2553 #define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS_EXT 0x92CE
2554 #define GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS_EXT 0x92D3
2555 #define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS_EXT 0x92D4
2556 #define GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS_EXT 0x90CB
2557 #define GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS_EXT 0x90CC
2558 #define GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS_EXT 0x90D8
2559 #define GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS_EXT 0x90D9
2560 #define GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED 0x8221
2561 #define GL_IS_PER_PATCH_EXT               0x92E7
2562 #define GL_REFERENCED_BY_TESS_CONTROL_SHADER_EXT 0x9307
2563 #define GL_REFERENCED_BY_TESS_EVALUATION_SHADER_EXT 0x9308
2564 #define GL_TESS_CONTROL_SHADER_EXT        0x8E88
2565 #define GL_TESS_EVALUATION_SHADER_EXT     0x8E87
2566 #define GL_TESS_CONTROL_SHADER_BIT_EXT    0x00000008
2567 #define GL_TESS_EVALUATION_SHADER_BIT_EXT 0x00000010
2568 #endif /* GL_EXT_tessellation_shader */
2569 
2570 #ifndef GL_EXT_texture_border_clamp
2571 #define GL_EXT_texture_border_clamp 1
2572 #define GL_TEXTURE_BORDER_COLOR_EXT       0x1004
2573 #define GL_CLAMP_TO_BORDER_EXT            0x812D
2574 #endif /* GL_EXT_texture_border_clamp */
2575 
2576 #ifndef GL_EXT_texture_buffer
2577 #define GL_EXT_texture_buffer 1
2578 #define GL_TEXTURE_BUFFER_EXT             0x8C2A
2579 #define GL_TEXTURE_BUFFER_BINDING_EXT     0x8C2A
2580 #define GL_MAX_TEXTURE_BUFFER_SIZE_EXT    0x8C2B
2581 #define GL_TEXTURE_BINDING_BUFFER_EXT     0x8C2C
2582 #define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_EXT 0x8C2D
2583 #define GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT_EXT 0x919F
2584 #define GL_SAMPLER_BUFFER_EXT             0x8DC2
2585 #define GL_INT_SAMPLER_BUFFER_EXT         0x8DD0
2586 #define GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT 0x8DD8
2587 #define GL_IMAGE_BUFFER_EXT               0x9051
2588 #define GL_INT_IMAGE_BUFFER_EXT           0x905C
2589 #define GL_UNSIGNED_INT_IMAGE_BUFFER_EXT  0x9067
2590 #define GL_TEXTURE_BUFFER_OFFSET_EXT      0x919D
2591 #define GL_TEXTURE_BUFFER_SIZE_EXT        0x919E
2592 #endif /* GL_EXT_texture_buffer */
2593 
2594 #ifndef GL_EXT_texture_compression_dxt1
2595 #define GL_EXT_texture_compression_dxt1 1
2596 #define GL_COMPRESSED_RGB_S3TC_DXT1_EXT   0x83F0
2597 #define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT  0x83F1
2598 #endif /* GL_EXT_texture_compression_dxt1 */
2599 
2600 #ifndef GL_EXT_texture_compression_s3tc
2601 #define GL_EXT_texture_compression_s3tc 1
2602 #define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT  0x83F2
2603 #define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT  0x83F3
2604 #endif /* GL_EXT_texture_compression_s3tc */
2605 
2606 #ifndef GL_EXT_texture_cube_map_array
2607 #define GL_EXT_texture_cube_map_array 1
2608 #define GL_TEXTURE_CUBE_MAP_ARRAY_EXT     0x9009
2609 #define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_EXT 0x900A
2610 #define GL_SAMPLER_CUBE_MAP_ARRAY_EXT     0x900C
2611 #define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_EXT 0x900D
2612 #define GL_INT_SAMPLER_CUBE_MAP_ARRAY_EXT 0x900E
2613 #define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_EXT 0x900F
2614 #define GL_IMAGE_CUBE_MAP_ARRAY_EXT       0x9054
2615 #define GL_INT_IMAGE_CUBE_MAP_ARRAY_EXT   0x905F
2616 #define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x906A
2617 #endif /* GL_EXT_texture_cube_map_array */
2618 
2619 #ifndef GL_EXT_texture_filter_anisotropic
2620 #define GL_EXT_texture_filter_anisotropic 1
2621 #define GL_TEXTURE_MAX_ANISOTROPY_EXT     0x84FE
2622 #define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF
2623 #endif /* GL_EXT_texture_filter_anisotropic */
2624 
2625 #ifndef GL_EXT_texture_filter_minmax
2626 #define GL_EXT_texture_filter_minmax 1
2627 #endif /* GL_EXT_texture_filter_minmax */
2628 
2629 #ifndef GL_EXT_texture_format_BGRA8888
2630 #define GL_EXT_texture_format_BGRA8888 1
2631 #endif /* GL_EXT_texture_format_BGRA8888 */
2632 
2633 #ifndef GL_EXT_texture_norm16
2634 #define GL_EXT_texture_norm16 1
2635 #define GL_R16_EXT                        0x822A
2636 #define GL_RG16_EXT                       0x822C
2637 #define GL_RGBA16_EXT                     0x805B
2638 #define GL_RGB16_EXT                      0x8054
2639 #define GL_RGB16_SNORM_EXT                0x8F9A
2640 #endif /* GL_EXT_texture_norm16 */
2641 
2642 #ifndef GL_EXT_texture_rg
2643 #define GL_EXT_texture_rg 1
2644 #define GL_RED_EXT                        0x1903
2645 #define GL_RG_EXT                         0x8227
2646 #define GL_R8_EXT                         0x8229
2647 #define GL_RG8_EXT                        0x822B
2648 #endif /* GL_EXT_texture_rg */
2649 
2650 #ifndef GL_EXT_texture_sRGB_R8
2651 #define GL_EXT_texture_sRGB_R8 1
2652 #define GL_SR8_EXT                        0x8FBD
2653 #endif /* GL_EXT_texture_sRGB_R8 */
2654 
2655 #ifndef GL_EXT_texture_sRGB_RG8
2656 #define GL_EXT_texture_sRGB_RG8 1
2657 #define GL_SRG8_EXT                       0x8FBE
2658 #endif /* GL_EXT_texture_sRGB_RG8 */
2659 
2660 #ifndef GL_EXT_texture_sRGB_decode
2661 #define GL_EXT_texture_sRGB_decode 1
2662 #define GL_TEXTURE_SRGB_DECODE_EXT        0x8A48
2663 #define GL_DECODE_EXT                     0x8A49
2664 #define GL_SKIP_DECODE_EXT                0x8A4A
2665 #endif /* GL_EXT_texture_sRGB_decode */
2666 
2667 #ifndef GL_EXT_texture_storage
2668 #define GL_EXT_texture_storage 1
2669 #define GL_TEXTURE_IMMUTABLE_FORMAT_EXT   0x912F
2670 #define GL_ALPHA8_EXT                     0x803C
2671 #define GL_LUMINANCE8_EXT                 0x8040
2672 #define GL_LUMINANCE8_ALPHA8_EXT          0x8045
2673 #define GL_RGBA32F_EXT                    0x8814
2674 #define GL_RGB32F_EXT                     0x8815
2675 #define GL_ALPHA32F_EXT                   0x8816
2676 #define GL_LUMINANCE32F_EXT               0x8818
2677 #define GL_LUMINANCE_ALPHA32F_EXT         0x8819
2678 #define GL_ALPHA16F_EXT                   0x881C
2679 #define GL_LUMINANCE16F_EXT               0x881E
2680 #define GL_LUMINANCE_ALPHA16F_EXT         0x881F
2681 #define GL_R32F_EXT                       0x822E
2682 #define GL_RG32F_EXT                      0x8230
2683 #endif /* GL_EXT_texture_storage */
2684 
2685 #ifndef GL_EXT_texture_type_2_10_10_10_REV
2686 #define GL_EXT_texture_type_2_10_10_10_REV 1
2687 #define GL_UNSIGNED_INT_2_10_10_10_REV_EXT 0x8368
2688 #endif /* GL_EXT_texture_type_2_10_10_10_REV */
2689 
2690 #ifndef GL_EXT_texture_view
2691 #define GL_EXT_texture_view 1
2692 #define GL_TEXTURE_VIEW_MIN_LEVEL_EXT     0x82DB
2693 #define GL_TEXTURE_VIEW_NUM_LEVELS_EXT    0x82DC
2694 #define GL_TEXTURE_VIEW_MIN_LAYER_EXT     0x82DD
2695 #define GL_TEXTURE_VIEW_NUM_LAYERS_EXT    0x82DE
2696 #endif /* GL_EXT_texture_view */
2697 
2698 #ifndef GL_EXT_unpack_subimage
2699 #define GL_EXT_unpack_subimage 1
2700 #define GL_UNPACK_ROW_LENGTH_EXT          0x0CF2
2701 #define GL_UNPACK_SKIP_ROWS_EXT           0x0CF3
2702 #define GL_UNPACK_SKIP_PIXELS_EXT         0x0CF4
2703 #endif /* GL_EXT_unpack_subimage */
2704 
2705 #ifndef GL_FJ_shader_binary_GCCSO
2706 #define GL_FJ_shader_binary_GCCSO 1
2707 #define GL_GCCSO_SHADER_BINARY_FJ         0x9260
2708 #endif /* GL_FJ_shader_binary_GCCSO */
2709 
2710 #ifndef GL_IMG_framebuffer_downsample
2711 #define GL_IMG_framebuffer_downsample 1
2712 #define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_AND_DOWNSAMPLE_IMG 0x913C
2713 #define GL_NUM_DOWNSAMPLE_SCALES_IMG      0x913D
2714 #define GL_DOWNSAMPLE_SCALES_IMG          0x913E
2715 #define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SCALE_IMG 0x913F
2716 #endif /* GL_IMG_framebuffer_downsample */
2717 
2718 #ifndef GL_IMG_multisampled_render_to_texture
2719 #define GL_IMG_multisampled_render_to_texture 1
2720 #define GL_RENDERBUFFER_SAMPLES_IMG       0x9133
2721 #define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_IMG 0x9134
2722 #define GL_MAX_SAMPLES_IMG                0x9135
2723 #define GL_TEXTURE_SAMPLES_IMG            0x9136
2724 #endif /* GL_IMG_multisampled_render_to_texture */
2725 
2726 #ifndef GL_IMG_program_binary
2727 #define GL_IMG_program_binary 1
2728 #define GL_SGX_PROGRAM_BINARY_IMG         0x9130
2729 #endif /* GL_IMG_program_binary */
2730 
2731 #ifndef GL_IMG_read_format
2732 #define GL_IMG_read_format 1
2733 #define GL_BGRA_IMG                       0x80E1
2734 #define GL_UNSIGNED_SHORT_4_4_4_4_REV_IMG 0x8365
2735 #endif /* GL_IMG_read_format */
2736 
2737 #ifndef GL_IMG_shader_binary
2738 #define GL_IMG_shader_binary 1
2739 #define GL_SGX_BINARY_IMG                 0x8C0A
2740 #endif /* GL_IMG_shader_binary */
2741 
2742 #ifndef GL_IMG_texture_compression_pvrtc
2743 #define GL_IMG_texture_compression_pvrtc 1
2744 #define GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG 0x8C00
2745 #define GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG 0x8C01
2746 #define GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG 0x8C02
2747 #define GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG 0x8C03
2748 #endif /* GL_IMG_texture_compression_pvrtc */
2749 
2750 #ifndef GL_IMG_texture_compression_pvrtc2
2751 #define GL_IMG_texture_compression_pvrtc2 1
2752 #define GL_COMPRESSED_RGBA_PVRTC_2BPPV2_IMG 0x9137
2753 #define GL_COMPRESSED_RGBA_PVRTC_4BPPV2_IMG 0x9138
2754 #endif /* GL_IMG_texture_compression_pvrtc2 */
2755 
2756 #ifndef GL_IMG_texture_filter_cubic
2757 #define GL_IMG_texture_filter_cubic 1
2758 #define GL_CUBIC_IMG                      0x9139
2759 #define GL_CUBIC_MIPMAP_NEAREST_IMG       0x913A
2760 #define GL_CUBIC_MIPMAP_LINEAR_IMG        0x913B
2761 #endif /* GL_IMG_texture_filter_cubic */
2762 
2763 #ifndef GL_INTEL_framebuffer_CMAA
2764 #define GL_INTEL_framebuffer_CMAA 1
2765 #endif /* GL_INTEL_framebuffer_CMAA */
2766 
2767 #ifndef GL_INTEL_performance_query
2768 #define GL_INTEL_performance_query 1
2769 #define GL_PERFQUERY_SINGLE_CONTEXT_INTEL 0x00000000
2770 #define GL_PERFQUERY_GLOBAL_CONTEXT_INTEL 0x00000001
2771 #define GL_PERFQUERY_WAIT_INTEL           0x83FB
2772 #define GL_PERFQUERY_FLUSH_INTEL          0x83FA
2773 #define GL_PERFQUERY_DONOT_FLUSH_INTEL    0x83F9
2774 #define GL_PERFQUERY_COUNTER_EVENT_INTEL  0x94F0
2775 #define GL_PERFQUERY_COUNTER_DURATION_NORM_INTEL 0x94F1
2776 #define GL_PERFQUERY_COUNTER_DURATION_RAW_INTEL 0x94F2
2777 #define GL_PERFQUERY_COUNTER_THROUGHPUT_INTEL 0x94F3
2778 #define GL_PERFQUERY_COUNTER_RAW_INTEL    0x94F4
2779 #define GL_PERFQUERY_COUNTER_TIMESTAMP_INTEL 0x94F5
2780 #define GL_PERFQUERY_COUNTER_DATA_UINT32_INTEL 0x94F8
2781 #define GL_PERFQUERY_COUNTER_DATA_UINT64_INTEL 0x94F9
2782 #define GL_PERFQUERY_COUNTER_DATA_FLOAT_INTEL 0x94FA
2783 #define GL_PERFQUERY_COUNTER_DATA_DOUBLE_INTEL 0x94FB
2784 #define GL_PERFQUERY_COUNTER_DATA_BOOL32_INTEL 0x94FC
2785 #define GL_PERFQUERY_QUERY_NAME_LENGTH_MAX_INTEL 0x94FD
2786 #define GL_PERFQUERY_COUNTER_NAME_LENGTH_MAX_INTEL 0x94FE
2787 #define GL_PERFQUERY_COUNTER_DESC_LENGTH_MAX_INTEL 0x94FF
2788 #define GL_PERFQUERY_GPA_EXTENDED_COUNTERS_INTEL 0x9500
2789 #endif /* GL_INTEL_performance_query */
2790 
2791 #ifndef GL_NV_bindless_texture
2792 #define GL_NV_bindless_texture 1
2793 #endif /* GL_NV_bindless_texture */
2794 
2795 #ifndef GL_NV_blend_equation_advanced
2796 #define GL_NV_blend_equation_advanced 1
2797 #define GL_BLEND_OVERLAP_NV               0x9281
2798 #define GL_BLEND_PREMULTIPLIED_SRC_NV     0x9280
2799 #define GL_BLUE_NV                        0x1905
2800 #define GL_COLORBURN_NV                   0x929A
2801 #define GL_COLORDODGE_NV                  0x9299
2802 #define GL_CONJOINT_NV                    0x9284
2803 #define GL_CONTRAST_NV                    0x92A1
2804 #define GL_DARKEN_NV                      0x9297
2805 #define GL_DIFFERENCE_NV                  0x929E
2806 #define GL_DISJOINT_NV                    0x9283
2807 #define GL_DST_ATOP_NV                    0x928F
2808 #define GL_DST_IN_NV                      0x928B
2809 #define GL_DST_NV                         0x9287
2810 #define GL_DST_OUT_NV                     0x928D
2811 #define GL_DST_OVER_NV                    0x9289
2812 #define GL_EXCLUSION_NV                   0x92A0
2813 #define GL_GREEN_NV                       0x1904
2814 #define GL_HARDLIGHT_NV                   0x929B
2815 #define GL_HARDMIX_NV                     0x92A9
2816 #define GL_HSL_COLOR_NV                   0x92AF
2817 #define GL_HSL_HUE_NV                     0x92AD
2818 #define GL_HSL_LUMINOSITY_NV              0x92B0
2819 #define GL_HSL_SATURATION_NV              0x92AE
2820 #define GL_INVERT_OVG_NV                  0x92B4
2821 #define GL_INVERT_RGB_NV                  0x92A3
2822 #define GL_LIGHTEN_NV                     0x9298
2823 #define GL_LINEARBURN_NV                  0x92A5
2824 #define GL_LINEARDODGE_NV                 0x92A4
2825 #define GL_LINEARLIGHT_NV                 0x92A7
2826 #define GL_MINUS_CLAMPED_NV               0x92B3
2827 #define GL_MINUS_NV                       0x929F
2828 #define GL_MULTIPLY_NV                    0x9294
2829 #define GL_OVERLAY_NV                     0x9296
2830 #define GL_PINLIGHT_NV                    0x92A8
2831 #define GL_PLUS_CLAMPED_ALPHA_NV          0x92B2
2832 #define GL_PLUS_CLAMPED_NV                0x92B1
2833 #define GL_PLUS_DARKER_NV                 0x9292
2834 #define GL_PLUS_NV                        0x9291
2835 #define GL_RED_NV                         0x1903
2836 #define GL_SCREEN_NV                      0x9295
2837 #define GL_SOFTLIGHT_NV                   0x929C
2838 #define GL_SRC_ATOP_NV                    0x928E
2839 #define GL_SRC_IN_NV                      0x928A
2840 #define GL_SRC_NV                         0x9286
2841 #define GL_SRC_OUT_NV                     0x928C
2842 #define GL_SRC_OVER_NV                    0x9288
2843 #define GL_UNCORRELATED_NV                0x9282
2844 #define GL_VIVIDLIGHT_NV                  0x92A6
2845 #define GL_XOR_NV                         0x1506
2846 #endif /* GL_NV_blend_equation_advanced */
2847 
2848 #ifndef GL_NV_blend_equation_advanced_coherent
2849 #define GL_NV_blend_equation_advanced_coherent 1
2850 #define GL_BLEND_ADVANCED_COHERENT_NV     0x9285
2851 #endif /* GL_NV_blend_equation_advanced_coherent */
2852 
2853 #ifndef GL_NV_conditional_render
2854 #define GL_NV_conditional_render 1
2855 #define GL_QUERY_WAIT_NV                  0x8E13
2856 #define GL_QUERY_NO_WAIT_NV               0x8E14
2857 #define GL_QUERY_BY_REGION_WAIT_NV        0x8E15
2858 #define GL_QUERY_BY_REGION_NO_WAIT_NV     0x8E16
2859 #endif /* GL_NV_conditional_render */
2860 
2861 #ifndef GL_NV_conservative_raster
2862 #define GL_NV_conservative_raster 1
2863 #define GL_CONSERVATIVE_RASTERIZATION_NV  0x9346
2864 #define GL_SUBPIXEL_PRECISION_BIAS_X_BITS_NV 0x9347
2865 #define GL_SUBPIXEL_PRECISION_BIAS_Y_BITS_NV 0x9348
2866 #define GL_MAX_SUBPIXEL_PRECISION_BIAS_BITS_NV 0x9349
2867 #endif /* GL_NV_conservative_raster */
2868 
2869 #ifndef GL_NV_copy_buffer
2870 #define GL_NV_copy_buffer 1
2871 #define GL_COPY_READ_BUFFER_NV            0x8F36
2872 #define GL_COPY_WRITE_BUFFER_NV           0x8F37
2873 #endif /* GL_NV_copy_buffer */
2874 
2875 #ifndef GL_NV_coverage_sample
2876 #define GL_NV_coverage_sample 1
2877 #define GL_COVERAGE_COMPONENT_NV          0x8ED0
2878 #define GL_COVERAGE_COMPONENT4_NV         0x8ED1
2879 #define GL_COVERAGE_ATTACHMENT_NV         0x8ED2
2880 #define GL_COVERAGE_BUFFERS_NV            0x8ED3
2881 #ifdef GL_COVERAGE_SAMPLES_NV
2882 # undef GL_COVERAGE_SAMPLES_NV
2883 /* Extract from the multisample_coverage spec:
2884  * (Note:  Earlier versions of this extension included a token
2885  *   COVERAGE_SAMPLES_NV that was an alias for SAMPLES/SAMPLES_ARB.  This was
2886  *   removed to avoid a name collision with a similar COVERAGE_SAMPLES_NV
2887  *   token from the NV_coverage_sample extension to OpenGL ES.)
2888  */
2889 #endif
2890 #define GL_COVERAGE_SAMPLES_NV            0x8ED4
2891 #define GL_COVERAGE_ALL_FRAGMENTS_NV      0x8ED5
2892 #define GL_COVERAGE_EDGE_FRAGMENTS_NV     0x8ED6
2893 #define GL_COVERAGE_AUTOMATIC_NV          0x8ED7
2894 #define GL_COVERAGE_BUFFER_BIT_NV         0x00008000
2895 #endif /* GL_NV_coverage_sample */
2896 
2897 #ifndef GL_NV_depth_nonlinear
2898 #define GL_NV_depth_nonlinear 1
2899 #define GL_DEPTH_COMPONENT16_NONLINEAR_NV 0x8E2C
2900 #endif /* GL_NV_depth_nonlinear */
2901 
2902 #ifndef GL_NV_draw_buffers
2903 #define GL_NV_draw_buffers 1
2904 #define GL_MAX_DRAW_BUFFERS_NV            0x8824
2905 #define GL_DRAW_BUFFER0_NV                0x8825
2906 #define GL_DRAW_BUFFER1_NV                0x8826
2907 #define GL_DRAW_BUFFER2_NV                0x8827
2908 #define GL_DRAW_BUFFER3_NV                0x8828
2909 #define GL_DRAW_BUFFER4_NV                0x8829
2910 #define GL_DRAW_BUFFER5_NV                0x882A
2911 #define GL_DRAW_BUFFER6_NV                0x882B
2912 #define GL_DRAW_BUFFER7_NV                0x882C
2913 #define GL_DRAW_BUFFER8_NV                0x882D
2914 #define GL_DRAW_BUFFER9_NV                0x882E
2915 #define GL_DRAW_BUFFER10_NV               0x882F
2916 #define GL_DRAW_BUFFER11_NV               0x8830
2917 #define GL_DRAW_BUFFER12_NV               0x8831
2918 #define GL_DRAW_BUFFER13_NV               0x8832
2919 #define GL_DRAW_BUFFER14_NV               0x8833
2920 #define GL_DRAW_BUFFER15_NV               0x8834
2921 #define GL_COLOR_ATTACHMENT0_NV           0x8CE0
2922 #define GL_COLOR_ATTACHMENT1_NV           0x8CE1
2923 #define GL_COLOR_ATTACHMENT2_NV           0x8CE2
2924 #define GL_COLOR_ATTACHMENT3_NV           0x8CE3
2925 #define GL_COLOR_ATTACHMENT4_NV           0x8CE4
2926 #define GL_COLOR_ATTACHMENT5_NV           0x8CE5
2927 #define GL_COLOR_ATTACHMENT6_NV           0x8CE6
2928 #define GL_COLOR_ATTACHMENT7_NV           0x8CE7
2929 #define GL_COLOR_ATTACHMENT8_NV           0x8CE8
2930 #define GL_COLOR_ATTACHMENT9_NV           0x8CE9
2931 #define GL_COLOR_ATTACHMENT10_NV          0x8CEA
2932 #define GL_COLOR_ATTACHMENT11_NV          0x8CEB
2933 #define GL_COLOR_ATTACHMENT12_NV          0x8CEC
2934 #define GL_COLOR_ATTACHMENT13_NV          0x8CED
2935 #define GL_COLOR_ATTACHMENT14_NV          0x8CEE
2936 #define GL_COLOR_ATTACHMENT15_NV          0x8CEF
2937 #endif /* GL_NV_draw_buffers */
2938 
2939 #ifndef GL_NV_draw_instanced
2940 #define GL_NV_draw_instanced 1
2941 #endif /* GL_NV_draw_instanced */
2942 
2943 #ifndef GL_NV_explicit_attrib_location
2944 #define GL_NV_explicit_attrib_location 1
2945 #endif /* GL_NV_explicit_attrib_location */
2946 
2947 #ifndef GL_NV_fbo_color_attachments
2948 #define GL_NV_fbo_color_attachments 1
2949 #define GL_MAX_COLOR_ATTACHMENTS_NV       0x8CDF
2950 #endif /* GL_NV_fbo_color_attachments */
2951 
2952 #ifndef GL_NV_fence
2953 #define GL_NV_fence 1
2954 #define GL_ALL_COMPLETED_NV               0x84F2
2955 #define GL_FENCE_STATUS_NV                0x84F3
2956 #define GL_FENCE_CONDITION_NV             0x84F4
2957 #endif /* GL_NV_fence */
2958 
2959 #ifndef GL_NV_fill_rectangle
2960 #define GL_NV_fill_rectangle 1
2961 #define GL_FILL_RECTANGLE_NV              0x933C
2962 #endif /* GL_NV_fill_rectangle */
2963 
2964 #ifndef GL_NV_fragment_coverage_to_color
2965 #define GL_NV_fragment_coverage_to_color 1
2966 #define GL_FRAGMENT_COVERAGE_TO_COLOR_NV  0x92DD
2967 #define GL_FRAGMENT_COVERAGE_COLOR_NV     0x92DE
2968 #endif /* GL_NV_fragment_coverage_to_color */
2969 
2970 #ifndef GL_NV_fragment_shader_interlock
2971 #define GL_NV_fragment_shader_interlock 1
2972 #endif /* GL_NV_fragment_shader_interlock */
2973 
2974 #ifndef GL_NV_framebuffer_blit
2975 #define GL_NV_framebuffer_blit 1
2976 #define GL_READ_FRAMEBUFFER_NV            0x8CA8
2977 #define GL_DRAW_FRAMEBUFFER_NV            0x8CA9
2978 #define GL_DRAW_FRAMEBUFFER_BINDING_NV    0x8CA6
2979 #define GL_READ_FRAMEBUFFER_BINDING_NV    0x8CAA
2980 #endif /* GL_NV_framebuffer_blit */
2981 
2982 #ifndef GL_NV_framebuffer_mixed_samples
2983 #define GL_NV_framebuffer_mixed_samples 1
2984 #define GL_COVERAGE_MODULATION_TABLE_NV   0x9331
2985 #define GL_COLOR_SAMPLES_NV               0x8E20
2986 #define GL_DEPTH_SAMPLES_NV               0x932D
2987 #define GL_STENCIL_SAMPLES_NV             0x932E
2988 #define GL_MIXED_DEPTH_SAMPLES_SUPPORTED_NV 0x932F
2989 #define GL_MIXED_STENCIL_SAMPLES_SUPPORTED_NV 0x9330
2990 #define GL_COVERAGE_MODULATION_NV         0x9332
2991 #define GL_COVERAGE_MODULATION_TABLE_SIZE_NV 0x9333
2992 #endif /* GL_NV_framebuffer_mixed_samples */
2993 
2994 #ifndef GL_NV_framebuffer_multisample
2995 #define GL_NV_framebuffer_multisample 1
2996 #define GL_RENDERBUFFER_SAMPLES_NV        0x8CAB
2997 #define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_NV 0x8D56
2998 #define GL_MAX_SAMPLES_NV                 0x8D57
2999 #endif /* GL_NV_framebuffer_multisample */
3000 
3001 #ifndef GL_NV_generate_mipmap_sRGB
3002 #define GL_NV_generate_mipmap_sRGB 1
3003 #endif /* GL_NV_generate_mipmap_sRGB */
3004 
3005 #ifndef GL_NV_geometry_shader_passthrough
3006 #define GL_NV_geometry_shader_passthrough 1
3007 #endif /* GL_NV_geometry_shader_passthrough */
3008 
3009 #ifndef GL_NV_image_formats
3010 #define GL_NV_image_formats 1
3011 #endif /* GL_NV_image_formats */
3012 
3013 #ifndef GL_NV_instanced_arrays
3014 #define GL_NV_instanced_arrays 1
3015 #define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_NV 0x88FE
3016 #endif /* GL_NV_instanced_arrays */
3017 
3018 #ifndef GL_NV_internalformat_sample_query
3019 #define GL_NV_internalformat_sample_query 1
3020 #define GL_TEXTURE_2D_MULTISAMPLE         0x9100
3021 #define GL_TEXTURE_2D_MULTISAMPLE_ARRAY   0x9102
3022 #define GL_MULTISAMPLES_NV                0x9371
3023 #define GL_SUPERSAMPLE_SCALE_X_NV         0x9372
3024 #define GL_SUPERSAMPLE_SCALE_Y_NV         0x9373
3025 #define GL_CONFORMANT_NV                  0x9374
3026 #endif /* GL_NV_internalformat_sample_query */
3027 
3028 #ifndef GL_NV_non_square_matrices
3029 #define GL_NV_non_square_matrices 1
3030 #define GL_FLOAT_MAT2x3_NV                0x8B65
3031 #define GL_FLOAT_MAT2x4_NV                0x8B66
3032 #define GL_FLOAT_MAT3x2_NV                0x8B67
3033 #define GL_FLOAT_MAT3x4_NV                0x8B68
3034 #define GL_FLOAT_MAT4x2_NV                0x8B69
3035 #define GL_FLOAT_MAT4x3_NV                0x8B6A
3036 #endif /* GL_NV_non_square_matrices */
3037 
3038 #ifndef GL_NV_path_rendering
3039 #define GL_NV_path_rendering 1
3040 #define GL_PATH_FORMAT_SVG_NV             0x9070
3041 #define GL_PATH_FORMAT_PS_NV              0x9071
3042 #define GL_STANDARD_FONT_NAME_NV          0x9072
3043 #define GL_SYSTEM_FONT_NAME_NV            0x9073
3044 #define GL_FILE_NAME_NV                   0x9074
3045 #define GL_PATH_STROKE_WIDTH_NV           0x9075
3046 #define GL_PATH_END_CAPS_NV               0x9076
3047 #define GL_PATH_INITIAL_END_CAP_NV        0x9077
3048 #define GL_PATH_TERMINAL_END_CAP_NV       0x9078
3049 #define GL_PATH_JOIN_STYLE_NV             0x9079
3050 #define GL_PATH_MITER_LIMIT_NV            0x907A
3051 #define GL_PATH_DASH_CAPS_NV              0x907B
3052 #define GL_PATH_INITIAL_DASH_CAP_NV       0x907C
3053 #define GL_PATH_TERMINAL_DASH_CAP_NV      0x907D
3054 #define GL_PATH_DASH_OFFSET_NV            0x907E
3055 #define GL_PATH_CLIENT_LENGTH_NV          0x907F
3056 #define GL_PATH_FILL_MODE_NV              0x9080
3057 #define GL_PATH_FILL_MASK_NV              0x9081
3058 #define GL_PATH_FILL_COVER_MODE_NV        0x9082
3059 #define GL_PATH_STROKE_COVER_MODE_NV      0x9083
3060 #define GL_PATH_STROKE_MASK_NV            0x9084
3061 #define GL_COUNT_UP_NV                    0x9088
3062 #define GL_COUNT_DOWN_NV                  0x9089
3063 #define GL_PATH_OBJECT_BOUNDING_BOX_NV    0x908A
3064 #define GL_CONVEX_HULL_NV                 0x908B
3065 #define GL_BOUNDING_BOX_NV                0x908D
3066 #define GL_TRANSLATE_X_NV                 0x908E
3067 #define GL_TRANSLATE_Y_NV                 0x908F
3068 #define GL_TRANSLATE_2D_NV                0x9090
3069 #define GL_TRANSLATE_3D_NV                0x9091
3070 #define GL_AFFINE_2D_NV                   0x9092
3071 #define GL_AFFINE_3D_NV                   0x9094
3072 #define GL_TRANSPOSE_AFFINE_2D_NV         0x9096
3073 #define GL_TRANSPOSE_AFFINE_3D_NV         0x9098
3074 #define GL_UTF8_NV                        0x909A
3075 #define GL_UTF16_NV                       0x909B
3076 #define GL_BOUNDING_BOX_OF_BOUNDING_BOXES_NV 0x909C
3077 #define GL_PATH_COMMAND_COUNT_NV          0x909D
3078 #define GL_PATH_COORD_COUNT_NV            0x909E
3079 #define GL_PATH_DASH_ARRAY_COUNT_NV       0x909F
3080 #define GL_PATH_COMPUTED_LENGTH_NV        0x90A0
3081 #define GL_PATH_FILL_BOUNDING_BOX_NV      0x90A1
3082 #define GL_PATH_STROKE_BOUNDING_BOX_NV    0x90A2
3083 #define GL_SQUARE_NV                      0x90A3
3084 #define GL_ROUND_NV                       0x90A4
3085 #define GL_TRIANGULAR_NV                  0x90A5
3086 #define GL_BEVEL_NV                       0x90A6
3087 #define GL_MITER_REVERT_NV                0x90A7
3088 #define GL_MITER_TRUNCATE_NV              0x90A8
3089 #define GL_SKIP_MISSING_GLYPH_NV          0x90A9
3090 #define GL_USE_MISSING_GLYPH_NV           0x90AA
3091 #define GL_PATH_ERROR_POSITION_NV         0x90AB
3092 #define GL_ACCUM_ADJACENT_PAIRS_NV        0x90AD
3093 #define GL_ADJACENT_PAIRS_NV              0x90AE
3094 #define GL_FIRST_TO_REST_NV               0x90AF
3095 #define GL_PATH_GEN_MODE_NV               0x90B0
3096 #define GL_PATH_GEN_COEFF_NV              0x90B1
3097 #define GL_PATH_GEN_COMPONENTS_NV         0x90B3
3098 #define GL_PATH_STENCIL_FUNC_NV           0x90B7
3099 #define GL_PATH_STENCIL_REF_NV            0x90B8
3100 #define GL_PATH_STENCIL_VALUE_MASK_NV     0x90B9
3101 #define GL_PATH_STENCIL_DEPTH_OFFSET_FACTOR_NV 0x90BD
3102 #define GL_PATH_STENCIL_DEPTH_OFFSET_UNITS_NV 0x90BE
3103 #define GL_PATH_COVER_DEPTH_FUNC_NV       0x90BF
3104 #define GL_PATH_DASH_OFFSET_RESET_NV      0x90B4
3105 #define GL_MOVE_TO_RESETS_NV              0x90B5
3106 #define GL_MOVE_TO_CONTINUES_NV           0x90B6
3107 #define GL_CLOSE_PATH_NV                  0x00
3108 #define GL_MOVE_TO_NV                     0x02
3109 #define GL_RELATIVE_MOVE_TO_NV            0x03
3110 #define GL_LINE_TO_NV                     0x04
3111 #define GL_RELATIVE_LINE_TO_NV            0x05
3112 #define GL_HORIZONTAL_LINE_TO_NV          0x06
3113 #define GL_RELATIVE_HORIZONTAL_LINE_TO_NV 0x07
3114 #define GL_VERTICAL_LINE_TO_NV            0x08
3115 #define GL_RELATIVE_VERTICAL_LINE_TO_NV   0x09
3116 #define GL_QUADRATIC_CURVE_TO_NV          0x0A
3117 #define GL_RELATIVE_QUADRATIC_CURVE_TO_NV 0x0B
3118 #define GL_CUBIC_CURVE_TO_NV              0x0C
3119 #define GL_RELATIVE_CUBIC_CURVE_TO_NV     0x0D
3120 #define GL_SMOOTH_QUADRATIC_CURVE_TO_NV   0x0E
3121 #define GL_RELATIVE_SMOOTH_QUADRATIC_CURVE_TO_NV 0x0F
3122 #define GL_SMOOTH_CUBIC_CURVE_TO_NV       0x10
3123 #define GL_RELATIVE_SMOOTH_CUBIC_CURVE_TO_NV 0x11
3124 #define GL_SMALL_CCW_ARC_TO_NV            0x12
3125 #define GL_RELATIVE_SMALL_CCW_ARC_TO_NV   0x13
3126 #define GL_SMALL_CW_ARC_TO_NV             0x14
3127 #define GL_RELATIVE_SMALL_CW_ARC_TO_NV    0x15
3128 #define GL_LARGE_CCW_ARC_TO_NV            0x16
3129 #define GL_RELATIVE_LARGE_CCW_ARC_TO_NV   0x17
3130 #define GL_LARGE_CW_ARC_TO_NV             0x18
3131 #define GL_RELATIVE_LARGE_CW_ARC_TO_NV    0x19
3132 #define GL_RESTART_PATH_NV                0xF0
3133 #define GL_DUP_FIRST_CUBIC_CURVE_TO_NV    0xF2
3134 #define GL_DUP_LAST_CUBIC_CURVE_TO_NV     0xF4
3135 #define GL_RECT_NV                        0xF6
3136 #define GL_CIRCULAR_CCW_ARC_TO_NV         0xF8
3137 #define GL_CIRCULAR_CW_ARC_TO_NV          0xFA
3138 #define GL_CIRCULAR_TANGENT_ARC_TO_NV     0xFC
3139 #define GL_ARC_TO_NV                      0xFE
3140 #define GL_RELATIVE_ARC_TO_NV             0xFF
3141 #define GL_BOLD_BIT_NV                    0x01
3142 #define GL_ITALIC_BIT_NV                  0x02
3143 #define GL_GLYPH_WIDTH_BIT_NV             0x01
3144 #define GL_GLYPH_HEIGHT_BIT_NV            0x02
3145 #define GL_GLYPH_HORIZONTAL_BEARING_X_BIT_NV 0x04
3146 #define GL_GLYPH_HORIZONTAL_BEARING_Y_BIT_NV 0x08
3147 #define GL_GLYPH_HORIZONTAL_BEARING_ADVANCE_BIT_NV 0x10
3148 #define GL_GLYPH_VERTICAL_BEARING_X_BIT_NV 0x20
3149 #define GL_GLYPH_VERTICAL_BEARING_Y_BIT_NV 0x40
3150 #define GL_GLYPH_VERTICAL_BEARING_ADVANCE_BIT_NV 0x80
3151 #define GL_GLYPH_HAS_KERNING_BIT_NV       0x100
3152 #define GL_FONT_X_MIN_BOUNDS_BIT_NV       0x00010000
3153 #define GL_FONT_Y_MIN_BOUNDS_BIT_NV       0x00020000
3154 #define GL_FONT_X_MAX_BOUNDS_BIT_NV       0x00040000
3155 #define GL_FONT_Y_MAX_BOUNDS_BIT_NV       0x00080000
3156 #define GL_FONT_UNITS_PER_EM_BIT_NV       0x00100000
3157 #define GL_FONT_ASCENDER_BIT_NV           0x00200000
3158 #define GL_FONT_DESCENDER_BIT_NV          0x00400000
3159 #define GL_FONT_HEIGHT_BIT_NV             0x00800000
3160 #define GL_FONT_MAX_ADVANCE_WIDTH_BIT_NV  0x01000000
3161 #define GL_FONT_MAX_ADVANCE_HEIGHT_BIT_NV 0x02000000
3162 #define GL_FONT_UNDERLINE_POSITION_BIT_NV 0x04000000
3163 #define GL_FONT_UNDERLINE_THICKNESS_BIT_NV 0x08000000
3164 #define GL_FONT_HAS_KERNING_BIT_NV        0x10000000
3165 #define GL_ROUNDED_RECT_NV                0xE8
3166 #define GL_RELATIVE_ROUNDED_RECT_NV       0xE9
3167 #define GL_ROUNDED_RECT2_NV               0xEA
3168 #define GL_RELATIVE_ROUNDED_RECT2_NV      0xEB
3169 #define GL_ROUNDED_RECT4_NV               0xEC
3170 #define GL_RELATIVE_ROUNDED_RECT4_NV      0xED
3171 #define GL_ROUNDED_RECT8_NV               0xEE
3172 #define GL_RELATIVE_ROUNDED_RECT8_NV      0xEF
3173 #define GL_RELATIVE_RECT_NV               0xF7
3174 #define GL_FONT_GLYPHS_AVAILABLE_NV       0x9368
3175 #define GL_FONT_TARGET_UNAVAILABLE_NV     0x9369
3176 #define GL_FONT_UNAVAILABLE_NV            0x936A
3177 #define GL_FONT_UNINTELLIGIBLE_NV         0x936B
3178 #define GL_CONIC_CURVE_TO_NV              0x1A
3179 #define GL_RELATIVE_CONIC_CURVE_TO_NV     0x1B
3180 #define GL_FONT_NUM_GLYPH_INDICES_BIT_NV  0x20000000
3181 #define GL_STANDARD_FONT_FORMAT_NV        0x936C
3182 #define GL_PATH_PROJECTION_NV             0x1701
3183 #define GL_PATH_MODELVIEW_NV              0x1700
3184 #define GL_PATH_MODELVIEW_STACK_DEPTH_NV  0x0BA3
3185 #define GL_PATH_MODELVIEW_MATRIX_NV       0x0BA6
3186 #define GL_PATH_MAX_MODELVIEW_STACK_DEPTH_NV 0x0D36
3187 #define GL_PATH_TRANSPOSE_MODELVIEW_MATRIX_NV 0x84E3
3188 #define GL_PATH_PROJECTION_STACK_DEPTH_NV 0x0BA4
3189 #define GL_PATH_PROJECTION_MATRIX_NV      0x0BA7
3190 #define GL_PATH_MAX_PROJECTION_STACK_DEPTH_NV 0x0D38
3191 #define GL_PATH_TRANSPOSE_PROJECTION_MATRIX_NV 0x84E4
3192 #define GL_FRAGMENT_INPUT_NV              0x936D
3193 #endif /* GL_NV_path_rendering */
3194 
3195 #ifndef GL_NV_path_rendering_shared_edge
3196 #define GL_NV_path_rendering_shared_edge 1
3197 #define GL_SHARED_EDGE_NV                 0xC0
3198 #endif /* GL_NV_path_rendering_shared_edge */
3199 
3200 #ifndef GL_NV_polygon_mode
3201 #define GL_NV_polygon_mode 1
3202 #define GL_POLYGON_MODE_NV                0x0B40
3203 #define GL_POLYGON_OFFSET_POINT_NV        0x2A01
3204 #define GL_POLYGON_OFFSET_LINE_NV         0x2A02
3205 #define GL_POINT_NV                       0x1B00
3206 #define GL_LINE_NV                        0x1B01
3207 #define GL_FILL_NV                        0x1B02
3208 #endif /* GL_NV_polygon_mode */
3209 
3210 #ifndef GL_NV_read_buffer
3211 #define GL_NV_read_buffer 1
3212 #define GL_READ_BUFFER_NV                 0x0C02
3213 #endif /* GL_NV_read_buffer */
3214 
3215 #ifndef GL_NV_read_buffer_front
3216 #define GL_NV_read_buffer_front 1
3217 #endif /* GL_NV_read_buffer_front */
3218 
3219 #ifndef GL_NV_read_depth
3220 #define GL_NV_read_depth 1
3221 #endif /* GL_NV_read_depth */
3222 
3223 #ifndef GL_NV_read_depth_stencil
3224 #define GL_NV_read_depth_stencil 1
3225 #endif /* GL_NV_read_depth_stencil */
3226 
3227 #ifndef GL_NV_read_stencil
3228 #define GL_NV_read_stencil 1
3229 #endif /* GL_NV_read_stencil */
3230 
3231 #ifndef GL_NV_sRGB_formats
3232 #define GL_NV_sRGB_formats 1
3233 #define GL_SLUMINANCE_NV                  0x8C46
3234 #define GL_SLUMINANCE_ALPHA_NV            0x8C44
3235 #define GL_SRGB8_NV                       0x8C41
3236 #define GL_SLUMINANCE8_NV                 0x8C47
3237 #define GL_SLUMINANCE8_ALPHA8_NV          0x8C45
3238 #define GL_COMPRESSED_SRGB_S3TC_DXT1_NV   0x8C4C
3239 #define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_NV 0x8C4D
3240 #define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_NV 0x8C4E
3241 #define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_NV 0x8C4F
3242 #define GL_ETC1_SRGB8_NV                  0x88EE
3243 #endif /* GL_NV_sRGB_formats */
3244 
3245 #ifndef GL_NV_sample_locations
3246 #define GL_NV_sample_locations 1
3247 #define GL_SAMPLE_LOCATION_SUBPIXEL_BITS_NV 0x933D
3248 #define GL_SAMPLE_LOCATION_PIXEL_GRID_WIDTH_NV 0x933E
3249 #define GL_SAMPLE_LOCATION_PIXEL_GRID_HEIGHT_NV 0x933F
3250 #define GL_PROGRAMMABLE_SAMPLE_LOCATION_TABLE_SIZE_NV 0x9340
3251 #define GL_SAMPLE_LOCATION_NV             0x8E50
3252 #define GL_PROGRAMMABLE_SAMPLE_LOCATION_NV 0x9341
3253 #define GL_FRAMEBUFFER_PROGRAMMABLE_SAMPLE_LOCATIONS_NV 0x9342
3254 #define GL_FRAMEBUFFER_SAMPLE_LOCATION_PIXEL_GRID_NV 0x9343
3255 #endif /* GL_NV_sample_locations */
3256 
3257 #ifndef GL_NV_sample_mask_override_coverage
3258 #define GL_NV_sample_mask_override_coverage 1
3259 #endif /* GL_NV_sample_mask_override_coverage */
3260 
3261 #ifndef GL_NV_shader_noperspective_interpolation
3262 #define GL_NV_shader_noperspective_interpolation 1
3263 #endif /* GL_NV_shader_noperspective_interpolation */
3264 
3265 #ifndef GL_NV_shadow_samplers_array
3266 #define GL_NV_shadow_samplers_array 1
3267 #define GL_SAMPLER_2D_ARRAY_SHADOW_NV     0x8DC4
3268 #endif /* GL_NV_shadow_samplers_array */
3269 
3270 #ifndef GL_NV_shadow_samplers_cube
3271 #define GL_NV_shadow_samplers_cube 1
3272 #define GL_SAMPLER_CUBE_SHADOW_NV         0x8DC5
3273 #endif /* GL_NV_shadow_samplers_cube */
3274 
3275 #ifndef GL_NV_texture_border_clamp
3276 #define GL_NV_texture_border_clamp 1
3277 #define GL_TEXTURE_BORDER_COLOR_NV        0x1004
3278 #define GL_CLAMP_TO_BORDER_NV             0x812D
3279 #endif /* GL_NV_texture_border_clamp */
3280 
3281 #ifndef GL_NV_texture_compression_s3tc_update
3282 #define GL_NV_texture_compression_s3tc_update 1
3283 #endif /* GL_NV_texture_compression_s3tc_update */
3284 
3285 #ifndef GL_NV_texture_npot_2D_mipmap
3286 #define GL_NV_texture_npot_2D_mipmap 1
3287 #endif /* GL_NV_texture_npot_2D_mipmap */
3288 
3289 #ifndef GL_NV_viewport_array
3290 #define GL_NV_viewport_array 1
3291 #define GL_MAX_VIEWPORTS_NV               0x825B
3292 #define GL_VIEWPORT_SUBPIXEL_BITS_NV      0x825C
3293 #define GL_VIEWPORT_BOUNDS_RANGE_NV       0x825D
3294 #define GL_VIEWPORT_INDEX_PROVOKING_VERTEX_NV 0x825F
3295 #endif /* GL_NV_viewport_array */
3296 
3297 #ifndef GL_NV_viewport_array2
3298 #define GL_NV_viewport_array2 1
3299 #endif /* GL_NV_viewport_array2 */
3300 
3301 #ifndef GL_OVR_multiview
3302 #define GL_OVR_multiview 1
3303 #define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_NUM_VIEWS_OVR 0x9630
3304 #define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_BASE_VIEW_INDEX_OVR 0x9632
3305 #define GL_MAX_VIEWS_OVR                  0x9631
3306 #endif /* GL_OVR_multiview */
3307 
3308 #ifndef GL_OVR_multiview2
3309 #define GL_OVR_multiview2 1
3310 #endif /* GL_OVR_multiview2 */
3311 
3312 #ifndef GL_OVR_multiview_multisampled_render_to_texture
3313 #define GL_OVR_multiview_multisampled_render_to_texture 1
3314 #endif /* GL_OVR_multiview_multisampled_render_to_texture */
3315 
3316 #ifndef GL_QCOM_alpha_test
3317 #define GL_QCOM_alpha_test 1
3318 #define GL_ALPHA_TEST_QCOM                0x0BC0
3319 #define GL_ALPHA_TEST_FUNC_QCOM           0x0BC1
3320 #define GL_ALPHA_TEST_REF_QCOM            0x0BC2
3321 #endif /* GL_QCOM_alpha_test */
3322 
3323 #ifndef GL_QCOM_binning_control
3324 #define GL_QCOM_binning_control 1
3325 #define GL_BINNING_CONTROL_HINT_QCOM      0x8FB0
3326 #define GL_CPU_OPTIMIZED_QCOM             0x8FB1
3327 #define GL_GPU_OPTIMIZED_QCOM             0x8FB2
3328 #define GL_RENDER_DIRECT_TO_FRAMEBUFFER_QCOM 0x8FB3
3329 #endif /* GL_QCOM_binning_control */
3330 
3331 #ifndef GL_QCOM_driver_control
3332 #define GL_QCOM_driver_control 1
3333 #endif /* GL_QCOM_driver_control */
3334 
3335 #ifndef GL_QCOM_extended_get
3336 #define GL_QCOM_extended_get 1
3337 #define GL_TEXTURE_WIDTH_QCOM             0x8BD2
3338 #define GL_TEXTURE_HEIGHT_QCOM            0x8BD3
3339 #define GL_TEXTURE_DEPTH_QCOM             0x8BD4
3340 #define GL_TEXTURE_INTERNAL_FORMAT_QCOM   0x8BD5
3341 #define GL_TEXTURE_FORMAT_QCOM            0x8BD6
3342 #define GL_TEXTURE_TYPE_QCOM              0x8BD7
3343 #define GL_TEXTURE_IMAGE_VALID_QCOM       0x8BD8
3344 #define GL_TEXTURE_NUM_LEVELS_QCOM        0x8BD9
3345 #define GL_TEXTURE_TARGET_QCOM            0x8BDA
3346 #define GL_TEXTURE_OBJECT_VALID_QCOM      0x8BDB
3347 #define GL_STATE_RESTORE                  0x8BDC
3348 #endif /* GL_QCOM_extended_get */
3349 
3350 #ifndef GL_QCOM_extended_get2
3351 #define GL_QCOM_extended_get2 1
3352 #endif /* GL_QCOM_extended_get2 */
3353 
3354 #ifndef GL_QCOM_perfmon_global_mode
3355 #define GL_QCOM_perfmon_global_mode 1
3356 #define GL_PERFMON_GLOBAL_MODE_QCOM       0x8FA0
3357 #endif /* GL_QCOM_perfmon_global_mode */
3358 
3359 #ifndef GL_QCOM_tiled_rendering
3360 #define GL_QCOM_tiled_rendering 1
3361 #define GL_COLOR_BUFFER_BIT0_QCOM         0x00000001
3362 #define GL_COLOR_BUFFER_BIT1_QCOM         0x00000002
3363 #define GL_COLOR_BUFFER_BIT2_QCOM         0x00000004
3364 #define GL_COLOR_BUFFER_BIT3_QCOM         0x00000008
3365 #define GL_COLOR_BUFFER_BIT4_QCOM         0x00000010
3366 #define GL_COLOR_BUFFER_BIT5_QCOM         0x00000020
3367 #define GL_COLOR_BUFFER_BIT6_QCOM         0x00000040
3368 #define GL_COLOR_BUFFER_BIT7_QCOM         0x00000080
3369 #define GL_DEPTH_BUFFER_BIT0_QCOM         0x00000100
3370 #define GL_DEPTH_BUFFER_BIT1_QCOM         0x00000200
3371 #define GL_DEPTH_BUFFER_BIT2_QCOM         0x00000400
3372 #define GL_DEPTH_BUFFER_BIT3_QCOM         0x00000800
3373 #define GL_DEPTH_BUFFER_BIT4_QCOM         0x00001000
3374 #define GL_DEPTH_BUFFER_BIT5_QCOM         0x00002000
3375 #define GL_DEPTH_BUFFER_BIT6_QCOM         0x00004000
3376 #define GL_DEPTH_BUFFER_BIT7_QCOM         0x00008000
3377 #define GL_STENCIL_BUFFER_BIT0_QCOM       0x00010000
3378 #define GL_STENCIL_BUFFER_BIT1_QCOM       0x00020000
3379 #define GL_STENCIL_BUFFER_BIT2_QCOM       0x00040000
3380 #define GL_STENCIL_BUFFER_BIT3_QCOM       0x00080000
3381 #define GL_STENCIL_BUFFER_BIT4_QCOM       0x00100000
3382 #define GL_STENCIL_BUFFER_BIT5_QCOM       0x00200000
3383 #define GL_STENCIL_BUFFER_BIT6_QCOM       0x00400000
3384 #define GL_STENCIL_BUFFER_BIT7_QCOM       0x00800000
3385 #define GL_MULTISAMPLE_BUFFER_BIT0_QCOM   0x01000000
3386 #define GL_MULTISAMPLE_BUFFER_BIT1_QCOM   0x02000000
3387 #define GL_MULTISAMPLE_BUFFER_BIT2_QCOM   0x04000000
3388 #define GL_MULTISAMPLE_BUFFER_BIT3_QCOM   0x08000000
3389 #define GL_MULTISAMPLE_BUFFER_BIT4_QCOM   0x10000000
3390 #define GL_MULTISAMPLE_BUFFER_BIT5_QCOM   0x20000000
3391 #define GL_MULTISAMPLE_BUFFER_BIT6_QCOM   0x40000000
3392 #define GL_MULTISAMPLE_BUFFER_BIT7_QCOM   0x80000000
3393 #endif /* GL_QCOM_tiled_rendering */
3394 
3395 #ifndef GL_QCOM_writeonly_rendering
3396 #define GL_QCOM_writeonly_rendering 1
3397 #define GL_WRITEONLY_RENDERING_QCOM       0x8823
3398 #endif /* GL_QCOM_writeonly_rendering */
3399 
3400 #ifndef GL_VIV_shader_binary
3401 #define GL_VIV_shader_binary 1
3402 #define GL_SHADER_BINARY_VIV              0x8FC4
3403 #endif /* GL_VIV_shader_binary */
3404 
3405 #else
3406 # ifndef EVAS_GL_NO_GL_H_CHECK
3407 #  error "You may only include either Evas_GL.h OR use your native GLES2 headers. If you use Evas to do GL, then you cannot use the native GLES2 headers."
3408 # endif
3409 #endif
3410 
3411 
3412 /* OpenGLES 1.0 */
3413 
3414 #ifndef __gl_h_
3415 # define __gl_h_ 1
3416 
3417 /* Note: This should redefine a lot of the macros already defined above,
3418  * but the compiler shouldn't raise any warning since the definitions are
3419  * exactly the same.
3420  */
3421 
3422 /* OpenGL ES core versions */
3423 #define GL_VERSION_ES_CM_1_0          1
3424 #define GL_VERSION_ES_CL_1_0          1
3425 #define GL_VERSION_ES_CM_1_1          1
3426 #define GL_VERSION_ES_CL_1_1          1
3427 
3428 /* ClearBufferMask */
3429 #define GL_DEPTH_BUFFER_BIT               0x00000100
3430 #define GL_STENCIL_BUFFER_BIT             0x00000400
3431 #define GL_COLOR_BUFFER_BIT               0x00004000
3432 
3433 /* Boolean */
3434 #define GL_FALSE                          0
3435 #define GL_TRUE                           1
3436 
3437 /* BeginMode */
3438 #define GL_POINTS                         0x0000
3439 #define GL_LINES                          0x0001
3440 #define GL_LINE_LOOP                      0x0002
3441 #define GL_LINE_STRIP                     0x0003
3442 #define GL_TRIANGLES                      0x0004
3443 #define GL_TRIANGLE_STRIP                 0x0005
3444 #define GL_TRIANGLE_FAN                   0x0006
3445 
3446 /* AlphaFunction */
3447 #define GL_NEVER                          0x0200
3448 #define GL_LESS                           0x0201
3449 #define GL_EQUAL                          0x0202
3450 #define GL_LEQUAL                         0x0203
3451 #define GL_GREATER                        0x0204
3452 #define GL_NOTEQUAL                       0x0205
3453 #define GL_GEQUAL                         0x0206
3454 #define GL_ALWAYS                         0x0207
3455 
3456 /* BlendingFactorDest */
3457 #define GL_ZERO                           0
3458 #define GL_ONE                            1
3459 #define GL_SRC_COLOR                      0x0300
3460 #define GL_ONE_MINUS_SRC_COLOR            0x0301
3461 #define GL_SRC_ALPHA                      0x0302
3462 #define GL_ONE_MINUS_SRC_ALPHA            0x0303
3463 #define GL_DST_ALPHA                      0x0304
3464 #define GL_ONE_MINUS_DST_ALPHA            0x0305
3465 
3466 /* BlendingFactorSrc */
3467 /*      GL_ZERO */
3468 /*      GL_ONE */
3469 #define GL_DST_COLOR                      0x0306
3470 #define GL_ONE_MINUS_DST_COLOR            0x0307
3471 #define GL_SRC_ALPHA_SATURATE             0x0308
3472 /*      GL_SRC_ALPHA */
3473 /*      GL_ONE_MINUS_SRC_ALPHA */
3474 /*      GL_DST_ALPHA */
3475 /*      GL_ONE_MINUS_DST_ALPHA */
3476 
3477 /* ClipPlaneName */
3478 #define GL_CLIP_PLANE0                    0x3000
3479 #define GL_CLIP_PLANE1                    0x3001
3480 #define GL_CLIP_PLANE2                    0x3002
3481 #define GL_CLIP_PLANE3                    0x3003
3482 #define GL_CLIP_PLANE4                    0x3004
3483 #define GL_CLIP_PLANE5                    0x3005
3484 
3485 /* ColorMaterialFace */
3486 /*      GL_FRONT_AND_BACK */
3487 
3488 /* ColorMaterialParameter */
3489 /*      GL_AMBIENT_AND_DIFFUSE */
3490 
3491 /* ColorPointerType */
3492 /*      GL_UNSIGNED_BYTE */
3493 /*      GL_FLOAT */
3494 /*      GL_FIXED */
3495 
3496 /* CullFaceMode */
3497 #define GL_FRONT                          0x0404
3498 #define GL_BACK                           0x0405
3499 #define GL_FRONT_AND_BACK                 0x0408
3500 
3501 /* DepthFunction */
3502 /*      GL_NEVER */
3503 /*      GL_LESS */
3504 /*      GL_EQUAL */
3505 /*      GL_LEQUAL */
3506 /*      GL_GREATER */
3507 /*      GL_NOTEQUAL */
3508 /*      GL_GEQUAL */
3509 /*      GL_ALWAYS */
3510 
3511 /* EnableCap */
3512 #define GL_FOG                            0x0B60
3513 #define GL_LIGHTING                       0x0B50
3514 #define GL_TEXTURE_2D                     0x0DE1
3515 #define GL_CULL_FACE                      0x0B44
3516 #define GL_ALPHA_TEST                     0x0BC0
3517 #define GL_BLEND                          0x0BE2
3518 #define GL_COLOR_LOGIC_OP                 0x0BF2
3519 #define GL_DITHER                         0x0BD0
3520 #define GL_STENCIL_TEST                   0x0B90
3521 #define GL_DEPTH_TEST                     0x0B71
3522 /*      GL_LIGHT0 */
3523 /*      GL_LIGHT1 */
3524 /*      GL_LIGHT2 */
3525 /*      GL_LIGHT3 */
3526 /*      GL_LIGHT4 */
3527 /*      GL_LIGHT5 */
3528 /*      GL_LIGHT6 */
3529 /*      GL_LIGHT7 */
3530 #define GL_POINT_SMOOTH                   0x0B10
3531 #define GL_LINE_SMOOTH                    0x0B20
3532 #define GL_SCISSOR_TEST                   0x0C11
3533 #define GL_COLOR_MATERIAL                 0x0B57
3534 #define GL_NORMALIZE                      0x0BA1
3535 #define GL_RESCALE_NORMAL                 0x803A
3536 #define GL_POLYGON_OFFSET_FILL            0x8037
3537 #define GL_VERTEX_ARRAY                   0x8074
3538 #define GL_NORMAL_ARRAY                   0x8075
3539 #define GL_COLOR_ARRAY                    0x8076
3540 #define GL_TEXTURE_COORD_ARRAY            0x8078
3541 #define GL_MULTISAMPLE                    0x809D
3542 #define GL_SAMPLE_ALPHA_TO_COVERAGE       0x809E
3543 #define GL_SAMPLE_ALPHA_TO_ONE            0x809F
3544 #define GL_SAMPLE_COVERAGE                0x80A0
3545 
3546 /* ErrorCode */
3547 #define GL_NO_ERROR                       0
3548 #define GL_INVALID_ENUM                   0x0500
3549 #define GL_INVALID_VALUE                  0x0501
3550 #define GL_INVALID_OPERATION              0x0502
3551 #define GL_STACK_OVERFLOW                 0x0503
3552 #define GL_STACK_UNDERFLOW                0x0504
3553 #define GL_OUT_OF_MEMORY                  0x0505
3554 
3555 /* FogMode */
3556 /*      GL_LINEAR */
3557 #define GL_EXP                            0x0800
3558 #define GL_EXP2                           0x0801
3559 
3560 /* FogParameter */
3561 #define GL_FOG_DENSITY                    0x0B62
3562 #define GL_FOG_START                      0x0B63
3563 #define GL_FOG_END                        0x0B64
3564 #define GL_FOG_MODE                       0x0B65
3565 #define GL_FOG_COLOR                      0x0B66
3566 
3567 /* FrontFaceDirection */
3568 #define GL_CW                             0x0900
3569 #define GL_CCW                            0x0901
3570 
3571 /* GetPName */
3572 #define GL_CURRENT_COLOR                  0x0B00
3573 #define GL_CURRENT_NORMAL                 0x0B02
3574 #define GL_CURRENT_TEXTURE_COORDS         0x0B03
3575 #define GL_POINT_SIZE                     0x0B11
3576 #define GL_POINT_SIZE_MIN                 0x8126
3577 #define GL_POINT_SIZE_MAX                 0x8127
3578 #define GL_POINT_FADE_THRESHOLD_SIZE      0x8128
3579 #define GL_POINT_DISTANCE_ATTENUATION     0x8129
3580 #define GL_SMOOTH_POINT_SIZE_RANGE        0x0B12
3581 #define GL_LINE_WIDTH                     0x0B21
3582 #define GL_SMOOTH_LINE_WIDTH_RANGE        0x0B22
3583 #define GL_ALIASED_POINT_SIZE_RANGE       0x846D
3584 #define GL_ALIASED_LINE_WIDTH_RANGE       0x846E
3585 #define GL_CULL_FACE_MODE                 0x0B45
3586 #define GL_FRONT_FACE                     0x0B46
3587 #define GL_SHADE_MODEL                    0x0B54
3588 #define GL_DEPTH_RANGE                    0x0B70
3589 #define GL_DEPTH_WRITEMASK                0x0B72
3590 #define GL_DEPTH_CLEAR_VALUE              0x0B73
3591 #define GL_DEPTH_FUNC                     0x0B74
3592 #define GL_STENCIL_CLEAR_VALUE            0x0B91
3593 #define GL_STENCIL_FUNC                   0x0B92
3594 #define GL_STENCIL_VALUE_MASK             0x0B93
3595 #define GL_STENCIL_FAIL                   0x0B94
3596 #define GL_STENCIL_PASS_DEPTH_FAIL        0x0B95
3597 #define GL_STENCIL_PASS_DEPTH_PASS        0x0B96
3598 #define GL_STENCIL_REF                    0x0B97
3599 #define GL_STENCIL_WRITEMASK              0x0B98
3600 #define GL_MATRIX_MODE                    0x0BA0
3601 #define GL_VIEWPORT                       0x0BA2
3602 #define GL_MODELVIEW_STACK_DEPTH          0x0BA3
3603 #define GL_PROJECTION_STACK_DEPTH         0x0BA4
3604 #define GL_TEXTURE_STACK_DEPTH            0x0BA5
3605 #define GL_MODELVIEW_MATRIX               0x0BA6
3606 #define GL_PROJECTION_MATRIX              0x0BA7
3607 #define GL_TEXTURE_MATRIX                 0x0BA8
3608 #define GL_ALPHA_TEST_FUNC                0x0BC1
3609 #define GL_ALPHA_TEST_REF                 0x0BC2
3610 #define GL_BLEND_DST                      0x0BE0
3611 #define GL_BLEND_SRC                      0x0BE1
3612 #define GL_LOGIC_OP_MODE                  0x0BF0
3613 #define GL_SCISSOR_BOX                    0x0C10
3614 #define GL_SCISSOR_TEST                   0x0C11
3615 #define GL_COLOR_CLEAR_VALUE              0x0C22
3616 #define GL_COLOR_WRITEMASK                0x0C23
3617 #define GL_UNPACK_ALIGNMENT               0x0CF5
3618 #define GL_PACK_ALIGNMENT                 0x0D05
3619 #define GL_MAX_LIGHTS                     0x0D31
3620 #define GL_MAX_CLIP_PLANES                0x0D32
3621 #define GL_MAX_TEXTURE_SIZE               0x0D33
3622 #define GL_MAX_MODELVIEW_STACK_DEPTH      0x0D36
3623 #define GL_MAX_PROJECTION_STACK_DEPTH     0x0D38
3624 #define GL_MAX_TEXTURE_STACK_DEPTH        0x0D39
3625 #define GL_MAX_VIEWPORT_DIMS              0x0D3A
3626 #define GL_MAX_TEXTURE_UNITS              0x84E2
3627 #define GL_SUBPIXEL_BITS                  0x0D50
3628 #define GL_RED_BITS                       0x0D52
3629 #define GL_GREEN_BITS                     0x0D53
3630 #define GL_BLUE_BITS                      0x0D54
3631 #define GL_ALPHA_BITS                     0x0D55
3632 #define GL_DEPTH_BITS                     0x0D56
3633 #define GL_STENCIL_BITS                   0x0D57
3634 #define GL_POLYGON_OFFSET_UNITS           0x2A00
3635 #define GL_POLYGON_OFFSET_FILL            0x8037
3636 #define GL_POLYGON_OFFSET_FACTOR          0x8038
3637 #define GL_TEXTURE_BINDING_2D             0x8069
3638 #define GL_VERTEX_ARRAY_SIZE              0x807A
3639 #define GL_VERTEX_ARRAY_TYPE              0x807B
3640 #define GL_VERTEX_ARRAY_STRIDE            0x807C
3641 #define GL_NORMAL_ARRAY_TYPE              0x807E
3642 #define GL_NORMAL_ARRAY_STRIDE            0x807F
3643 #define GL_COLOR_ARRAY_SIZE               0x8081
3644 #define GL_COLOR_ARRAY_TYPE               0x8082
3645 #define GL_COLOR_ARRAY_STRIDE             0x8083
3646 #define GL_TEXTURE_COORD_ARRAY_SIZE       0x8088
3647 #define GL_TEXTURE_COORD_ARRAY_TYPE       0x8089
3648 #define GL_TEXTURE_COORD_ARRAY_STRIDE     0x808A
3649 #define GL_VERTEX_ARRAY_POINTER           0x808E
3650 #define GL_NORMAL_ARRAY_POINTER           0x808F
3651 #define GL_COLOR_ARRAY_POINTER            0x8090
3652 #define GL_TEXTURE_COORD_ARRAY_POINTER    0x8092
3653 #define GL_SAMPLE_BUFFERS                 0x80A8
3654 #define GL_SAMPLES                        0x80A9
3655 #define GL_SAMPLE_COVERAGE_VALUE          0x80AA
3656 #define GL_SAMPLE_COVERAGE_INVERT         0x80AB
3657 
3658 /* GetTextureParameter */
3659 /*      GL_TEXTURE_MAG_FILTER */
3660 /*      GL_TEXTURE_MIN_FILTER */
3661 /*      GL_TEXTURE_WRAP_S */
3662 /*      GL_TEXTURE_WRAP_T */
3663 
3664 #define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2
3665 #define GL_COMPRESSED_TEXTURE_FORMATS     0x86A3
3666 
3667 /* HintMode */
3668 #define GL_DONT_CARE                      0x1100
3669 #define GL_FASTEST                        0x1101
3670 #define GL_NICEST                         0x1102
3671 
3672 /* HintTarget */
3673 #define GL_PERSPECTIVE_CORRECTION_HINT    0x0C50
3674 #define GL_POINT_SMOOTH_HINT              0x0C51
3675 #define GL_LINE_SMOOTH_HINT               0x0C52
3676 #define GL_FOG_HINT                       0x0C54
3677 #define GL_GENERATE_MIPMAP_HINT           0x8192
3678 
3679 /* LightModelParameter */
3680 #define GL_LIGHT_MODEL_AMBIENT            0x0B53
3681 #define GL_LIGHT_MODEL_TWO_SIDE           0x0B52
3682 
3683 /* LightParameter */
3684 #define GL_AMBIENT                        0x1200
3685 #define GL_DIFFUSE                        0x1201
3686 #define GL_SPECULAR                       0x1202
3687 #define GL_POSITION                       0x1203
3688 #define GL_SPOT_DIRECTION                 0x1204
3689 #define GL_SPOT_EXPONENT                  0x1205
3690 #define GL_SPOT_CUTOFF                    0x1206
3691 #define GL_CONSTANT_ATTENUATION           0x1207
3692 #define GL_LINEAR_ATTENUATION             0x1208
3693 #define GL_QUADRATIC_ATTENUATION          0x1209
3694 
3695 /* DataType */
3696 #define GL_BYTE                           0x1400
3697 #define GL_UNSIGNED_BYTE                  0x1401
3698 #define GL_SHORT                          0x1402
3699 #define GL_UNSIGNED_SHORT                 0x1403
3700 #define GL_FLOAT                          0x1406
3701 #define GL_FIXED                          0x140C
3702 
3703 /* LogicOp */
3704 #define GL_CLEAR                          0x1500
3705 #define GL_AND                            0x1501
3706 #define GL_AND_REVERSE                    0x1502
3707 #define GL_COPY                           0x1503
3708 #define GL_AND_INVERTED                   0x1504
3709 #define GL_NOOP                           0x1505
3710 #define GL_XOR                            0x1506
3711 #define GL_OR                             0x1507
3712 #define GL_NOR                            0x1508
3713 #define GL_EQUIV                          0x1509
3714 #define GL_INVERT                         0x150A
3715 #define GL_OR_REVERSE                     0x150B
3716 #define GL_COPY_INVERTED                  0x150C
3717 #define GL_OR_INVERTED                    0x150D
3718 #define GL_NAND                           0x150E
3719 #define GL_SET                            0x150F
3720 
3721 /* MaterialFace */
3722 /*      GL_FRONT_AND_BACK */
3723 
3724 /* MaterialParameter */
3725 #define GL_EMISSION                       0x1600
3726 #define GL_SHININESS                      0x1601
3727 #define GL_AMBIENT_AND_DIFFUSE            0x1602
3728 /*      GL_AMBIENT */
3729 /*      GL_DIFFUSE */
3730 /*      GL_SPECULAR */
3731 
3732 /* MatrixMode */
3733 #define GL_MODELVIEW                      0x1700
3734 #define GL_PROJECTION                     0x1701
3735 #define GL_TEXTURE                        0x1702
3736 
3737 /* NormalPointerType */
3738 /*      GL_BYTE */
3739 /*      GL_SHORT */
3740 /*      GL_FLOAT */
3741 /*      GL_FIXED */
3742 
3743 /* PixelFormat */
3744 #define GL_ALPHA                          0x1906
3745 #define GL_RGB                            0x1907
3746 #define GL_RGBA                           0x1908
3747 #define GL_LUMINANCE                      0x1909
3748 #define GL_LUMINANCE_ALPHA                0x190A
3749 
3750 /* PixelStoreParameter */
3751 #define GL_UNPACK_ALIGNMENT               0x0CF5
3752 #define GL_PACK_ALIGNMENT                 0x0D05
3753 
3754 /* PixelType */
3755 /*      GL_UNSIGNED_BYTE */
3756 #define GL_UNSIGNED_SHORT_4_4_4_4         0x8033
3757 #define GL_UNSIGNED_SHORT_5_5_5_1         0x8034
3758 #define GL_UNSIGNED_SHORT_5_6_5           0x8363
3759 
3760 /* ShadingModel */
3761 #define GL_FLAT                           0x1D00
3762 #define GL_SMOOTH                         0x1D01
3763 
3764 /* StencilFunction */
3765 /*      GL_NEVER */
3766 /*      GL_LESS */
3767 /*      GL_EQUAL */
3768 /*      GL_LEQUAL */
3769 /*      GL_GREATER */
3770 /*      GL_NOTEQUAL */
3771 /*      GL_GEQUAL */
3772 /*      GL_ALWAYS */
3773 
3774 /* StencilOp */
3775 /*      GL_ZERO */
3776 #define GL_KEEP                           0x1E00
3777 #define GL_REPLACE                        0x1E01
3778 #define GL_INCR                           0x1E02
3779 #define GL_DECR                           0x1E03
3780 /*      GL_INVERT */
3781 
3782 /* StringName */
3783 #define GL_VENDOR                         0x1F00
3784 #define GL_RENDERER                       0x1F01
3785 #define GL_VERSION                        0x1F02
3786 #define GL_EXTENSIONS                     0x1F03
3787 
3788 /* TexCoordPointerType */
3789 /*      GL_SHORT */
3790 /*      GL_FLOAT */
3791 /*      GL_FIXED */
3792 /*      GL_BYTE */
3793 
3794 /* TextureEnvMode */
3795 #define GL_MODULATE                       0x2100
3796 #define GL_DECAL                          0x2101
3797 /*      GL_BLEND */
3798 #define GL_ADD                            0x0104
3799 /*      GL_REPLACE */
3800 
3801 /* TextureEnvParameter */
3802 #define GL_TEXTURE_ENV_MODE               0x2200
3803 #define GL_TEXTURE_ENV_COLOR              0x2201
3804 
3805 /* TextureEnvTarget */
3806 #define GL_TEXTURE_ENV                    0x2300
3807 
3808 /* TextureMagFilter */
3809 #define GL_NEAREST                        0x2600
3810 #define GL_LINEAR                         0x2601
3811 
3812 /* TextureMinFilter */
3813 /*      GL_NEAREST */
3814 /*      GL_LINEAR */
3815 #define GL_NEAREST_MIPMAP_NEAREST         0x2700
3816 #define GL_LINEAR_MIPMAP_NEAREST          0x2701
3817 #define GL_NEAREST_MIPMAP_LINEAR          0x2702
3818 #define GL_LINEAR_MIPMAP_LINEAR           0x2703
3819 
3820 /* TextureParameterName */
3821 #define GL_TEXTURE_MAG_FILTER             0x2800
3822 #define GL_TEXTURE_MIN_FILTER             0x2801
3823 #define GL_TEXTURE_WRAP_S                 0x2802
3824 #define GL_TEXTURE_WRAP_T                 0x2803
3825 #define GL_GENERATE_MIPMAP                0x8191
3826 
3827 /* TextureTarget */
3828 /*      GL_TEXTURE_2D */
3829 
3830 /* TextureUnit */
3831 #define GL_TEXTURE0                       0x84C0
3832 #define GL_TEXTURE1                       0x84C1
3833 #define GL_TEXTURE2                       0x84C2
3834 #define GL_TEXTURE3                       0x84C3
3835 #define GL_TEXTURE4                       0x84C4
3836 #define GL_TEXTURE5                       0x84C5
3837 #define GL_TEXTURE6                       0x84C6
3838 #define GL_TEXTURE7                       0x84C7
3839 #define GL_TEXTURE8                       0x84C8
3840 #define GL_TEXTURE9                       0x84C9
3841 #define GL_TEXTURE10                      0x84CA
3842 #define GL_TEXTURE11                      0x84CB
3843 #define GL_TEXTURE12                      0x84CC
3844 #define GL_TEXTURE13                      0x84CD
3845 #define GL_TEXTURE14                      0x84CE
3846 #define GL_TEXTURE15                      0x84CF
3847 #define GL_TEXTURE16                      0x84D0
3848 #define GL_TEXTURE17                      0x84D1
3849 #define GL_TEXTURE18                      0x84D2
3850 #define GL_TEXTURE19                      0x84D3
3851 #define GL_TEXTURE20                      0x84D4
3852 #define GL_TEXTURE21                      0x84D5
3853 #define GL_TEXTURE22                      0x84D6
3854 #define GL_TEXTURE23                      0x84D7
3855 #define GL_TEXTURE24                      0x84D8
3856 #define GL_TEXTURE25                      0x84D9
3857 #define GL_TEXTURE26                      0x84DA
3858 #define GL_TEXTURE27                      0x84DB
3859 #define GL_TEXTURE28                      0x84DC
3860 #define GL_TEXTURE29                      0x84DD
3861 #define GL_TEXTURE30                      0x84DE
3862 #define GL_TEXTURE31                      0x84DF
3863 #define GL_ACTIVE_TEXTURE                 0x84E0
3864 #define GL_CLIENT_ACTIVE_TEXTURE          0x84E1
3865 
3866 /* TextureWrapMode */
3867 #define GL_REPEAT                         0x2901
3868 #define GL_CLAMP_TO_EDGE                  0x812F
3869 
3870 /* VertexPointerType */
3871 /*      GL_SHORT */
3872 /*      GL_FLOAT */
3873 /*      GL_FIXED */
3874 /*      GL_BYTE */
3875 
3876 /* LightName */
3877 #define GL_LIGHT0                         0x4000
3878 #define GL_LIGHT1                         0x4001
3879 #define GL_LIGHT2                         0x4002
3880 #define GL_LIGHT3                         0x4003
3881 #define GL_LIGHT4                         0x4004
3882 #define GL_LIGHT5                         0x4005
3883 #define GL_LIGHT6                         0x4006
3884 #define GL_LIGHT7                         0x4007
3885 
3886 /* Buffer Objects */
3887 #define GL_ARRAY_BUFFER                   0x8892
3888 #define GL_ELEMENT_ARRAY_BUFFER           0x8893
3889 
3890 #define GL_ARRAY_BUFFER_BINDING               0x8894
3891 #define GL_ELEMENT_ARRAY_BUFFER_BINDING       0x8895
3892 #define GL_VERTEX_ARRAY_BUFFER_BINDING        0x8896
3893 #define GL_NORMAL_ARRAY_BUFFER_BINDING        0x8897
3894 #define GL_COLOR_ARRAY_BUFFER_BINDING         0x8898
3895 #define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING 0x889A
3896 
3897 #define GL_STATIC_DRAW                    0x88E4
3898 #define GL_DYNAMIC_DRAW                   0x88E8
3899 
3900 #define GL_BUFFER_SIZE                    0x8764
3901 #define GL_BUFFER_USAGE                   0x8765
3902 
3903 /* Texture combine + dot3 */
3904 #define GL_SUBTRACT                       0x84E7
3905 #define GL_COMBINE                        0x8570
3906 #define GL_COMBINE_RGB                    0x8571
3907 #define GL_COMBINE_ALPHA                  0x8572
3908 #define GL_RGB_SCALE                      0x8573
3909 #define GL_ADD_SIGNED                     0x8574
3910 #define GL_INTERPOLATE                    0x8575
3911 #define GL_CONSTANT                       0x8576
3912 #define GL_PRIMARY_COLOR                  0x8577
3913 #define GL_PREVIOUS                       0x8578
3914 #define GL_OPERAND0_RGB                   0x8590
3915 #define GL_OPERAND1_RGB                   0x8591
3916 #define GL_OPERAND2_RGB                   0x8592
3917 #define GL_OPERAND0_ALPHA                 0x8598
3918 #define GL_OPERAND1_ALPHA                 0x8599
3919 #define GL_OPERAND2_ALPHA                 0x859A
3920 
3921 #define GL_ALPHA_SCALE                    0x0D1C
3922 
3923 #define GL_SRC0_RGB                       0x8580
3924 #define GL_SRC1_RGB                       0x8581
3925 #define GL_SRC2_RGB                       0x8582
3926 #define GL_SRC0_ALPHA                     0x8588
3927 #define GL_SRC1_ALPHA                     0x8589
3928 #define GL_SRC2_ALPHA                     0x858A
3929 
3930 #define GL_DOT3_RGB                       0x86AE
3931 #define GL_DOT3_RGBA                      0x86AF
3932 
3933 /*------------------------------------------------------------------------*
3934  * required OES extension tokens
3935  *------------------------------------------------------------------------*/
3936 
3937 /* OES_read_format */
3938 #ifndef GL_OES_read_format
3939 #define GL_OES_read_format 1
3940 #define GL_IMPLEMENTATION_COLOR_READ_TYPE_OES                   0x8B9A
3941 #define GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES                 0x8B9B
3942 #endif
3943 
3944 /* OES_point_size_array */
3945 #ifndef GL_OES_point_size_array
3946 #define GL_OES_point_size_array 1
3947 #define GL_POINT_SIZE_ARRAY_OES                                 0x8B9C
3948 #define GL_POINT_SIZE_ARRAY_TYPE_OES                            0x898A
3949 #define GL_POINT_SIZE_ARRAY_STRIDE_OES                          0x898B
3950 #define GL_POINT_SIZE_ARRAY_POINTER_OES                         0x898C
3951 #define GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES                  0x8B9F
3952 #endif
3953 
3954 /* GL_OES_point_sprite */
3955 #ifndef GL_OES_point_sprite
3956 #define GL_OES_point_sprite 1
3957 #define GL_POINT_SPRITE_OES                                     0x8861
3958 #define GL_COORD_REPLACE_OES                                    0x8862
3959 #endif
3960 
3961 #else
3962 # ifndef EVAS_GL_NO_GL_H_CHECK
3963 #  error "You may only include either Evas_GL.h OR use your native GLES headers. If you use Evas to do GL, then you cannot use the native GLES headers."
3964 # endif
3965 #endif
3966 
3967 
3968 #ifndef __glext_h_
3969 #define __glext_h_ 1
3970 
3971 /*------------------------------------------------------------------------*
3972  * OES extension tokens
3973  *------------------------------------------------------------------------*/
3974 
3975 /* GL_OES_blend_equation_separate */
3976 #ifndef GL_OES_blend_equation_separate
3977 /* BLEND_EQUATION_RGB_OES same as BLEND_EQUATION_OES */
3978 #define GL_BLEND_EQUATION_RGB_OES                               0x8009
3979 #define GL_BLEND_EQUATION_ALPHA_OES                             0x883D
3980 #endif
3981 
3982 /* GL_OES_blend_func_separate */
3983 #ifndef GL_OES_blend_func_separate
3984 #define GL_BLEND_DST_RGB_OES                                    0x80C8
3985 #define GL_BLEND_SRC_RGB_OES                                    0x80C9
3986 #define GL_BLEND_DST_ALPHA_OES                                  0x80CA
3987 #define GL_BLEND_SRC_ALPHA_OES                                  0x80CB
3988 #endif
3989 
3990 /* GL_OES_blend_subtract */
3991 #ifndef GL_OES_blend_subtract
3992 #define GL_BLEND_EQUATION_OES                                   0x8009
3993 #define GL_FUNC_ADD_OES                                         0x8006
3994 #define GL_FUNC_SUBTRACT_OES                                    0x800A
3995 #define GL_FUNC_REVERSE_SUBTRACT_OES                            0x800B
3996 #endif
3997 
3998 /* GL_OES_draw_texture */
3999 #ifndef GL_OES_draw_texture
4000 #define GL_TEXTURE_CROP_RECT_OES                                0x8B9D
4001 #endif
4002 
4003 /* GL_OES_EGL_image */
4004 #ifndef GL_OES_EGL_image
4005 #endif
4006 
4007 /* GL_OES_fixed_point */
4008 #ifndef GL_OES_fixed_point
4009 #define GL_FIXED_OES                                            0x140C
4010 #endif
4011 
4012 /* GL_OES_framebuffer_object */
4013 #ifndef GL_OES_framebuffer_object
4014 #define GL_NONE_OES                                             0
4015 #define GL_FRAMEBUFFER_OES                                      0x8D40
4016 #define GL_RENDERBUFFER_OES                                     0x8D41
4017 #define GL_RGBA4_OES                                            0x8056
4018 #define GL_RGB5_A1_OES                                          0x8057
4019 #define GL_RGB565_OES                                           0x8D62
4020 #define GL_DEPTH_COMPONENT16_OES                                0x81A5
4021 #define GL_RENDERBUFFER_WIDTH_OES                               0x8D42
4022 #define GL_RENDERBUFFER_HEIGHT_OES                              0x8D43
4023 #define GL_RENDERBUFFER_INTERNAL_FORMAT_OES                     0x8D44
4024 #define GL_RENDERBUFFER_RED_SIZE_OES                            0x8D50
4025 #define GL_RENDERBUFFER_GREEN_SIZE_OES                          0x8D51
4026 #define GL_RENDERBUFFER_BLUE_SIZE_OES                           0x8D52
4027 #define GL_RENDERBUFFER_ALPHA_SIZE_OES                          0x8D53
4028 #define GL_RENDERBUFFER_DEPTH_SIZE_OES                          0x8D54
4029 #define GL_RENDERBUFFER_STENCIL_SIZE_OES                        0x8D55
4030 #define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES               0x8CD0
4031 #define GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES               0x8CD1
4032 #define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES             0x8CD2
4033 #define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES     0x8CD3
4034 #define GL_COLOR_ATTACHMENT0_OES                                0x8CE0
4035 #define GL_DEPTH_ATTACHMENT_OES                                 0x8D00
4036 #define GL_STENCIL_ATTACHMENT_OES                               0x8D20
4037 #define GL_FRAMEBUFFER_COMPLETE_OES                             0x8CD5
4038 #define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES                0x8CD6
4039 #define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES        0x8CD7
4040 #define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES                0x8CD9
4041 #define GL_FRAMEBUFFER_INCOMPLETE_FORMATS_OES                   0x8CDA
4042 #define GL_FRAMEBUFFER_UNSUPPORTED_OES                          0x8CDD
4043 #define GL_FRAMEBUFFER_BINDING_OES                              0x8CA6
4044 #define GL_RENDERBUFFER_BINDING_OES                             0x8CA7
4045 #define GL_MAX_RENDERBUFFER_SIZE_OES                            0x84E8
4046 #define GL_INVALID_FRAMEBUFFER_OPERATION_OES                    0x0506
4047 #endif
4048 
4049 /* GL_OES_matrix_get */
4050 #ifndef GL_OES_matrix_get
4051 #define GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES               0x898D
4052 #define GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES              0x898E
4053 #define GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES                 0x898F
4054 #endif
4055 
4056 /* GL_OES_matrix_palette */
4057 #ifndef GL_OES_matrix_palette
4058 #define GL_MAX_VERTEX_UNITS_OES                                 0x86A4
4059 #define GL_MAX_PALETTE_MATRICES_OES                             0x8842
4060 #define GL_MATRIX_PALETTE_OES                                   0x8840
4061 #define GL_MATRIX_INDEX_ARRAY_OES                               0x8844
4062 #define GL_WEIGHT_ARRAY_OES                                     0x86AD
4063 #define GL_CURRENT_PALETTE_MATRIX_OES                           0x8843
4064 #define GL_MATRIX_INDEX_ARRAY_SIZE_OES                          0x8846
4065 #define GL_MATRIX_INDEX_ARRAY_TYPE_OES                          0x8847
4066 #define GL_MATRIX_INDEX_ARRAY_STRIDE_OES                        0x8848
4067 #define GL_MATRIX_INDEX_ARRAY_POINTER_OES                       0x8849
4068 #define GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES                0x8B9E
4069 #define GL_WEIGHT_ARRAY_SIZE_OES                                0x86AB
4070 #define GL_WEIGHT_ARRAY_TYPE_OES                                0x86A9
4071 #define GL_WEIGHT_ARRAY_STRIDE_OES                              0x86AA
4072 #define GL_WEIGHT_ARRAY_POINTER_OES                             0x86AC
4073 #define GL_WEIGHT_ARRAY_BUFFER_BINDING_OES                      0x889E
4074 #endif
4075 
4076 /* GL_OES_stencil8 */
4077 #ifndef GL_OES_stencil8
4078 #define GL_STENCIL_INDEX8_OES                                   0x8D48
4079 #endif
4080 
4081 /* GL_OES_stencil_wrap */
4082 #ifndef GL_OES_stencil_wrap
4083 #define GL_INCR_WRAP_OES                                        0x8507
4084 #define GL_DECR_WRAP_OES                                        0x8508
4085 #endif
4086 
4087 /* GL_OES_texture_cube_map */
4088 #ifndef GL_OES_texture_cube_map
4089 #define GL_NORMAL_MAP_OES                                       0x8511
4090 #define GL_REFLECTION_MAP_OES                                   0x8512
4091 #define GL_TEXTURE_CUBE_MAP_OES                                 0x8513
4092 #define GL_TEXTURE_BINDING_CUBE_MAP_OES                         0x8514
4093 #define GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES                      0x8515
4094 #define GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES                      0x8516
4095 #define GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES                      0x8517
4096 #define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES                      0x8518
4097 #define GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES                      0x8519
4098 #define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES                      0x851A
4099 #define GL_MAX_CUBE_MAP_TEXTURE_SIZE_OES                        0x851C
4100 #define GL_TEXTURE_GEN_MODE_OES                                 0x2500
4101 #define GL_TEXTURE_GEN_STR_OES                                  0x8D60
4102 #endif
4103 
4104 /* GL_OES_texture_mirrored_repeat */
4105 #ifndef GL_OES_texture_mirrored_repeat
4106 #define GL_MIRRORED_REPEAT_OES                                  0x8370
4107 #endif
4108 
4109 /*------------------------------------------------------------------------*
4110  * EXT extension tokens
4111  *------------------------------------------------------------------------*/
4112 
4113 /* GL_EXT_texture_lod_bias */
4114 #ifndef GL_EXT_texture_lod_bias
4115 #define GL_MAX_TEXTURE_LOD_BIAS_EXT                             0x84FD
4116 #define GL_TEXTURE_FILTER_CONTROL_EXT                           0x8500
4117 #define GL_TEXTURE_LOD_BIAS_EXT                                 0x8501
4118 #endif
4119 
4120 /*------------------------------------------------------------------------*
4121  * IMG extension tokens
4122  *------------------------------------------------------------------------*/
4123 
4124 /* GL_IMG_texture_env_enhanced_fixed_function */
4125 #ifndef GL_IMG_texture_env_enhanced_fixed_function
4126 #define GL_MODULATE_COLOR_IMG                                   0x8C04
4127 #define GL_RECIP_ADD_SIGNED_ALPHA_IMG                           0x8C05
4128 #define GL_TEXTURE_ALPHA_MODULATE_IMG                           0x8C06
4129 #define GL_FACTOR_ALPHA_MODULATE_IMG                            0x8C07
4130 #define GL_FRAGMENT_ALPHA_MODULATE_IMG                          0x8C08
4131 #define GL_ADD_BLEND_IMG                                        0x8C09
4132 #define GL_DOT3_RGBA_IMG                                        0x86AF
4133 #endif
4134 
4135 /* GL_IMG_user_clip_plane */
4136 #ifndef GL_IMG_user_clip_plane
4137 #define GL_CLIP_PLANE0_IMG                                      0x3000
4138 #define GL_CLIP_PLANE1_IMG                                      0x3001
4139 #define GL_CLIP_PLANE2_IMG                                      0x3002
4140 #define GL_CLIP_PLANE3_IMG                                      0x3003
4141 #define GL_CLIP_PLANE4_IMG                                      0x3004
4142 #define GL_CLIP_PLANE5_IMG                                      0x3005
4143 #define GL_MAX_CLIP_PLANES_IMG                                  0x0D32
4144 #endif
4145 
4146 /*------------------------------------------------------------------------*
4147  * OES extension functions
4148  *------------------------------------------------------------------------*/
4149 
4150 /* GL_OES_blend_equation_separate */
4151 #ifndef GL_OES_blend_equation_separate
4152 #define GL_OES_blend_equation_separate 1
4153 #endif
4154 
4155 /* GL_OES_blend_func_separate */
4156 #ifndef GL_OES_blend_func_separate
4157 #define GL_OES_blend_func_separate 1
4158 #endif
4159 
4160 /* GL_OES_blend_subtract */
4161 #ifndef GL_OES_blend_subtract
4162 #define GL_OES_blend_subtract 1
4163 #endif
4164 
4165 /* GL_OES_byte_coordinates */
4166 #ifndef GL_OES_byte_coordinates
4167 #define GL_OES_byte_coordinates 1
4168 #endif
4169 
4170 /* GL_OES_draw_texture */
4171 #ifndef GL_OES_draw_texture
4172 #define GL_OES_draw_texture 1
4173 #endif
4174 
4175 /* GL_OES_extended_matrix_palette */
4176 #ifndef GL_OES_extended_matrix_palette
4177 #define GL_OES_extended_matrix_palette 1
4178 #endif
4179 
4180 /* GL_OES_fixed_point */
4181 #ifndef GL_OES_fixed_point
4182 #define GL_OES_fixed_point 1
4183 #endif
4184 
4185 /* GL_OES_framebuffer_object */
4186 #ifndef GL_OES_framebuffer_object
4187 #define GL_OES_framebuffer_object 1
4188 #endif
4189 
4190 /* GL_OES_matrix_get */
4191 #ifndef GL_OES_matrix_get
4192 #define GL_OES_matrix_get 1
4193 #endif
4194 
4195 /* GL_OES_matrix_palette */
4196 #ifndef GL_OES_matrix_palette
4197 #define GL_OES_matrix_palette 1
4198 #endif
4199 
4200 /* GL_OES_query_matrix */
4201 #ifndef GL_OES_query_matrix
4202 #define GL_OES_query_matrix 1
4203 #endif
4204 
4205 /* GL_OES_single_precision */
4206 #ifndef GL_OES_single_precision
4207 #define GL_OES_single_precision 1
4208 #endif
4209 
4210 /* GL_OES_stencil8 */
4211 #ifndef GL_OES_stencil8
4212 #define GL_OES_stencil8 1
4213 #endif
4214 
4215 /* GL_OES_stencil_wrap */
4216 #ifndef GL_OES_stencil_wrap
4217 #define GL_OES_stencil_wrap 1
4218 #endif
4219 
4220 /* GL_OES_texture_cube_map */
4221 #ifndef GL_OES_texture_cube_map
4222 #define GL_OES_texture_cube_map 1
4223 #endif
4224 
4225 /* GL_OES_texture_env_crossbar */
4226 #ifndef GL_OES_texture_env_crossbar
4227 #define GL_OES_texture_env_crossbar 1
4228 #endif
4229 
4230 /* GL_OES_texture_mirrored_repeat */
4231 #ifndef GL_OES_texture_mirrored_repeat
4232 #define GL_OES_texture_mirrored_repeat 1
4233 #endif
4234 
4235 /*------------------------------------------------------------------------*
4236  * APPLE extension functions
4237  *------------------------------------------------------------------------*/
4238 
4239 /* GL_APPLE_texture_2D_limited_npot */
4240 #ifndef GL_APPLE_texture_2D_limited_npot
4241 #define GL_APPLE_texture_2D_limited_npot 1
4242 #endif
4243 
4244 /*------------------------------------------------------------------------*
4245  * EXT extension functions
4246  *------------------------------------------------------------------------*/
4247 
4248 /* GL_EXT_texture_lod_bias */
4249 #ifndef GL_EXT_texture_lod_bias
4250 #define GL_EXT_texture_lod_bias 1
4251 #endif
4252 
4253 /*------------------------------------------------------------------------*
4254  * IMG extension functions
4255  *------------------------------------------------------------------------*/
4256 
4257 /* GL_IMG_texture_env_enhanced_fixed_function */
4258 #ifndef GL_IMG_texture_env_enhanced_fixed_function
4259 #define GL_IMG_texture_env_enhanced_fixed_function 1
4260 #endif
4261 
4262 /* GL_IMG_user_clip_plane */
4263 #ifndef GL_IMG_user_clip_plane
4264 #define GL_IMG_user_clip_plane 1
4265 #endif
4266 
4267 #else
4268 # ifndef EVAS_GL_NO_GL_H_CHECK
4269 #  error "You may only include either Evas_GL.h OR use your native GLES headers. If you use Evas to do GL, then you cannot use the native GLES headers."
4270 # endif
4271 #endif
4272 
4273 #ifndef GL_ES_VERSION_2_0
4274 /* GL types for handling large vertex buffer objects */
4275 # ifndef GL_VERSION_1_5
4276 #  include <stddef.h>
4277 typedef ptrdiff_t GLintptr;     // Changed khronos_intptr_t
4278 typedef ptrdiff_t GLsizeiptr;   // Changed khronos_ssize_t
4279 # endif
4280 #endif
4281 
4282 /* Some definitions from GLES 3.0.
4283  * Note: Evas_GL does NOT support GLES 3.
4284  */
4285 
4286 /* Evas can use RGB8_ETC2 and RGBA8_ETC2_EAC internally, depending on the driver */
4287 #define GL_COMPRESSED_RGB8_ETC2           0x9274
4288 #define GL_COMPRESSED_RGBA8_ETC2_EAC      0x9278
4289 
4290 
4291 // These types are required since we can't include GLES/gl.h or gl2.h
4292 typedef signed int         GLclampx;   // Changed khronos_int32_t
4293 typedef struct __GLsync*   GLsync;
4294 
4295 
4296 /* OpenGLES 3.0 */
4297 #ifndef __gl3_h_
4298 # define __gl3_h_ 1
4299 
4300 #define GL_READ_BUFFER                    0x0C02
4301 #define GL_UNPACK_ROW_LENGTH              0x0CF2
4302 #define GL_UNPACK_SKIP_ROWS               0x0CF3
4303 #define GL_UNPACK_SKIP_PIXELS             0x0CF4
4304 #define GL_PACK_ROW_LENGTH                0x0D02
4305 #define GL_PACK_SKIP_ROWS                 0x0D03
4306 #define GL_PACK_SKIP_PIXELS               0x0D04
4307 #define GL_COLOR                          0x1800
4308 #define GL_DEPTH                          0x1801
4309 #define GL_STENCIL                        0x1802
4310 #define GL_RED                            0x1903
4311 #define GL_RGB8                           0x8051
4312 #define GL_RGBA8                          0x8058
4313 #define GL_RGB10_A2                       0x8059
4314 #define GL_TEXTURE_BINDING_3D             0x806A
4315 #define GL_UNPACK_SKIP_IMAGES             0x806D
4316 #define GL_UNPACK_IMAGE_HEIGHT            0x806E
4317 #define GL_TEXTURE_3D                     0x806F
4318 #define GL_TEXTURE_WRAP_R                 0x8072
4319 #define GL_MAX_3D_TEXTURE_SIZE            0x8073
4320 #define GL_UNSIGNED_INT_2_10_10_10_REV    0x8368
4321 #define GL_MAX_ELEMENTS_VERTICES          0x80E8
4322 #define GL_MAX_ELEMENTS_INDICES           0x80E9
4323 #define GL_TEXTURE_MIN_LOD                0x813A
4324 #define GL_TEXTURE_MAX_LOD                0x813B
4325 #define GL_TEXTURE_BASE_LEVEL             0x813C
4326 #define GL_TEXTURE_MAX_LEVEL              0x813D
4327 #define GL_MIN                            0x8007
4328 #define GL_MAX                            0x8008
4329 #define GL_DEPTH_COMPONENT24              0x81A6
4330 #define GL_MAX_TEXTURE_LOD_BIAS           0x84FD
4331 #define GL_TEXTURE_COMPARE_MODE           0x884C
4332 #define GL_TEXTURE_COMPARE_FUNC           0x884D
4333 #define GL_CURRENT_QUERY                  0x8865
4334 #define GL_QUERY_RESULT                   0x8866
4335 #define GL_QUERY_RESULT_AVAILABLE         0x8867
4336 #define GL_BUFFER_MAPPED                  0x88BC
4337 #define GL_BUFFER_MAP_POINTER             0x88BD
4338 #define GL_STREAM_READ                    0x88E1
4339 #define GL_STREAM_COPY                    0x88E2
4340 #define GL_STATIC_READ                    0x88E5
4341 #define GL_STATIC_COPY                    0x88E6
4342 #define GL_DYNAMIC_READ                   0x88E9
4343 #define GL_DYNAMIC_COPY                   0x88EA
4344 #define GL_MAX_DRAW_BUFFERS               0x8824
4345 #define GL_DRAW_BUFFER0                   0x8825
4346 #define GL_DRAW_BUFFER1                   0x8826
4347 #define GL_DRAW_BUFFER2                   0x8827
4348 #define GL_DRAW_BUFFER3                   0x8828
4349 #define GL_DRAW_BUFFER4                   0x8829
4350 #define GL_DRAW_BUFFER5                   0x882A
4351 #define GL_DRAW_BUFFER6                   0x882B
4352 #define GL_DRAW_BUFFER7                   0x882C
4353 #define GL_DRAW_BUFFER8                   0x882D
4354 #define GL_DRAW_BUFFER9                   0x882E
4355 #define GL_DRAW_BUFFER10                  0x882F
4356 #define GL_DRAW_BUFFER11                  0x8830
4357 #define GL_DRAW_BUFFER12                  0x8831
4358 #define GL_DRAW_BUFFER13                  0x8832
4359 #define GL_DRAW_BUFFER14                  0x8833
4360 #define GL_DRAW_BUFFER15                  0x8834
4361 #define GL_MAX_FRAGMENT_UNIFORM_COMPONENTS 0x8B49
4362 #define GL_MAX_VERTEX_UNIFORM_COMPONENTS  0x8B4A
4363 #define GL_SAMPLER_3D                     0x8B5F
4364 #define GL_SAMPLER_2D_SHADOW              0x8B62
4365 #define GL_FRAGMENT_SHADER_DERIVATIVE_HINT 0x8B8B
4366 #define GL_PIXEL_PACK_BUFFER              0x88EB
4367 #define GL_PIXEL_UNPACK_BUFFER            0x88EC
4368 #define GL_PIXEL_PACK_BUFFER_BINDING      0x88ED
4369 #define GL_PIXEL_UNPACK_BUFFER_BINDING    0x88EF
4370 #define GL_FLOAT_MAT2x3                   0x8B65
4371 #define GL_FLOAT_MAT2x4                   0x8B66
4372 #define GL_FLOAT_MAT3x2                   0x8B67
4373 #define GL_FLOAT_MAT3x4                   0x8B68
4374 #define GL_FLOAT_MAT4x2                   0x8B69
4375 #define GL_FLOAT_MAT4x3                   0x8B6A
4376 #define GL_SRGB                           0x8C40
4377 #define GL_SRGB8                          0x8C41
4378 #define GL_SRGB8_ALPHA8                   0x8C43
4379 #define GL_COMPARE_REF_TO_TEXTURE         0x884E
4380 #define GL_MAJOR_VERSION                  0x821B
4381 #define GL_MINOR_VERSION                  0x821C
4382 #define GL_NUM_EXTENSIONS                 0x821D
4383 #define GL_RGBA32F                        0x8814
4384 #define GL_RGB32F                         0x8815
4385 #define GL_RGBA16F                        0x881A
4386 #define GL_RGB16F                         0x881B
4387 #define GL_VERTEX_ATTRIB_ARRAY_INTEGER    0x88FD
4388 #define GL_MAX_ARRAY_TEXTURE_LAYERS       0x88FF
4389 #define GL_MIN_PROGRAM_TEXEL_OFFSET       0x8904
4390 #define GL_MAX_PROGRAM_TEXEL_OFFSET       0x8905
4391 #define GL_MAX_VARYING_COMPONENTS         0x8B4B
4392 #define GL_TEXTURE_2D_ARRAY               0x8C1A
4393 #define GL_TEXTURE_BINDING_2D_ARRAY       0x8C1D
4394 #define GL_R11F_G11F_B10F                 0x8C3A
4395 #define GL_UNSIGNED_INT_10F_11F_11F_REV   0x8C3B
4396 #define GL_RGB9_E5                        0x8C3D
4397 #define GL_UNSIGNED_INT_5_9_9_9_REV       0x8C3E
4398 #define GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH 0x8C76
4399 #define GL_TRANSFORM_FEEDBACK_BUFFER_MODE 0x8C7F
4400 #define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS 0x8C80
4401 #define GL_TRANSFORM_FEEDBACK_VARYINGS    0x8C83
4402 #define GL_TRANSFORM_FEEDBACK_BUFFER_START 0x8C84
4403 #define GL_TRANSFORM_FEEDBACK_BUFFER_SIZE 0x8C85
4404 #define GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN 0x8C88
4405 #define GL_RASTERIZER_DISCARD             0x8C89
4406 #define GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS 0x8C8A
4407 #define GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS 0x8C8B
4408 #define GL_INTERLEAVED_ATTRIBS            0x8C8C
4409 #define GL_SEPARATE_ATTRIBS               0x8C8D
4410 #define GL_TRANSFORM_FEEDBACK_BUFFER      0x8C8E
4411 #define GL_TRANSFORM_FEEDBACK_BUFFER_BINDING 0x8C8F
4412 #define GL_RGBA32UI                       0x8D70
4413 #define GL_RGB32UI                        0x8D71
4414 #define GL_RGBA16UI                       0x8D76
4415 #define GL_RGB16UI                        0x8D77
4416 #define GL_RGBA8UI                        0x8D7C
4417 #define GL_RGB8UI                         0x8D7D
4418 #define GL_RGBA32I                        0x8D82
4419 #define GL_RGB32I                         0x8D83
4420 #define GL_RGBA16I                        0x8D88
4421 #define GL_RGB16I                         0x8D89
4422 #define GL_RGBA8I                         0x8D8E
4423 #define GL_RGB8I                          0x8D8F
4424 #define GL_RED_INTEGER                    0x8D94
4425 #define GL_RGB_INTEGER                    0x8D98
4426 #define GL_RGBA_INTEGER                   0x8D99
4427 #define GL_SAMPLER_2D_ARRAY               0x8DC1
4428 #define GL_SAMPLER_2D_ARRAY_SHADOW        0x8DC4
4429 #define GL_SAMPLER_CUBE_SHADOW            0x8DC5
4430 #define GL_UNSIGNED_INT_VEC2              0x8DC6
4431 #define GL_UNSIGNED_INT_VEC3              0x8DC7
4432 #define GL_UNSIGNED_INT_VEC4              0x8DC8
4433 #define GL_INT_SAMPLER_2D                 0x8DCA
4434 #define GL_INT_SAMPLER_3D                 0x8DCB
4435 #define GL_INT_SAMPLER_CUBE               0x8DCC
4436 #define GL_INT_SAMPLER_2D_ARRAY           0x8DCF
4437 #define GL_UNSIGNED_INT_SAMPLER_2D        0x8DD2
4438 #define GL_UNSIGNED_INT_SAMPLER_3D        0x8DD3
4439 #define GL_UNSIGNED_INT_SAMPLER_CUBE      0x8DD4
4440 #define GL_UNSIGNED_INT_SAMPLER_2D_ARRAY  0x8DD7
4441 #define GL_BUFFER_ACCESS_FLAGS            0x911F
4442 #define GL_BUFFER_MAP_LENGTH              0x9120
4443 #define GL_BUFFER_MAP_OFFSET              0x9121
4444 #define GL_DEPTH_COMPONENT32F             0x8CAC
4445 #define GL_DEPTH32F_STENCIL8              0x8CAD
4446 #define GL_FLOAT_32_UNSIGNED_INT_24_8_REV 0x8DAD
4447 #define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING 0x8210
4448 #define GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE 0x8211
4449 #define GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE 0x8212
4450 #define GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE 0x8213
4451 #define GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE 0x8214
4452 #define GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE 0x8215
4453 #define GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE 0x8216
4454 #define GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE 0x8217
4455 #define GL_FRAMEBUFFER_DEFAULT            0x8218
4456 #define GL_FRAMEBUFFER_UNDEFINED          0x8219
4457 #define GL_DEPTH_STENCIL_ATTACHMENT       0x821A
4458 #define GL_DEPTH_STENCIL                  0x84F9
4459 #define GL_UNSIGNED_INT_24_8              0x84FA
4460 #define GL_DEPTH24_STENCIL8               0x88F0
4461 #define GL_UNSIGNED_NORMALIZED            0x8C17
4462 #define GL_DRAW_FRAMEBUFFER_BINDING       0x8CA6
4463 #define GL_READ_FRAMEBUFFER               0x8CA8
4464 #define GL_DRAW_FRAMEBUFFER               0x8CA9
4465 #define GL_READ_FRAMEBUFFER_BINDING       0x8CAA
4466 #define GL_RENDERBUFFER_SAMPLES           0x8CAB
4467 #define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER 0x8CD4
4468 #define GL_MAX_COLOR_ATTACHMENTS          0x8CDF
4469 #define GL_COLOR_ATTACHMENT1              0x8CE1
4470 #define GL_COLOR_ATTACHMENT2              0x8CE2
4471 #define GL_COLOR_ATTACHMENT3              0x8CE3
4472 #define GL_COLOR_ATTACHMENT4              0x8CE4
4473 #define GL_COLOR_ATTACHMENT5              0x8CE5
4474 #define GL_COLOR_ATTACHMENT6              0x8CE6
4475 #define GL_COLOR_ATTACHMENT7              0x8CE7
4476 #define GL_COLOR_ATTACHMENT8              0x8CE8
4477 #define GL_COLOR_ATTACHMENT9              0x8CE9
4478 #define GL_COLOR_ATTACHMENT10             0x8CEA
4479 #define GL_COLOR_ATTACHMENT11             0x8CEB
4480 #define GL_COLOR_ATTACHMENT12             0x8CEC
4481 #define GL_COLOR_ATTACHMENT13             0x8CED
4482 #define GL_COLOR_ATTACHMENT14             0x8CEE
4483 #define GL_COLOR_ATTACHMENT15             0x8CEF
4484 #define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE 0x8D56
4485 #define GL_MAX_SAMPLES                    0x8D57
4486 #define GL_HALF_FLOAT                     0x140B
4487 #define GL_MAP_READ_BIT                   0x0001
4488 #define GL_MAP_WRITE_BIT                  0x0002
4489 #define GL_MAP_INVALIDATE_RANGE_BIT       0x0004
4490 #define GL_MAP_INVALIDATE_BUFFER_BIT      0x0008
4491 #define GL_MAP_FLUSH_EXPLICIT_BIT         0x0010
4492 #define GL_MAP_UNSYNCHRONIZED_BIT         0x0020
4493 #define GL_RG                             0x8227
4494 #define GL_RG_INTEGER                     0x8228
4495 #define GL_R8                             0x8229
4496 #define GL_RG8                            0x822B
4497 #define GL_R16F                           0x822D
4498 #define GL_R32F                           0x822E
4499 #define GL_RG16F                          0x822F
4500 #define GL_RG32F                          0x8230
4501 #define GL_R8I                            0x8231
4502 #define GL_R8UI                           0x8232
4503 #define GL_R16I                           0x8233
4504 #define GL_R16UI                          0x8234
4505 #define GL_R32I                           0x8235
4506 #define GL_R32UI                          0x8236
4507 #define GL_RG8I                           0x8237
4508 #define GL_RG8UI                          0x8238
4509 #define GL_RG16I                          0x8239
4510 #define GL_RG16UI                         0x823A
4511 #define GL_RG32I                          0x823B
4512 #define GL_RG32UI                         0x823C
4513 #define GL_VERTEX_ARRAY_BINDING           0x85B5
4514 #define GL_R8_SNORM                       0x8F94
4515 #define GL_RG8_SNORM                      0x8F95
4516 #define GL_RGB8_SNORM                     0x8F96
4517 #define GL_RGBA8_SNORM                    0x8F97
4518 #define GL_SIGNED_NORMALIZED              0x8F9C
4519 #define GL_PRIMITIVE_RESTART_FIXED_INDEX  0x8D69
4520 #define GL_COPY_READ_BUFFER               0x8F36
4521 #define GL_COPY_WRITE_BUFFER              0x8F37
4522 #define GL_COPY_READ_BUFFER_BINDING       0x8F36
4523 #define GL_COPY_WRITE_BUFFER_BINDING      0x8F37
4524 #define GL_UNIFORM_BUFFER                 0x8A11
4525 #define GL_UNIFORM_BUFFER_BINDING         0x8A28
4526 #define GL_UNIFORM_BUFFER_START           0x8A29
4527 #define GL_UNIFORM_BUFFER_SIZE            0x8A2A
4528 #define GL_MAX_VERTEX_UNIFORM_BLOCKS      0x8A2B
4529 #define GL_MAX_FRAGMENT_UNIFORM_BLOCKS    0x8A2D
4530 #define GL_MAX_COMBINED_UNIFORM_BLOCKS    0x8A2E
4531 #define GL_MAX_UNIFORM_BUFFER_BINDINGS    0x8A2F
4532 #define GL_MAX_UNIFORM_BLOCK_SIZE         0x8A30
4533 #define GL_MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS 0x8A31
4534 #define GL_MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS 0x8A33
4535 #define GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT 0x8A34
4536 #define GL_ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH 0x8A35
4537 #define GL_ACTIVE_UNIFORM_BLOCKS          0x8A36
4538 #define GL_UNIFORM_TYPE                   0x8A37
4539 #define GL_UNIFORM_SIZE                   0x8A38
4540 #define GL_UNIFORM_NAME_LENGTH            0x8A39
4541 #define GL_UNIFORM_BLOCK_INDEX            0x8A3A
4542 #define GL_UNIFORM_OFFSET                 0x8A3B
4543 #define GL_UNIFORM_ARRAY_STRIDE           0x8A3C
4544 #define GL_UNIFORM_MATRIX_STRIDE          0x8A3D
4545 #define GL_UNIFORM_IS_ROW_MAJOR           0x8A3E
4546 #define GL_UNIFORM_BLOCK_BINDING          0x8A3F
4547 #define GL_UNIFORM_BLOCK_DATA_SIZE        0x8A40
4548 #define GL_UNIFORM_BLOCK_NAME_LENGTH      0x8A41
4549 #define GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS  0x8A42
4550 #define GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES 0x8A43
4551 #define GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER 0x8A44
4552 #define GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER 0x8A46
4553 #define GL_INVALID_INDEX                  0xFFFFFFFFu
4554 #define GL_MAX_VERTEX_OUTPUT_COMPONENTS   0x9122
4555 #define GL_MAX_FRAGMENT_INPUT_COMPONENTS  0x9125
4556 #define GL_MAX_SERVER_WAIT_TIMEOUT        0x9111
4557 #define GL_OBJECT_TYPE                    0x9112
4558 #define GL_SYNC_CONDITION                 0x9113
4559 #define GL_SYNC_STATUS                    0x9114
4560 #define GL_SYNC_FLAGS                     0x9115
4561 #define GL_SYNC_FENCE                     0x9116
4562 #define GL_SYNC_GPU_COMMANDS_COMPLETE     0x9117
4563 #define GL_UNSIGNALED                     0x9118
4564 #define GL_SIGNALED                       0x9119
4565 #define GL_ALREADY_SIGNALED               0x911A
4566 #define GL_TIMEOUT_EXPIRED                0x911B
4567 #define GL_CONDITION_SATISFIED            0x911C
4568 #define GL_WAIT_FAILED                    0x911D
4569 #define GL_SYNC_FLUSH_COMMANDS_BIT        0x00000001
4570 #define GL_TIMEOUT_IGNORED                0xFFFFFFFFFFFFFFFFull
4571 #define GL_VERTEX_ATTRIB_ARRAY_DIVISOR    0x88FE
4572 #define GL_ANY_SAMPLES_PASSED             0x8C2F
4573 #define GL_ANY_SAMPLES_PASSED_CONSERVATIVE 0x8D6A
4574 #define GL_SAMPLER_BINDING                0x8919
4575 #define GL_RGB10_A2UI                     0x906F
4576 #define GL_TEXTURE_SWIZZLE_R              0x8E42
4577 #define GL_TEXTURE_SWIZZLE_G              0x8E43
4578 #define GL_TEXTURE_SWIZZLE_B              0x8E44
4579 #define GL_TEXTURE_SWIZZLE_A              0x8E45
4580 #define GL_GREEN                          0x1904
4581 #define GL_BLUE                           0x1905
4582 #define GL_INT_2_10_10_10_REV             0x8D9F
4583 #define GL_TRANSFORM_FEEDBACK             0x8E22
4584 #define GL_TRANSFORM_FEEDBACK_PAUSED      0x8E23
4585 #define GL_TRANSFORM_FEEDBACK_ACTIVE      0x8E24
4586 #define GL_TRANSFORM_FEEDBACK_BINDING     0x8E25
4587 #define GL_PROGRAM_BINARY_RETRIEVABLE_HINT 0x8257
4588 #define GL_PROGRAM_BINARY_LENGTH          0x8741
4589 #define GL_NUM_PROGRAM_BINARY_FORMATS     0x87FE
4590 #define GL_PROGRAM_BINARY_FORMATS         0x87FF
4591 #define GL_COMPRESSED_R11_EAC             0x9270
4592 #define GL_COMPRESSED_SIGNED_R11_EAC      0x9271
4593 #define GL_COMPRESSED_RG11_EAC            0x9272
4594 #define GL_COMPRESSED_SIGNED_RG11_EAC     0x9273
4595 #define GL_COMPRESSED_RGB8_ETC2           0x9274
4596 #define GL_COMPRESSED_SRGB8_ETC2          0x9275
4597 #define GL_COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9276
4598 #define GL_COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 0x9277
4599 #define GL_COMPRESSED_RGBA8_ETC2_EAC      0x9278
4600 #define GL_COMPRESSED_SRGB8_ALPHA8_ETC2_EAC 0x9279
4601 #define GL_TEXTURE_IMMUTABLE_FORMAT       0x912F
4602 #define GL_MAX_ELEMENT_INDEX              0x8D6B
4603 #define GL_NUM_SAMPLE_COUNTS              0x9380
4604 #define GL_TEXTURE_IMMUTABLE_LEVELS       0x82DF
4605 
4606 #endif
4607 
4608 #ifndef __gl31_h_
4609 #define __gl31_h_ 1
4610 
4611 #define GL_COMPUTE_SHADER                 0x91B9
4612 #define GL_MAX_COMPUTE_UNIFORM_BLOCKS     0x91BB
4613 #define GL_MAX_COMPUTE_TEXTURE_IMAGE_UNITS 0x91BC
4614 #define GL_MAX_COMPUTE_IMAGE_UNIFORMS     0x91BD
4615 #define GL_MAX_COMPUTE_SHARED_MEMORY_SIZE 0x8262
4616 #define GL_MAX_COMPUTE_UNIFORM_COMPONENTS 0x8263
4617 #define GL_MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS 0x8264
4618 #define GL_MAX_COMPUTE_ATOMIC_COUNTERS    0x8265
4619 #define GL_MAX_COMBINED_COMPUTE_UNIFORM_COMPONENTS 0x8266
4620 #define GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS 0x90EB
4621 #define GL_MAX_COMPUTE_WORK_GROUP_COUNT   0x91BE
4622 #define GL_MAX_COMPUTE_WORK_GROUP_SIZE    0x91BF
4623 #define GL_COMPUTE_WORK_GROUP_SIZE        0x8267
4624 #define GL_DISPATCH_INDIRECT_BUFFER       0x90EE
4625 #define GL_DISPATCH_INDIRECT_BUFFER_BINDING 0x90EF
4626 #define GL_COMPUTE_SHADER_BIT             0x00000020
4627 #define GL_DRAW_INDIRECT_BUFFER           0x8F3F
4628 #define GL_DRAW_INDIRECT_BUFFER_BINDING   0x8F43
4629 #define GL_MAX_UNIFORM_LOCATIONS          0x826E
4630 #define GL_FRAMEBUFFER_DEFAULT_WIDTH      0x9310
4631 #define GL_FRAMEBUFFER_DEFAULT_HEIGHT     0x9311
4632 #define GL_FRAMEBUFFER_DEFAULT_SAMPLES    0x9313
4633 #define GL_FRAMEBUFFER_DEFAULT_FIXED_SAMPLE_LOCATIONS 0x9314
4634 #define GL_MAX_FRAMEBUFFER_WIDTH          0x9315
4635 #define GL_MAX_FRAMEBUFFER_HEIGHT         0x9316
4636 #define GL_MAX_FRAMEBUFFER_SAMPLES        0x9318
4637 #define GL_UNIFORM                        0x92E1
4638 #define GL_UNIFORM_BLOCK                  0x92E2
4639 #define GL_PROGRAM_INPUT                  0x92E3
4640 #define GL_PROGRAM_OUTPUT                 0x92E4
4641 #define GL_BUFFER_VARIABLE                0x92E5
4642 #define GL_SHADER_STORAGE_BLOCK           0x92E6
4643 #define GL_ATOMIC_COUNTER_BUFFER          0x92C0
4644 #define GL_TRANSFORM_FEEDBACK_VARYING     0x92F4
4645 #define GL_ACTIVE_RESOURCES               0x92F5
4646 #define GL_MAX_NAME_LENGTH                0x92F6
4647 #define GL_MAX_NUM_ACTIVE_VARIABLES       0x92F7
4648 #define GL_NAME_LENGTH                    0x92F9
4649 #define GL_TYPE                           0x92FA
4650 #define GL_ARRAY_SIZE                     0x92FB
4651 #define GL_OFFSET                         0x92FC
4652 #define GL_BLOCK_INDEX                    0x92FD
4653 #define GL_ARRAY_STRIDE                   0x92FE
4654 #define GL_MATRIX_STRIDE                  0x92FF
4655 #define GL_IS_ROW_MAJOR                   0x9300
4656 #define GL_ATOMIC_COUNTER_BUFFER_INDEX    0x9301
4657 #define GL_BUFFER_BINDING                 0x9302
4658 #define GL_BUFFER_DATA_SIZE               0x9303
4659 #define GL_NUM_ACTIVE_VARIABLES           0x9304
4660 #define GL_ACTIVE_VARIABLES               0x9305
4661 #define GL_REFERENCED_BY_VERTEX_SHADER    0x9306
4662 #define GL_REFERENCED_BY_FRAGMENT_SHADER  0x930A
4663 #define GL_REFERENCED_BY_COMPUTE_SHADER   0x930B
4664 #define GL_TOP_LEVEL_ARRAY_SIZE           0x930C
4665 #define GL_TOP_LEVEL_ARRAY_STRIDE         0x930D
4666 #define GL_LOCATION                       0x930E
4667 #define GL_VERTEX_SHADER_BIT              0x00000001
4668 #define GL_FRAGMENT_SHADER_BIT            0x00000002
4669 #define GL_ALL_SHADER_BITS                0xFFFFFFFF
4670 #define GL_PROGRAM_SEPARABLE              0x8258
4671 #define GL_ACTIVE_PROGRAM                 0x8259
4672 #define GL_PROGRAM_PIPELINE_BINDING       0x825A
4673 #define GL_ATOMIC_COUNTER_BUFFER_BINDING  0x92C1
4674 #define GL_ATOMIC_COUNTER_BUFFER_START    0x92C2
4675 #define GL_ATOMIC_COUNTER_BUFFER_SIZE     0x92C3
4676 #define GL_MAX_VERTEX_ATOMIC_COUNTER_BUFFERS 0x92CC
4677 #define GL_MAX_FRAGMENT_ATOMIC_COUNTER_BUFFERS 0x92D0
4678 #define GL_MAX_COMBINED_ATOMIC_COUNTER_BUFFERS 0x92D1
4679 #define GL_MAX_VERTEX_ATOMIC_COUNTERS     0x92D2
4680 #define GL_MAX_FRAGMENT_ATOMIC_COUNTERS   0x92D6
4681 #define GL_MAX_COMBINED_ATOMIC_COUNTERS   0x92D7
4682 #define GL_MAX_ATOMIC_COUNTER_BUFFER_SIZE 0x92D8
4683 #define GL_MAX_ATOMIC_COUNTER_BUFFER_BINDINGS 0x92DC
4684 #define GL_ACTIVE_ATOMIC_COUNTER_BUFFERS  0x92D9
4685 #define GL_UNSIGNED_INT_ATOMIC_COUNTER    0x92DB
4686 #define GL_MAX_IMAGE_UNITS                0x8F38
4687 #define GL_MAX_VERTEX_IMAGE_UNIFORMS      0x90CA
4688 #define GL_MAX_FRAGMENT_IMAGE_UNIFORMS    0x90CE
4689 #define GL_MAX_COMBINED_IMAGE_UNIFORMS    0x90CF
4690 #define GL_IMAGE_BINDING_NAME             0x8F3A
4691 #define GL_IMAGE_BINDING_LEVEL            0x8F3B
4692 #define GL_IMAGE_BINDING_LAYERED          0x8F3C
4693 #define GL_IMAGE_BINDING_LAYER            0x8F3D
4694 #define GL_IMAGE_BINDING_ACCESS           0x8F3E
4695 #define GL_IMAGE_BINDING_FORMAT           0x906E
4696 #define GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT 0x00000001
4697 #define GL_ELEMENT_ARRAY_BARRIER_BIT      0x00000002
4698 #define GL_UNIFORM_BARRIER_BIT            0x00000004
4699 #define GL_TEXTURE_FETCH_BARRIER_BIT      0x00000008
4700 #define GL_SHADER_IMAGE_ACCESS_BARRIER_BIT 0x00000020
4701 #define GL_COMMAND_BARRIER_BIT            0x00000040
4702 #define GL_PIXEL_BUFFER_BARRIER_BIT       0x00000080
4703 #define GL_TEXTURE_UPDATE_BARRIER_BIT     0x00000100
4704 #define GL_BUFFER_UPDATE_BARRIER_BIT      0x00000200
4705 #define GL_FRAMEBUFFER_BARRIER_BIT        0x00000400
4706 #define GL_TRANSFORM_FEEDBACK_BARRIER_BIT 0x00000800
4707 #define GL_ATOMIC_COUNTER_BARRIER_BIT     0x00001000
4708 #define GL_ALL_BARRIER_BITS               0xFFFFFFFF
4709 #define GL_IMAGE_2D                       0x904D
4710 #define GL_IMAGE_3D                       0x904E
4711 #define GL_IMAGE_CUBE                     0x9050
4712 #define GL_IMAGE_2D_ARRAY                 0x9053
4713 #define GL_INT_IMAGE_2D                   0x9058
4714 #define GL_INT_IMAGE_3D                   0x9059
4715 #define GL_INT_IMAGE_CUBE                 0x905B
4716 #define GL_INT_IMAGE_2D_ARRAY             0x905E
4717 #define GL_UNSIGNED_INT_IMAGE_2D          0x9063
4718 #define GL_UNSIGNED_INT_IMAGE_3D          0x9064
4719 #define GL_UNSIGNED_INT_IMAGE_CUBE        0x9066
4720 #define GL_UNSIGNED_INT_IMAGE_2D_ARRAY    0x9069
4721 #define GL_IMAGE_FORMAT_COMPATIBILITY_TYPE 0x90C7
4722 #define GL_IMAGE_FORMAT_COMPATIBILITY_BY_SIZE 0x90C8
4723 #define GL_IMAGE_FORMAT_COMPATIBILITY_BY_CLASS 0x90C9
4724 #define GL_READ_ONLY                      0x88B8
4725 #define GL_WRITE_ONLY                     0x88B9
4726 #define GL_READ_WRITE                     0x88BA
4727 #define GL_SHADER_STORAGE_BUFFER          0x90D2
4728 #define GL_SHADER_STORAGE_BUFFER_BINDING  0x90D3
4729 #define GL_SHADER_STORAGE_BUFFER_START    0x90D4
4730 #define GL_SHADER_STORAGE_BUFFER_SIZE     0x90D5
4731 #define GL_MAX_VERTEX_SHADER_STORAGE_BLOCKS 0x90D6
4732 #define GL_MAX_FRAGMENT_SHADER_STORAGE_BLOCKS 0x90DA
4733 #define GL_MAX_COMPUTE_SHADER_STORAGE_BLOCKS 0x90DB
4734 #define GL_MAX_COMBINED_SHADER_STORAGE_BLOCKS 0x90DC
4735 #define GL_MAX_SHADER_STORAGE_BUFFER_BINDINGS 0x90DD
4736 #define GL_MAX_SHADER_STORAGE_BLOCK_SIZE  0x90DE
4737 #define GL_SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT 0x90DF
4738 #define GL_SHADER_STORAGE_BARRIER_BIT     0x00002000
4739 #define GL_MAX_COMBINED_SHADER_OUTPUT_RESOURCES 0x8F39
4740 #define GL_DEPTH_STENCIL_TEXTURE_MODE     0x90EA
4741 #define GL_STENCIL_INDEX                  0x1901
4742 #define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5E
4743 #define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5F
4744 #define GL_SAMPLE_POSITION                0x8E50
4745 #define GL_SAMPLE_MASK                    0x8E51
4746 #define GL_SAMPLE_MASK_VALUE              0x8E52
4747 #define GL_TEXTURE_2D_MULTISAMPLE         0x9100
4748 #define GL_MAX_SAMPLE_MASK_WORDS          0x8E59
4749 #define GL_MAX_COLOR_TEXTURE_SAMPLES      0x910E
4750 #define GL_MAX_DEPTH_TEXTURE_SAMPLES      0x910F
4751 #define GL_MAX_INTEGER_SAMPLES            0x9110
4752 #define GL_TEXTURE_BINDING_2D_MULTISAMPLE 0x9104
4753 #define GL_TEXTURE_SAMPLES                0x9106
4754 #define GL_TEXTURE_FIXED_SAMPLE_LOCATIONS 0x9107
4755 #define GL_TEXTURE_WIDTH                  0x1000
4756 #define GL_TEXTURE_HEIGHT                 0x1001
4757 #define GL_TEXTURE_DEPTH                  0x8071
4758 #define GL_TEXTURE_INTERNAL_FORMAT        0x1003
4759 #define GL_TEXTURE_RED_SIZE               0x805C
4760 #define GL_TEXTURE_GREEN_SIZE             0x805D
4761 #define GL_TEXTURE_BLUE_SIZE              0x805E
4762 #define GL_TEXTURE_ALPHA_SIZE             0x805F
4763 #define GL_TEXTURE_DEPTH_SIZE             0x884A
4764 #define GL_TEXTURE_STENCIL_SIZE           0x88F1
4765 #define GL_TEXTURE_SHARED_SIZE            0x8C3F
4766 #define GL_TEXTURE_RED_TYPE               0x8C10
4767 #define GL_TEXTURE_GREEN_TYPE             0x8C11
4768 #define GL_TEXTURE_BLUE_TYPE              0x8C12
4769 #define GL_TEXTURE_ALPHA_TYPE             0x8C13
4770 #define GL_TEXTURE_DEPTH_TYPE             0x8C16
4771 #define GL_TEXTURE_COMPRESSED             0x86A1
4772 #define GL_SAMPLER_2D_MULTISAMPLE         0x9108
4773 #define GL_INT_SAMPLER_2D_MULTISAMPLE     0x9109
4774 #define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE 0x910A
4775 #define GL_VERTEX_ATTRIB_BINDING          0x82D4
4776 #define GL_VERTEX_ATTRIB_RELATIVE_OFFSET  0x82D5
4777 #define GL_VERTEX_BINDING_DIVISOR         0x82D6
4778 #define GL_VERTEX_BINDING_OFFSET          0x82D7
4779 #define GL_VERTEX_BINDING_STRIDE          0x82D8
4780 #define GL_VERTEX_BINDING_BUFFER          0x8F4F
4781 #define GL_MAX_VERTEX_ATTRIB_RELATIVE_OFFSET 0x82D9
4782 #define GL_MAX_VERTEX_ATTRIB_BINDINGS     0x82DA
4783 #define GL_MAX_VERTEX_ATTRIB_STRIDE       0x82E5
4784 #endif
4785 
4786 /* OpenGLES 3.2 */
4787 #ifndef __gl32_h_
4788 #define __gl32_h_ 1
4789 
4790 typedef void (*GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam);
4791 
4792 #define GL_MULTISAMPLE_LINE_WIDTH_RANGE   0x9381
4793 #define GL_MULTISAMPLE_LINE_WIDTH_GRANULARITY 0x9382
4794 #define GL_MULTIPLY                       0x9294
4795 #define GL_SCREEN                         0x9295
4796 #define GL_OVERLAY                        0x9296
4797 #define GL_DARKEN                         0x9297
4798 #define GL_LIGHTEN                        0x9298
4799 #define GL_COLORDODGE                     0x9299
4800 #define GL_COLORBURN                      0x929A
4801 #define GL_HARDLIGHT                      0x929B
4802 #define GL_SOFTLIGHT                      0x929C
4803 #define GL_DIFFERENCE                     0x929E
4804 #define GL_EXCLUSION                      0x92A0
4805 #define GL_HSL_HUE                        0x92AD
4806 #define GL_HSL_SATURATION                 0x92AE
4807 #define GL_HSL_COLOR                      0x92AF
4808 #define GL_HSL_LUMINOSITY                 0x92B0
4809 #define GL_DEBUG_OUTPUT_SYNCHRONOUS       0x8242
4810 #define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH 0x8243
4811 #define GL_DEBUG_CALLBACK_FUNCTION        0x8244
4812 #define GL_DEBUG_CALLBACK_USER_PARAM      0x8245
4813 #define GL_DEBUG_SOURCE_API               0x8246
4814 #define GL_DEBUG_SOURCE_WINDOW_SYSTEM     0x8247
4815 #define GL_DEBUG_SOURCE_SHADER_COMPILER   0x8248
4816 #define GL_DEBUG_SOURCE_THIRD_PARTY       0x8249
4817 #define GL_DEBUG_SOURCE_APPLICATION       0x824A
4818 #define GL_DEBUG_SOURCE_OTHER             0x824B
4819 #define GL_DEBUG_TYPE_ERROR               0x824C
4820 #define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR 0x824D
4821 #define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR  0x824E
4822 #define GL_DEBUG_TYPE_PORTABILITY         0x824F
4823 #define GL_DEBUG_TYPE_PERFORMANCE         0x8250
4824 #define GL_DEBUG_TYPE_OTHER               0x8251
4825 #define GL_DEBUG_TYPE_MARKER              0x8268
4826 #define GL_DEBUG_TYPE_PUSH_GROUP          0x8269
4827 #define GL_DEBUG_TYPE_POP_GROUP           0x826A
4828 #define GL_DEBUG_SEVERITY_NOTIFICATION    0x826B
4829 #define GL_MAX_DEBUG_GROUP_STACK_DEPTH    0x826C
4830 #define GL_DEBUG_GROUP_STACK_DEPTH        0x826D
4831 #define GL_BUFFER                         0x82E0
4832 #define GL_SHADER                         0x82E1
4833 #define GL_PROGRAM                        0x82E2
4834 #define GL_VERTEX_ARRAY                   0x8074
4835 #define GL_QUERY                          0x82E3
4836 #define GL_PROGRAM_PIPELINE               0x82E4
4837 #define GL_SAMPLER                        0x82E6
4838 #define GL_MAX_LABEL_LENGTH               0x82E8
4839 #define GL_MAX_DEBUG_MESSAGE_LENGTH       0x9143
4840 #define GL_MAX_DEBUG_LOGGED_MESSAGES      0x9144
4841 #define GL_DEBUG_LOGGED_MESSAGES          0x9145
4842 #define GL_DEBUG_SEVERITY_HIGH            0x9146
4843 #define GL_DEBUG_SEVERITY_MEDIUM          0x9147
4844 #define GL_DEBUG_SEVERITY_LOW             0x9148
4845 #define GL_DEBUG_OUTPUT                   0x92E0
4846 #define GL_CONTEXT_FLAG_DEBUG_BIT         0x00000002
4847 #define GL_STACK_OVERFLOW                 0x0503
4848 #define GL_STACK_UNDERFLOW                0x0504
4849 #define GL_GEOMETRY_SHADER                0x8DD9
4850 #define GL_GEOMETRY_SHADER_BIT            0x00000004
4851 #define GL_GEOMETRY_VERTICES_OUT          0x8916
4852 #define GL_GEOMETRY_INPUT_TYPE            0x8917
4853 #define GL_GEOMETRY_OUTPUT_TYPE           0x8918
4854 #define GL_GEOMETRY_SHADER_INVOCATIONS    0x887F
4855 #define GL_LAYER_PROVOKING_VERTEX         0x825E
4856 #define GL_LINES_ADJACENCY                0x000A
4857 #define GL_LINE_STRIP_ADJACENCY           0x000B
4858 #define GL_TRIANGLES_ADJACENCY            0x000C
4859 #define GL_TRIANGLE_STRIP_ADJACENCY       0x000D
4860 #define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS 0x8DDF
4861 #define GL_MAX_GEOMETRY_UNIFORM_BLOCKS    0x8A2C
4862 #define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS 0x8A32
4863 #define GL_MAX_GEOMETRY_INPUT_COMPONENTS  0x9123
4864 #define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS 0x9124
4865 #define GL_MAX_GEOMETRY_OUTPUT_VERTICES   0x8DE0
4866 #define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS 0x8DE1
4867 #define GL_MAX_GEOMETRY_SHADER_INVOCATIONS 0x8E5A
4868 #define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS 0x8C29
4869 #define GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS 0x92CF
4870 #define GL_MAX_GEOMETRY_ATOMIC_COUNTERS   0x92D5
4871 #define GL_MAX_GEOMETRY_IMAGE_UNIFORMS    0x90CD
4872 #define GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS 0x90D7
4873 #define GL_FIRST_VERTEX_CONVENTION        0x8E4D
4874 #define GL_LAST_VERTEX_CONVENTION         0x8E4E
4875 #define GL_UNDEFINED_VERTEX               0x8260
4876 #define GL_PRIMITIVES_GENERATED           0x8C87
4877 #define GL_FRAMEBUFFER_DEFAULT_LAYERS     0x9312
4878 #define GL_MAX_FRAMEBUFFER_LAYERS         0x9317
4879 #define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS 0x8DA8
4880 #define GL_FRAMEBUFFER_ATTACHMENT_LAYERED 0x8DA7
4881 #define GL_REFERENCED_BY_GEOMETRY_SHADER  0x9309
4882 #define GL_PRIMITIVE_BOUNDING_BOX         0x92BE
4883 #define GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT 0x00000004
4884 #define GL_CONTEXT_FLAGS                  0x821E
4885 #define GL_LOSE_CONTEXT_ON_RESET          0x8252
4886 #define GL_GUILTY_CONTEXT_RESET           0x8253
4887 #define GL_INNOCENT_CONTEXT_RESET         0x8254
4888 #define GL_UNKNOWN_CONTEXT_RESET          0x8255
4889 #define GL_RESET_NOTIFICATION_STRATEGY    0x8256
4890 #define GL_NO_RESET_NOTIFICATION          0x8261
4891 #define GL_CONTEXT_LOST                   0x0507
4892 #define GL_SAMPLE_SHADING                 0x8C36
4893 #define GL_MIN_SAMPLE_SHADING_VALUE       0x8C37
4894 #define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET 0x8E5B
4895 #define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET 0x8E5C
4896 #define GL_FRAGMENT_INTERPOLATION_OFFSET_BITS 0x8E5D
4897 #define GL_PATCHES                        0x000E
4898 #define GL_PATCH_VERTICES                 0x8E72
4899 #define GL_TESS_CONTROL_OUTPUT_VERTICES   0x8E75
4900 #define GL_TESS_GEN_MODE                  0x8E76
4901 #define GL_TESS_GEN_SPACING               0x8E77
4902 #define GL_TESS_GEN_VERTEX_ORDER          0x8E78
4903 #define GL_TESS_GEN_POINT_MODE            0x8E79
4904 #define GL_ISOLINES                       0x8E7A
4905 #define GL_QUADS                          0x0007
4906 #define GL_FRACTIONAL_ODD                 0x8E7B
4907 #define GL_FRACTIONAL_EVEN                0x8E7C
4908 #define GL_MAX_PATCH_VERTICES             0x8E7D
4909 #define GL_MAX_TESS_GEN_LEVEL             0x8E7E
4910 #define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E7F
4911 #define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E80
4912 #define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS 0x8E81
4913 #define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS 0x8E82
4914 #define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS 0x8E83
4915 #define GL_MAX_TESS_PATCH_COMPONENTS      0x8E84
4916 #define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS 0x8E85
4917 #define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS 0x8E86
4918 #define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS 0x8E89
4919 #define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS 0x8E8A
4920 #define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS 0x886C
4921 #define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS 0x886D
4922 #define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E1E
4923 #define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E1F
4924 #define GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS 0x92CD
4925 #define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS 0x92CE
4926 #define GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS 0x92D3
4927 #define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS 0x92D4
4928 #define GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS 0x90CB
4929 #define GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS 0x90CC
4930 #define GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS 0x90D8
4931 #define GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS 0x90D9
4932 #define GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED 0x8221
4933 #define GL_IS_PER_PATCH                   0x92E7
4934 #define GL_REFERENCED_BY_TESS_CONTROL_SHADER 0x9307
4935 #define GL_REFERENCED_BY_TESS_EVALUATION_SHADER 0x9308
4936 #define GL_TESS_CONTROL_SHADER            0x8E88
4937 #define GL_TESS_EVALUATION_SHADER         0x8E87
4938 #define GL_TESS_CONTROL_SHADER_BIT        0x00000008
4939 #define GL_TESS_EVALUATION_SHADER_BIT     0x00000010
4940 #define GL_TEXTURE_BORDER_COLOR           0x1004
4941 #define GL_CLAMP_TO_BORDER                0x812D
4942 #define GL_TEXTURE_BUFFER                 0x8C2A
4943 #define GL_TEXTURE_BUFFER_BINDING         0x8C2A
4944 #define GL_MAX_TEXTURE_BUFFER_SIZE        0x8C2B
4945 #define GL_TEXTURE_BINDING_BUFFER         0x8C2C
4946 #define GL_TEXTURE_BUFFER_DATA_STORE_BINDING 0x8C2D
4947 #define GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT 0x919F
4948 #define GL_SAMPLER_BUFFER                 0x8DC2
4949 #define GL_INT_SAMPLER_BUFFER             0x8DD0
4950 #define GL_UNSIGNED_INT_SAMPLER_BUFFER    0x8DD8
4951 #define GL_IMAGE_BUFFER                   0x9051
4952 #define GL_INT_IMAGE_BUFFER               0x905C
4953 #define GL_UNSIGNED_INT_IMAGE_BUFFER      0x9067
4954 #define GL_TEXTURE_BUFFER_OFFSET          0x919D
4955 #define GL_TEXTURE_BUFFER_SIZE            0x919E
4956 #define GL_COMPRESSED_RGBA_ASTC_4x4       0x93B0
4957 #define GL_COMPRESSED_RGBA_ASTC_5x4       0x93B1
4958 #define GL_COMPRESSED_RGBA_ASTC_5x5       0x93B2
4959 #define GL_COMPRESSED_RGBA_ASTC_6x5       0x93B3
4960 #define GL_COMPRESSED_RGBA_ASTC_6x6       0x93B4
4961 #define GL_COMPRESSED_RGBA_ASTC_8x5       0x93B5
4962 #define GL_COMPRESSED_RGBA_ASTC_8x6       0x93B6
4963 #define GL_COMPRESSED_RGBA_ASTC_8x8       0x93B7
4964 #define GL_COMPRESSED_RGBA_ASTC_10x5      0x93B8
4965 #define GL_COMPRESSED_RGBA_ASTC_10x6      0x93B9
4966 #define GL_COMPRESSED_RGBA_ASTC_10x8      0x93BA
4967 #define GL_COMPRESSED_RGBA_ASTC_10x10     0x93BB
4968 #define GL_COMPRESSED_RGBA_ASTC_12x10     0x93BC
4969 #define GL_COMPRESSED_RGBA_ASTC_12x12     0x93BD
4970 #define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4 0x93D0
4971 #define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4 0x93D1
4972 #define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5 0x93D2
4973 #define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5 0x93D3
4974 #define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6 0x93D4
4975 #define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x5 0x93D5
4976 #define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x6 0x93D6
4977 #define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_8x8 0x93D7
4978 #define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x5 0x93D8
4979 #define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x6 0x93D9
4980 #define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x8 0x93DA
4981 #define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_10x10 0x93DB
4982 #define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x10 0x93DC
4983 #define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_12x12 0x93DD
4984 #define GL_TEXTURE_CUBE_MAP_ARRAY         0x9009
4985 #define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY 0x900A
4986 #define GL_SAMPLER_CUBE_MAP_ARRAY         0x900C
4987 #define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW  0x900D
4988 #define GL_INT_SAMPLER_CUBE_MAP_ARRAY     0x900E
4989 #define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY 0x900F
4990 #define GL_IMAGE_CUBE_MAP_ARRAY           0x9054
4991 #define GL_INT_IMAGE_CUBE_MAP_ARRAY       0x905F
4992 #define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY 0x906A
4993 #define GL_TEXTURE_2D_MULTISAMPLE_ARRAY   0x9102
4994 #define GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY 0x9105
4995 #define GL_SAMPLER_2D_MULTISAMPLE_ARRAY   0x910B
4996 #define GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910C
4997 #define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY 0x910D
4998 #endif
4999 
5000 /*
5001  * EGL-related definitions
5002  *
5003  * Note the names have been changed from EGL to EvasGL so as to be
5004  * platform independent. Except for the error codes, the following
5005  * EVAS_GL_x definitions have the same values as their EGL_x counterparts.
5006  * Please note that the error codes have been reset to start from 0 (success).
5007  */
5008 
5009 /* EGL/EvasGL Types */
5010 typedef void *EvasGLSync;
5011 typedef unsigned long long EvasGLTime;
5012 
5013 /* @brief Attribute list terminator
5014  * 0 is also accepted as an attribute terminator.
5015  * Evas_GL will ensure that the attribute list is always properly terminated
5016  * (e.g. using EGL_NONE for EGL backends) and the values are supported by the
5017  * backends.
5018  */
5019 #define EVAS_GL_NONE                            0x3038
5020 
5021 /* EGL_KHR_image_base */
5022 #define EVAS_GL_image_base 1
5023 #define EVAS_GL_IMAGE_PRESERVED                 0x30D2  /**< @brief An attribute for @ref evasglCreateImage or @ref evasglCreateImageForContext, the default is @c EINA_FALSE. Please refer to @c EGL_IMAGE_PRESERVED_KHR. */
5024 
5025 /* EGL_KHR_image */
5026 #define EVAS_GL_image 1
5027 #define EVAS_GL_NATIVE_PIXMAP                   0x30B0  /**< @internal A target for @ref evasglCreateImage or @ref evasglCreateImageForContext. Since it is X11-specific, it should not be used by Tizen applications. */
5028 
5029 /* EGL_KHR_vg_parent_image */
5030 #define EVAS_VG_PARENT_IMAGE                    0x30BA  /**< @brief A target for @ref evasglCreateImage or @ref evasglCreateImageForContext */
5031 
5032 /* EGL_KHR_gl_texture_2D_image */
5033 #define EVAS_GL_TEXTURE_2D                      0x30B1  /**< @brief An attribute for @ref evasglCreateImage or @ref evasglCreateImageForContext */
5034 #define EVAS_GL_TEXTURE_LEVEL                   0x30BC  /**< @brief An attribute for @ref evasglCreateImage or @ref evasglCreateImageForContext */
5035 
5036 /* EGL_KHR_gl_texture_cubemap_image */
5037 #define EVAS_GL_TEXTURE_CUBE_MAP_POSITIVE_X     0x30B3  /**< @brief A target for @ref evasglCreateImage or @ref evasglCreateImageForContext */
5038 #define EVAS_GL_TEXTURE_CUBE_MAP_NEGATIVE_X     0x30B4  /**< @brief A target for @ref evasglCreateImage or @ref evasglCreateImageForContext */
5039 #define EVAS_GL_TEXTURE_CUBE_MAP_POSITIVE_Y     0x30B5  /**< @brief A target for @ref evasglCreateImage or @ref evasglCreateImageForContext */
5040 #define EVAS_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y     0x30B6  /**< @brief A target for @ref evasglCreateImage or @ref evasglCreateImageForContext */
5041 #define EVAS_GL_TEXTURE_CUBE_MAP_POSITIVE_Z     0x30B7  /**< @brief A target for @ref evasglCreateImage or @ref evasglCreateImageForContext */
5042 #define EVAS_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z     0x30B8  /**< @brief A target for @ref evasglCreateImage or @ref evasglCreateImageForContext */
5043 
5044 /* EGL_KHR_gl_texture_3D_image */
5045 #define EVAS_GL_TEXTURE_3D                      0x30B2  /**< @brief A target for @ref evasglCreateImage or @ref evasglCreateImageForContext */
5046 #define EVAS_GL_TEXTURE_ZOFFSET                 0x30BD  /**< @brief An attribute for @ref evasglCreateImage or @ref evasglCreateImageForContext */
5047 
5048 /* EGL_KHR_gl_renderbuffer_image */
5049 #define EVAS_GL_RENDERBUFFER                    0x30B9  /**< @brief A target for @ref evasglCreateImage or @ref evasglCreateImageForContext */
5050 
5051 /* Out-of-band attribute value */
5052 #define EVAS_GL_DONT_CARE			(-1)
5053 
5054 /* EGL_TIZEN_image_native_surface */
5055 #define EVAS_GL_TIZEN_image_native_surface 1
5056 #define EVAS_GL_NATIVE_SURFACE_TIZEN            0x32A1  /**< @brief A target for @ref evasglCreateImage or @ref evasglCreateImageForContext. This is a Tizen specific feature. */
5057 
5058 /**
5059  * @name Evas GL error codes
5060  *
5061  * These are the possible return values of @ref evas_gl_error_get.
5062  * The values are the same as EGL error codes - @c EGL_SUCCESS.
5063  *
5064  * Some of the values may be set directly by Evas GL when an obvious error was
5065  * detected (e.g. @c NULL pointers or invalid dimensions), otherwise Evas GL will
5066  * call the backend's GetError() function and translate to a valid @c EVAS_GL_
5067  * error code.
5068  *
5069  * @since 1.12
5070  *
5071  * @{
5072  */
5073 #define EVAS_GL_SUCCESS                         0x0000  /**< @brief The last evas_gl_ operation succeeded. A call to @c evas_gl_error_get() will reset the error. */
5074 #define EVAS_GL_NOT_INITIALIZED                 0x0001  /**< @brief Evas GL was not initialized or a @c NULL pointer was passed */
5075 #define EVAS_GL_BAD_ACCESS                      0x0002  /**< @brief Bad access; for more information, please refer to its EGL counterpart */
5076 #define EVAS_GL_BAD_ALLOC                       0x0003  /**< @brief Bad allocation; for more information, please refer to its EGL counterpart */
5077 #define EVAS_GL_BAD_ATTRIBUTE                   0x0004  /**< @brief Bad attribute; for more information, please refer to its EGL counterpart */
5078 #define EVAS_GL_BAD_CONFIG                      0x0005  /**< @brief Bad configuration; for more information, please refer to its EGL counterpart */
5079 #define EVAS_GL_BAD_CONTEXT                     0x0006  /**< @brief Bad context; for more information, please refer to its EGL counterpart */
5080 #define EVAS_GL_BAD_CURRENT_SURFACE             0x0007  /**< @brief Bad current surface; for more information, please refer to its EGL counterpart */
5081 #define EVAS_GL_BAD_DISPLAY                     0x0008  /**< @brief Bad display; for more information, please refer to its EGL counterpart */
5082 #define EVAS_GL_BAD_MATCH                       0x0009  /**< @brief Bad match; for more information, please refer to its EGL counterpart */
5083 #define EVAS_GL_BAD_NATIVE_PIXMAP               0x000A  /**< @internal Bad native pixmap; for more information, please refer to its EGL counterpart */
5084 #define EVAS_GL_BAD_NATIVE_WINDOW               0x000B  /**< @brief Bad native window; for more information, please refer to its EGL counterpart */
5085 #define EVAS_GL_BAD_PARAMETER                   0x000C  /**< @brief Bad parameter; for more information, please refer to its EGL counterpart */
5086 #define EVAS_GL_BAD_SURFACE                     0x000D  /**< @brief Bad surface; for more information, please refer to its EGL counterpart */
5087 /* EGL 1.1 - IMG_power_management */
5088 #define EVAS_GL_CONTEXT_LOST                    0x000E  /**< @brief Context lost; for more information, please refer to its EGL counterpart */
5089 
5090 /** @} */
5091 
5092 /* EGL_KHR_fence_sync - EVAS_GL_fence_sync */
5093 #define EVAS_GL_fence_sync 1
5094 /* EGL_KHR_reusable_sync - EVAS_GL_reusable_sync */
5095 #define EVAS_GL_reusable_sync 1
5096 /* EGL_KHR_wait_sync - EVAS_GL_wait_sync */
5097 #define EVAS_GL_KHR_wait_sync 1
5098 
5099 /**
5100  * @anchor evasgl_sync_values
5101  * @name Constants used to define and wait for Sync objects.
5102  * @{
5103  */
5104 #define EVAS_GL_SYNC_PRIOR_COMMANDS_COMPLETE    0x30F0 /**< @brief A value for @ref evasglGetSyncAttrib with @ref EVAS_GL_SYNC_CONDITION  */
5105 #define EVAS_GL_SYNC_STATUS                     0x30F1 /**< @brief A attribute for @ref evasglGetSyncAttrib */
5106 #define EVAS_GL_SIGNALED                        0x30F2 /**< @brief A value for @ref evasglGetSyncAttrib with @ref EVAS_GL_SYNC_STATUS  */
5107 #define EVAS_GL_UNSIGNALED                      0x30F3 /**< @brief A value for @ref evasglGetSyncAttrib with @ref EVAS_GL_SYNC_STATUS  */
5108 #define EVAS_GL_TIMEOUT_EXPIRED                 0x30F5 /**< @brief A returned by @ref evasglClientWaitSync */
5109 #define EVAS_GL_CONDITION_SATISFIED             0x30F6 /**< @brief A returned by @ref evasglClientWaitSync */
5110 #define EVAS_GL_SYNC_TYPE                       0x30F7 /**< @brief A attribute for @ref evasglGetSyncAttrib */
5111 #define EVAS_GL_SYNC_CONDITION                  0x30F8 /**< @brief A attribute for @ref evasglGetSyncAttrib */
5112 #define EVAS_GL_SYNC_FENCE                      0x30F9 /**< @brief A type for @ref evasglCreateSync */
5113 #define EVAS_GL_SYNC_REUSABLE                   0x30FA /**< @brief A type for @ref evasglCreateSync */
5114 
5115 #define EVAS_GL_SYNC_FLUSH_COMMANDS_BIT         0x0001 /**< @brief A flag for @ref evasglClientWaitSync */
5116 #define EVAS_GL_FOREVER                         0xFFFFFFFFFFFFFFFFull  /**< @brief Disable wait timeout */
5117 #define EVAS_GL_NO_SYNC                         ((EvasGLSync) NULL)    /**< @brief Empty sync object, see @ref evasglCreateSync */
5118 /** @} */
5119 
5120 /**
5121  * @name Surface attributes
5122  * The attributes can be queried using @ref evas_gl_surface_query
5123  * @{
5124  */
5125 #define EVAS_GL_HEIGHT                          0x3056 /**< @brief Attribute for @ref evas_gl_surface_query, returns the surface width in pixels (@c value should be an @c int) */
5126 #define EVAS_GL_WIDTH                           0x3057 /**< @brief Attribute for @ref evas_gl_surface_query, returns the surface width in pixels (@c value should be an @c int) */
5127 #define EVAS_GL_TEXTURE_FORMAT                  0x3080 /**< @brief Attribute for @ref evas_gl_surface_query, returns an @ref Evas_GL_Color_Format */
5128 #define EVAS_GL_TEXTURE_TARGET                  0x3081 /**< @brief Attribute for @ref evas_gl_surface_query, returns @ref EVAS_GL_TEXTURE_2D (if format is @c EVAS_GL_RGB_888 or @c EVAS_GL_RGBA_8888) or 0 (meaning @c NO_TEXTURE, from @c EVAS_GL_NO_FBO) (@c value should be an @c int) */
5129 /** @} */
5130 
5131 
5132 /**
5133  * @brief Defines the version of the API structure.
5134  *
5135  * This helps applications know at runtime whether a function pointer exists
5136  * or not.
5137  *
5138  * Version 1: GLES 2.0 + GLES2 extensions only
5139  * Version 2: GLES 2.0 + GLES2 extensions + GLES1 + GLES1.1 extensions
5140  * Version 3: [version 2] + Wayland extensions
5141  * Version 4: [version 3] + GLES3.0 + GLES3.0 extensions
5142  * Version 5: [version 4] + GLES3.1
5143  * Version 6: [version 5] + GLES3.2
5144  */
5145 #define EVAS_GL_API_VERSION 6
5146 
5147 /**
5148  * @brief The Evas GL API
5149  * This structure contains function pointers to the available GL functions.
5150  * Some of these functions may be wrapped internally by Evas GL.
5151  */
5152 struct _Evas_GL_API
5153 {
5154    /**
5155     * The current version number is @c EVAS_GL_API_VERSION (4).
5156     * This should not be confused with the OpenGL-ES context version.
5157     */
5158    int            version;
5159 
5160    /**
5161     * @anchor gles2
5162     * @name OpenGL-ES 2.0.
5163     *
5164     * Evas_GL_API version 1.
5165     *
5166     * The following functions are supported in all OpenGL-ES 2.0 contexts.
5167     * @{
5168     */
5169    void         (*glActiveTexture) (GLenum texture);
5170    void         (*glAttachShader) (GLuint program, GLuint shader);
5171    void         (*glBindAttribLocation) (GLuint program, GLuint index, const char* name);
5172    void         (*glBindBuffer) (GLenum target, GLuint buffer);
5173    void         (*glBindFramebuffer) (GLenum target, GLuint framebuffer);
5174    void         (*glBindRenderbuffer) (GLenum target, GLuint renderbuffer);
5175    void         (*glBindTexture) (GLenum target, GLuint texture);
5176    void         (*glBlendColor) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
5177    void         (*glBlendEquation) ( GLenum mode );
5178    void         (*glBlendEquationSeparate) (GLenum modeRGB, GLenum modeAlpha);
5179    void         (*glBlendFunc) (GLenum sfactor, GLenum dfactor);
5180    void         (*glBlendFuncSeparate) (GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
5181    void         (*glBufferData) (GLenum target, GLsizeiptr size, const void* data, GLenum usage);
5182    void         (*glBufferSubData) (GLenum target, GLintptr offset, GLsizeiptr size, const void* data);
5183    GLenum       (*glCheckFramebufferStatus) (GLenum target);
5184    void         (*glClear) (GLbitfield mask);
5185    void         (*glClearColor) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
5186    void         (*glClearDepthf) (GLclampf depth);
5187    void         (*glClearStencil) (GLint s);
5188    void         (*glColorMask) (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
5189    void         (*glCompileShader) (GLuint shader);
5190    void         (*glCompressedTexImage2D) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void* data);
5191    void         (*glCompressedTexSubImage2D) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void* data);
5192    void         (*glCopyTexImage2D) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
5193    void         (*glCopyTexSubImage2D) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
5194    GLuint       (*glCreateProgram) (void);
5195    GLuint       (*glCreateShader) (GLenum type);
5196    void         (*glCullFace) (GLenum mode);
5197    void         (*glDeleteBuffers) (GLsizei n, const GLuint* buffers);
5198    void         (*glDeleteFramebuffers) (GLsizei n, const GLuint* framebuffers);
5199    void         (*glDeleteProgram) (GLuint program);
5200    void         (*glDeleteRenderbuffers) (GLsizei n, const GLuint* renderbuffers);
5201    void         (*glDeleteShader) (GLuint shader);
5202    void         (*glDeleteTextures) (GLsizei n, const GLuint* textures);
5203    void         (*glDepthFunc) (GLenum func);
5204    void         (*glDepthMask) (GLboolean flag);
5205    void         (*glDepthRangef) (GLclampf zNear, GLclampf zFar);
5206    void         (*glDetachShader) (GLuint program, GLuint shader);
5207    void         (*glDisable) (GLenum cap);
5208    void         (*glDisableVertexAttribArray) (GLuint index);
5209    void         (*glDrawArrays) (GLenum mode, GLint first, GLsizei count);
5210    void         (*glDrawElements) (GLenum mode, GLsizei count, GLenum type, const void* indices);
5211    void         (*glEnable) (GLenum cap);
5212    void         (*glEnableVertexAttribArray) (GLuint index);
5213    void         (*glFinish) (void);
5214    void         (*glFlush) (void);
5215    void         (*glFramebufferRenderbuffer) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
5216    void         (*glFramebufferTexture2D) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
5217    void         (*glFrontFace) (GLenum mode);
5218    void         (*glGenBuffers) (GLsizei n, GLuint* buffers);
5219    void         (*glGenerateMipmap) (GLenum target);
5220    void         (*glGenFramebuffers) (GLsizei n, GLuint* framebuffers);
5221    void         (*glGenRenderbuffers) (GLsizei n, GLuint* renderbuffers);
5222    void         (*glGenTextures) (GLsizei n, GLuint* textures);
5223    void         (*glGetActiveAttrib) (GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, char* name);
5224    void         (*glGetActiveUniform) (GLuint program, GLuint index, GLsizei bufsize, GLsizei* length, GLint* size, GLenum* type, char* name);
5225    void         (*glGetAttachedShaders) (GLuint program, GLsizei maxcount, GLsizei* count, GLuint* shaders);
5226    int          (*glGetAttribLocation) (GLuint program, const char* name);
5227    void         (*glGetBooleanv) (GLenum pname, GLboolean* params);
5228    void         (*glGetBufferParameteriv) (GLenum target, GLenum pname, GLint* params);
5229    GLenum       (*glGetError) (void);
5230    void         (*glGetFloatv) (GLenum pname, GLfloat* params);
5231    void         (*glGetFramebufferAttachmentParameteriv) (GLenum target, GLenum attachment, GLenum pname, GLint* params);
5232    void         (*glGetIntegerv) (GLenum pname, GLint* params);
5233    void         (*glGetProgramiv) (GLuint program, GLenum pname, GLint* params);
5234    void         (*glGetProgramInfoLog) (GLuint program, GLsizei bufsize, GLsizei* length, char* infolog);
5235    void         (*glGetRenderbufferParameteriv) (GLenum target, GLenum pname, GLint* params);
5236    void         (*glGetShaderiv) (GLuint shader, GLenum pname, GLint* params);
5237    void         (*glGetShaderInfoLog) (GLuint shader, GLsizei bufsize, GLsizei* length, char* infolog);
5238    void         (*glGetShaderPrecisionFormat) (GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision);
5239    void         (*glGetShaderSource) (GLuint shader, GLsizei bufsize, GLsizei* length, char* source);
5240    const GLubyte* (*glGetString) (GLenum name);
5241    void         (*glGetTexParameterfv) (GLenum target, GLenum pname, GLfloat* params);
5242    void         (*glGetTexParameteriv) (GLenum target, GLenum pname, GLint* params);
5243    void         (*glGetUniformfv) (GLuint program, GLint location, GLfloat* params);
5244    void         (*glGetUniformiv) (GLuint program, GLint location, GLint* params);
5245    int          (*glGetUniformLocation) (GLuint program, const char* name);
5246    void         (*glGetVertexAttribfv) (GLuint index, GLenum pname, GLfloat* params);
5247    void         (*glGetVertexAttribiv) (GLuint index, GLenum pname, GLint* params);
5248    void         (*glGetVertexAttribPointerv) (GLuint index, GLenum pname, void** pointer);
5249    void         (*glHint) (GLenum target, GLenum mode);
5250    GLboolean    (*glIsBuffer) (GLuint buffer);
5251    GLboolean    (*glIsEnabled) (GLenum cap);
5252    GLboolean    (*glIsFramebuffer) (GLuint framebuffer);
5253    GLboolean    (*glIsProgram) (GLuint program);
5254    GLboolean    (*glIsRenderbuffer) (GLuint renderbuffer);
5255    GLboolean    (*glIsShader) (GLuint shader);
5256    GLboolean    (*glIsTexture) (GLuint texture);
5257    void         (*glLineWidth) (GLfloat width);
5258    void         (*glLinkProgram) (GLuint program);
5259    void         (*glPixelStorei) (GLenum pname, GLint param);
5260    void         (*glPolygonOffset) (GLfloat factor, GLfloat units);
5261    void         (*glReadPixels) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void* pixels);
5262    void         (*glReleaseShaderCompiler) (void);
5263    void         (*glRenderbufferStorage) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
5264    void         (*glSampleCoverage) (GLclampf value, GLboolean invert);
5265    void         (*glScissor) (GLint x, GLint y, GLsizei width, GLsizei height);
5266    void         (*glShaderBinary) (GLsizei n, const GLuint* shaders, GLenum binaryformat, const void* binary, GLsizei length);
5267    void         (*glShaderSource) (GLuint shader, GLsizei count, const char* const * string, const GLint* length);
5268    void         (*glStencilFunc) (GLenum func, GLint ref, GLuint mask);
5269    void         (*glStencilFuncSeparate) (GLenum face, GLenum func, GLint ref, GLuint mask);
5270    void         (*glStencilMask) (GLuint mask);
5271    void         (*glStencilMaskSeparate) (GLenum face, GLuint mask);
5272    void         (*glStencilOp) (GLenum fail, GLenum zfail, GLenum zpass);
5273    void         (*glStencilOpSeparate) (GLenum face, GLenum fail, GLenum zfail, GLenum zpass);
5274    void         (*glTexImage2D) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void* pixels);
5275    void         (*glTexParameterf) (GLenum target, GLenum pname, GLfloat param);
5276    void         (*glTexParameterfv) (GLenum target, GLenum pname, const GLfloat* params);
5277    void         (*glTexParameteri) (GLenum target, GLenum pname, GLint param);
5278    void         (*glTexParameteriv) (GLenum target, GLenum pname, const GLint* params);
5279    void         (*glTexSubImage2D) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void* pixels);
5280    void         (*glUniform1f) (GLint location, GLfloat x);
5281    void         (*glUniform1fv) (GLint location, GLsizei count, const GLfloat* v);
5282    void         (*glUniform1i) (GLint location, GLint x);
5283    void         (*glUniform1iv) (GLint location, GLsizei count, const GLint* v);
5284    void         (*glUniform2f) (GLint location, GLfloat x, GLfloat y);
5285    void         (*glUniform2fv) (GLint location, GLsizei count, const GLfloat* v);
5286    void         (*glUniform2i) (GLint location, GLint x, GLint y);
5287    void         (*glUniform2iv) (GLint location, GLsizei count, const GLint* v);
5288    void         (*glUniform3f) (GLint location, GLfloat x, GLfloat y, GLfloat z);
5289    void         (*glUniform3fv) (GLint location, GLsizei count, const GLfloat* v);
5290    void         (*glUniform3i) (GLint location, GLint x, GLint y, GLint z);
5291    void         (*glUniform3iv) (GLint location, GLsizei count, const GLint* v);
5292    void         (*glUniform4f) (GLint location, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
5293    void         (*glUniform4fv) (GLint location, GLsizei count, const GLfloat* v);
5294    void         (*glUniform4i) (GLint location, GLint x, GLint y, GLint z, GLint w);
5295    void         (*glUniform4iv) (GLint location, GLsizei count, const GLint* v);
5296    void         (*glUniformMatrix2fv) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
5297    void         (*glUniformMatrix3fv) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
5298    void         (*glUniformMatrix4fv) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
5299    void         (*glUseProgram) (GLuint program);
5300    void         (*glValidateProgram) (GLuint program);
5301    void         (*glVertexAttrib1f) (GLuint indx, GLfloat x);
5302    void         (*glVertexAttrib1fv) (GLuint indx, const GLfloat* values);
5303    void         (*glVertexAttrib2f) (GLuint indx, GLfloat x, GLfloat y);
5304    void         (*glVertexAttrib2fv) (GLuint indx, const GLfloat* values);
5305    void         (*glVertexAttrib3f) (GLuint indx, GLfloat x, GLfloat y, GLfloat z);
5306    void         (*glVertexAttrib3fv) (GLuint indx, const GLfloat* values);
5307    void         (*glVertexAttrib4f) (GLuint indx, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
5308    void         (*glVertexAttrib4fv) (GLuint indx, const GLfloat* values);
5309    void         (*glVertexAttribPointer) (GLuint indx, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void* ptr);
5310    void         (*glViewport) (GLint x, GLint y, GLsizei width, GLsizei height);
5311    /** @} */
5312 
5313    /**
5314     * @name OpenGL-ES 2.0 extensions.
5315     *
5316     *  Evas_GL_API version 1
5317     *
5318     * The following functions may be supported in OpenGL-ES 2.0 contexts,
5319     * depending on which extensions Evas has decided to support.
5320     *
5321     * @{
5322     */
5323 
5324    /* GL_OES_EGL_image */
5325    // Notice these two names have been changed to fit Evas GL and not EGL!
5326    /** @brief Requires the @c GL_OES_EGL_image extension, similar to @c glEGLImageTargetTexture2DOES. */
5327    void         (*glEvasGLImageTargetTexture2DOES) (GLenum target, EvasGLImage image);
5328    /** @brief Requires the @c GL_OES_EGL_image extension, similar to @c glEGLImageTargetRenderbufferStorageOES. */
5329    void         (*glEvasGLImageTargetRenderbufferStorageOES) (GLenum target, EvasGLImage image);
5330 
5331    /* GL_OES_get_program_binary */
5332    void 	(*glGetProgramBinaryOES) (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary);
5333    void 	(*glProgramBinaryOES) (GLuint program, GLenum binaryFormat, const void *binary, GLint length);
5334    /* GL_OES_mapbuffer */
5335    void* 	(*glMapBufferOES) (GLenum target, GLenum access);
5336    GLboolean 	(*glUnmapBufferOES) (GLenum target);
5337    void 	(*glGetBufferPointervOES) (GLenum target, GLenum pname, void** params);
5338    /* GL_OES_texture_3D */
5339    void 	(*glTexImage3DOES) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void* pixels);
5340    void 	(*glTexSubImage3DOES) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void* pixels);
5341    void 	(*glCopyTexSubImage3DOES) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
5342    void 	(*glCompressedTexImage3DOES) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void* data);
5343    void 	(*glCompressedTexSubImage3DOES) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void* data);
5344    void 	(*glFramebufferTexture3DOES) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
5345 
5346    /* AMD_performance_monitor */
5347    void 	(*glGetPerfMonitorGroupsAMD) (GLint* numGroups, GLsizei groupsSize, GLuint* groups);
5348    void 	(*glGetPerfMonitorCountersAMD) (GLuint group, GLint* numCounters, GLint* maxActiveCounters, GLsizei counterSize, GLuint* counters);
5349    void 	(*glGetPerfMonitorGroupStringAMD) (GLuint group, GLsizei bufSize, GLsizei* length, char* groupString);
5350    void 	(*glGetPerfMonitorCounterStringAMD) (GLuint group, GLuint counter, GLsizei bufSize, GLsizei* length, char* counterString);
5351    void 	(*glGetPerfMonitorCounterInfoAMD) (GLuint group, GLuint counter, GLenum pname, void* data);
5352    void 	(*glGenPerfMonitorsAMD) (GLsizei n, GLuint* monitors);
5353    void 	(*glDeletePerfMonitorsAMD) (GLsizei n, GLuint* monitors);
5354    void 	(*glSelectPerfMonitorCountersAMD) (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint* countersList);
5355    void 	(*glBeginPerfMonitorAMD) (GLuint monitor);
5356    void 	(*glEndPerfMonitorAMD) (GLuint monitor);
5357    void 	(*glGetPerfMonitorCounterDataAMD) (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint* data, GLint* bytesWritten);
5358 
5359    /* GL_EXT_discard_framebuffer */
5360    void 	(*glDiscardFramebufferEXT) (GLenum target, GLsizei numAttachments, const GLenum* attachments);
5361 
5362    /* GL_EXT_multi_draw_arrays */
5363    void 	(*glMultiDrawArraysEXT) (GLenum mode, GLint* first, GLsizei* count, GLsizei primcount);
5364    void 	(*glMultiDrawElementsEXT) (GLenum mode, const GLsizei* count, GLenum type, const GLvoid** indices, GLsizei primcount);
5365 
5366    /* GL_NV_fence */
5367    void 	(*glDeleteFencesNV) (GLsizei n, const GLuint* fences);
5368    void 	(*glGenFencesNV) (GLsizei n, GLuint* fences);
5369    GLboolean 	(*glIsFenceNV) (GLuint fence);
5370    GLboolean 	(*glTestFenceNV) (GLuint fence);
5371    void 	(*glGetFenceivNV) (GLuint fence, GLenum pname, GLint* params);
5372    void 	(*glFinishFenceNV) (GLuint fence);
5373    void 	(*glSetFenceNV) (GLuint, GLenum);
5374 
5375    /* GL_QCOM_driver_control */
5376    void 	(*glGetDriverControlsQCOM) (GLint* num, GLsizei size, GLuint* driverControls);
5377    void 	(*glGetDriverControlStringQCOM) (GLuint driverControl, GLsizei bufSize, GLsizei* length, char* driverControlString);
5378    void 	(*glEnableDriverControlQCOM) (GLuint driverControl);
5379    void 	(*glDisableDriverControlQCOM) (GLuint driverControl);
5380 
5381    /* GL_QCOM_extended_get */
5382    void 	(*glExtGetTexturesQCOM) (GLuint* textures, GLint maxTextures, GLint* numTextures);
5383    void 	(*glExtGetBuffersQCOM) (GLuint* buffers, GLint maxBuffers, GLint* numBuffers);
5384    void 	(*glExtGetRenderbuffersQCOM) (GLuint* renderbuffers, GLint maxRenderbuffers, GLint* numRenderbuffers);
5385    void 	(*glExtGetFramebuffersQCOM) (GLuint* framebuffers, GLint maxFramebuffers, GLint* numFramebuffers);
5386    void 	(*glExtGetTexLevelParameterivQCOM) (GLuint texture, GLenum face, GLint level, GLenum pname, GLint* params);
5387    void 	(*glExtTexObjectStateOverrideiQCOM) (GLenum target, GLenum pname, GLint param);
5388    void 	(*glExtGetTexSubImageQCOM) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, void* texels);
5389    void 	(*glExtGetBufferPointervQCOM) (GLenum target, void** params);
5390 
5391    /* GL_QCOM_extended_get2 */
5392    void 	(*glExtGetShadersQCOM) (GLuint* shaders, GLint maxShaders, GLint* numShaders);
5393    void 	(*glExtGetProgramsQCOM) (GLuint* programs, GLint maxPrograms, GLint* numPrograms);
5394    GLboolean 	(*glExtIsProgramBinaryQCOM) (GLuint program);
5395    void 	(*glExtGetProgramBinarySourceQCOM) (GLuint program, GLenum shadertype, char* source, GLint* length);
5396    /** @} */
5397 
5398    /**
5399     * @name EGL-related extensions
5400     *
5401     * Evas_GL_API version 1.
5402     *
5403     * @{
5404     */
5405 
5406    /* EGL_KHR_image - #ifdef EVAS_GL_image */
5407    /**
5408     * @anchor evasglCreateImage
5409     * @brief Create an EvasGLImage for the current context.
5410     *
5411     * Common targets are:
5412     * @li @c EVAS_GL_TEXTURE_2D:<br/>
5413     * In case of @c EVAS_GL_TEXTURE_2D on EGL, the currently bound EGLContext
5414     * will be used to create the image. The buffer argument must be a texture
5415     * ID cast down to a void* pointer.<br/>
5416     * Requires the @c EVAS_GL_image extension.
5417     *
5418     * @li @c EVAS_GL_NATIVE_SURFACE_TIZEN (Tizen platform only):<br/>
5419     * Requires the @c EVAS_GL_TIZEN_image_native_surface extension.
5420     *
5421     * @deprecated
5422     * @note Please consider using @ref evasglCreateImageForContext instead.
5423     */
5424    EvasGLImage  (*evasglCreateImage) (int target, void* buffer, const int* attrib_list) EINA_WARN_UNUSED_RESULT EINA_DEPRECATED;
5425 
5426    /**
5427     * @anchor evasglDestroyImage
5428     * @brief Destroys an EvasGLImage.
5429     * Destroy an image created by either @ref evasglCreateImage or @ref evasglCreateImageForContext.
5430     *
5431     * Requires the @c EVAS_GL_image extension.
5432     *
5433     * @note Unlike in pure EGL, the display pointer doesn't need to be
5434     * passed in, as Evas GL will use the same EGLDisplay as used in the
5435     * create function.
5436     */
5437    void         (*evasglDestroyImage) (EvasGLImage image);
5438    /** @} */
5439 
5440    // ---------------------------------------------------------------------- //
5441    /* Evas_GL_API version 2: */
5442 
5443 
5444    /**
5445     * @anchor evasglCreateImageForContext
5446     * @brief Create an EvasGLImage for a given context.
5447     *
5448     * @param[in]  evas_gl     The current Evas GL object,
5449     * @param[in]  ctx         A context to create this image for,
5450     * @param[in]  target      One of @c EVAS_GL_TEXTURE_2D and @c EVAS_GL_NATIVE_SURFACE_TIZEN,
5451     * @param[in]  buffer      A pointer to a buffer, see below,
5452     * @param[in]  attrib_list An array of key-value pairs terminated by 0 (see @ref EVAS_GL_IMAGE_PRESERVED)
5453     *
5454     * Common targets are:
5455     * @li @c EVAS_GL_TEXTURE_2D:<br/>
5456     * In case of @c EVAS_GL_TEXTURE_2D, the buffer argument must be a texture
5457     * ID cast down to a void* pointer.<br/>
5458     * Requires the @c EVAS_GL_image extension.
5459     *
5460     * @code
5461 EvasGLImage *img = glapi->evasglCreateImageForContext
5462   (evasgl, ctx, EVAS_GL_TEXTURE_2D, (void*)(intptr_t)texture_id, NULL);
5463     * @endcode
5464     *
5465     * @li @c EVAS_GL_NATIVE_SURFACE_TIZEN (Tizen platform only):<br/>
5466     * Requires the @c EVAS_GL_TIZEN_image_native_surface extension.
5467     *
5468     * @note Evas_GL_API must have version 2 or higher.
5469     *
5470     * @since 1.12
5471     */
5472    EvasGLImage  (*evasglCreateImageForContext) (Evas_GL *evas_gl, Evas_GL_Context *ctx, int target, void* buffer, const int* attrib_list) EINA_WARN_UNUSED_RESULT;
5473 
5474    /* This defines shows that Evas_GL_API supports GLES1 APIs */
5475 #define EVAS_GL_GLES1 1
5476    /**
5477     * @name OpenGL-ES 1.1
5478     *
5479     * Evas_GL_API version 2 or higher.
5480     *
5481     * The following functions are some of the standard OpenGL-ES 1.0 functions,
5482     * that are not also present in the @ref gles2 "OpenGL-ES 2.0 APIs".
5483     * @{
5484     */
5485    /* Available only in Common profile */
5486    void         (*glAlphaFunc) (GLenum func, GLclampf ref);
5487    void         (*glClipPlanef) (GLenum plane, const GLfloat *equation);
5488    void         (*glColor4f) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
5489    void         (*glFogf) (GLenum pname, GLfloat param);
5490    void         (*glFogfv) (GLenum pname, const GLfloat *params);
5491    void         (*glFrustumf) (GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar);
5492    void         (*glGetClipPlanef) (GLenum pname, GLfloat eqn[4]);
5493    void         (*glGetLightfv) (GLenum light, GLenum pname, GLfloat *params);
5494    void         (*glGetMaterialfv) (GLenum face, GLenum pname, GLfloat *params);
5495    void         (*glGetTexEnvfv) (GLenum env, GLenum pname, GLfloat *params);
5496    void         (*glLightModelf) (GLenum pname, GLfloat param);
5497    void         (*glLightModelfv) (GLenum pname, const GLfloat *params);
5498    void         (*glLightf) (GLenum light, GLenum pname, GLfloat param);
5499    void         (*glLightfv) (GLenum light, GLenum pname, const GLfloat *params);
5500    void         (*glLoadMatrixf) (const GLfloat *m);
5501    void         (*glMaterialf) (GLenum face, GLenum pname, GLfloat param);
5502    void         (*glMaterialfv) (GLenum face, GLenum pname, const GLfloat *params);
5503    void         (*glMultMatrixf) (const GLfloat *m);
5504    void         (*glMultiTexCoord4f) (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
5505    void         (*glNormal3f) (GLfloat nx, GLfloat ny, GLfloat nz);
5506    void         (*glOrthof) (GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar);
5507    void         (*glPointParameterf) (GLenum pname, GLfloat param);
5508    void         (*glPointParameterfv) (GLenum pname, const GLfloat *params);
5509    void         (*glPointSize) (GLfloat size);
5510    void         (*glPointSizePointerOES) (GLenum type, GLsizei stride, const GLvoid * pointer);
5511    void         (*glRotatef) (GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
5512    void         (*glScalef) (GLfloat x, GLfloat y, GLfloat z);
5513    void         (*glTexEnvf) (GLenum target, GLenum pname, GLfloat param);
5514    void         (*glTexEnvfv) (GLenum target, GLenum pname, const GLfloat *params);
5515    void         (*glTranslatef) (GLfloat x, GLfloat y, GLfloat z);
5516 
5517    /* Available in both Common and Common-Lite profiles */
5518    void         (*glAlphaFuncx) (GLenum func, GLclampx ref);
5519    void         (*glClearColorx) (GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha);
5520    void         (*glClearDepthx) (GLclampx depth);
5521    void         (*glClientActiveTexture) (GLenum texture);
5522    void         (*glClipPlanex) (GLenum plane, const GLfixed *equation);
5523    void         (*glColor4ub) (GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha);
5524    void         (*glColor4x) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
5525    void         (*glColorPointer) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
5526    void         (*glDepthRangex) (GLclampx zNear, GLclampx zFar);
5527    void         (*glDisableClientState) (GLenum array);
5528    void         (*glEnableClientState) (GLenum array);
5529    void         (*glFogx) (GLenum pname, GLfixed param);
5530    void         (*glFogxv) (GLenum pname, const GLfixed *params);
5531    void         (*glFrustumx) (GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar);
5532    void         (*glGetClipPlanex) (GLenum pname, GLfixed eqn[4]);
5533    void         (*glGetFixedv) (GLenum pname, GLfixed *params);
5534    void         (*glGetLightxv) (GLenum light, GLenum pname, GLfixed *params);
5535    void         (*glGetMaterialxv) (GLenum face, GLenum pname, GLfixed *params);
5536    void         (*glGetPointerv) (GLenum pname, GLvoid **params);
5537    void         (*glGetTexEnviv) (GLenum env, GLenum pname, GLint *params);
5538    void         (*glGetTexEnvxv) (GLenum env, GLenum pname, GLfixed *params);
5539    void         (*glGetTexParameterxv) (GLenum target, GLenum pname, GLfixed *params);
5540    void         (*glLightModelx) (GLenum pname, GLfixed param);
5541    void         (*glLightModelxv) (GLenum pname, const GLfixed *params);
5542    void         (*glLightx) (GLenum light, GLenum pname, GLfixed param);
5543    void         (*glLightxv) (GLenum light, GLenum pname, const GLfixed *params);
5544    void         (*glLineWidthx) (GLfixed width);
5545    void         (*glLoadIdentity) (void);
5546    void         (*glLoadMatrixx) (const GLfixed *m);
5547    void         (*glLogicOp) (GLenum opcode);
5548    void         (*glMaterialx) (GLenum face, GLenum pname, GLfixed param);
5549    void         (*glMaterialxv) (GLenum face, GLenum pname, const GLfixed *params);
5550    void         (*glMatrixMode) (GLenum mode);
5551    void         (*glMultMatrixx) (const GLfixed *m);
5552    void         (*glMultiTexCoord4x) (GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q);
5553    void         (*glNormal3x) (GLfixed nx, GLfixed ny, GLfixed nz);
5554    void         (*glNormalPointer) (GLenum type, GLsizei stride, const GLvoid *pointer);
5555    void         (*glOrthox) (GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar);
5556    void         (*glPointParameterx) (GLenum pname, GLfixed param);
5557    void         (*glPointParameterxv) (GLenum pname, const GLfixed *params);
5558    void         (*glPointSizex) (GLfixed size);
5559    void         (*glPolygonOffsetx) (GLfixed factor, GLfixed units);
5560    void         (*glPopMatrix) (void);
5561    void         (*glPushMatrix) (void);
5562    void         (*glRotatex) (GLfixed angle, GLfixed x, GLfixed y, GLfixed z);
5563    void         (*glSampleCoveragex) (GLclampx value, GLboolean invert);
5564    void         (*glScalex) (GLfixed x, GLfixed y, GLfixed z);
5565    void         (*glShadeModel) (GLenum mode);
5566    void         (*glTexCoordPointer) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
5567    void         (*glTexEnvi) (GLenum target, GLenum pname, GLint param);
5568    void         (*glTexEnvx) (GLenum target, GLenum pname, GLfixed param);
5569    void         (*glTexEnviv) (GLenum target, GLenum pname, const GLint *params);
5570    void         (*glTexEnvxv) (GLenum target, GLenum pname, const GLfixed *params);
5571    void         (*glTexParameterx) (GLenum target, GLenum pname, GLfixed param);
5572    void         (*glTexParameterxv) (GLenum target, GLenum pname, const GLfixed *params);
5573    void         (*glTranslatex) (GLfixed x, GLfixed y, GLfixed z);
5574    void         (*glVertexPointer) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
5575    /** @} */
5576 
5577    /**
5578     * @name OpenGL-ES 1.1 extensions
5579     *
5580     * Evas_GL_API version 2 or higher.
5581     *
5582     * OpenGL-ES 1.1 specifies a set of extensions on top of OpenGL-ES 1.0.
5583     * When available, Evas GL will expose these extensions with the following
5584     * function pointers.
5585     * @{
5586     */
5587    /* GL_OES_blend_equation_separate */
5588    void         (*glBlendEquationSeparateOES) (GLenum modeRGB, GLenum modeAlpha);
5589 
5590    /* GL_OES_blend_func_separate */
5591    void         (*glBlendFuncSeparateOES) (GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
5592 
5593    /* GL_OES_blend_subtract */
5594    void         (*glBlendEquationOES) (GLenum mode);
5595 
5596    /* GL_OES_draw_texture */
5597    void         (*glDrawTexsOES) (GLshort x, GLshort y, GLshort z, GLshort width, GLshort height);
5598    void         (*glDrawTexiOES) (GLint x, GLint y, GLint z, GLint width, GLint height);
5599    void         (*glDrawTexxOES) (GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height);
5600    void         (*glDrawTexsvOES) (const GLshort *coords);
5601    void         (*glDrawTexivOES) (const GLint *coords);
5602    void         (*glDrawTexxvOES) (const GLfixed *coords);
5603    void         (*glDrawTexfOES) (GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height);
5604    void         (*glDrawTexfvOES) (const GLfloat *coords);
5605 
5606    /* GL_OES_fixed_point */
5607    void         (*glAlphaFuncxOES) (GLenum func, GLclampx ref);
5608    void         (*glClearColorxOES) (GLclampx red, GLclampx green, GLclampx blue, GLclampx alpha);
5609    void         (*glClearDepthxOES) (GLclampx depth);
5610    void         (*glClipPlanexOES) (GLenum plane, const GLfixed *equation);
5611    void         (*glColor4xOES) (GLfixed red, GLfixed green, GLfixed blue, GLfixed alpha);
5612    void         (*glDepthRangexOES) (GLclampx zNear, GLclampx zFar);
5613    void         (*glFogxOES) (GLenum pname, GLfixed param);
5614    void         (*glFogxvOES) (GLenum pname, const GLfixed *params);
5615    void         (*glFrustumxOES) (GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar);
5616    void         (*glGetClipPlanexOES) (GLenum pname, GLfixed eqn[4]);
5617    void         (*glGetFixedvOES) (GLenum pname, GLfixed *params);
5618    void         (*glGetLightxvOES) (GLenum light, GLenum pname, GLfixed *params);
5619    void         (*glGetMaterialxvOES) (GLenum face, GLenum pname, GLfixed *params);
5620    void         (*glGetTexEnvxvOES) (GLenum env, GLenum pname, GLfixed *params);
5621    void         (*glGetTexParameterxvOES) (GLenum target, GLenum pname, GLfixed *params);
5622    void         (*glLightModelxOES) (GLenum pname, GLfixed param);
5623    void         (*glLightModelxvOES) (GLenum pname, const GLfixed *params);
5624    void         (*glLightxOES) (GLenum light, GLenum pname, GLfixed param);
5625    void         (*glLightxvOES) (GLenum light, GLenum pname, const GLfixed *params);
5626    void         (*glLineWidthxOES) (GLfixed width);
5627    void         (*glLoadMatrixxOES) (const GLfixed *m);
5628    void         (*glMaterialxOES) (GLenum face, GLenum pname, GLfixed param);
5629    void         (*glMaterialxvOES) (GLenum face, GLenum pname, const GLfixed *params);
5630    void         (*glMultMatrixxOES) (const GLfixed *m);
5631    void         (*glMultiTexCoord4xOES) (GLenum target, GLfixed s, GLfixed t, GLfixed r, GLfixed q);
5632    void         (*glNormal3xOES) (GLfixed nx, GLfixed ny, GLfixed nz);
5633    void         (*glOrthoxOES) (GLfixed left, GLfixed right, GLfixed bottom, GLfixed top, GLfixed zNear, GLfixed zFar);
5634    void         (*glPointParameterxOES) (GLenum pname, GLfixed param);
5635    void         (*glPointParameterxvOES) (GLenum pname, const GLfixed *params);
5636    void         (*glPointSizexOES) (GLfixed size);
5637    void         (*glPolygonOffsetxOES) (GLfixed factor, GLfixed units);
5638    void         (*glRotatexOES) (GLfixed angle, GLfixed x, GLfixed y, GLfixed z);
5639    void         (*glSampleCoveragexOES) (GLclampx value, GLboolean invert);
5640    void         (*glScalexOES) (GLfixed x, GLfixed y, GLfixed z);
5641    void         (*glTexEnvxOES) (GLenum target, GLenum pname, GLfixed param);
5642    void         (*glTexEnvxvOES) (GLenum target, GLenum pname, const GLfixed *params);
5643    void         (*glTexParameterxOES) (GLenum target, GLenum pname, GLfixed param);
5644    void         (*glTexParameterxvOES) (GLenum target, GLenum pname, const GLfixed *params);
5645    void         (*glTranslatexOES) (GLfixed x, GLfixed y, GLfixed z);
5646 
5647    /* GL_OES_framebuffer_object */
5648    GLboolean    (*glIsRenderbufferOES) (GLuint renderbuffer);
5649    void         (*glBindRenderbufferOES) (GLenum target, GLuint renderbuffer);
5650    void         (*glDeleteRenderbuffersOES) (GLsizei n, const GLuint* renderbuffers);
5651    void         (*glGenRenderbuffersOES) (GLsizei n, GLuint* renderbuffers);
5652    void         (*glRenderbufferStorageOES) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
5653    void         (*glGetRenderbufferParameterivOES) (GLenum target, GLenum pname, GLint* params);
5654    GLboolean    (*glIsFramebufferOES) (GLuint framebuffer);
5655    void         (*glBindFramebufferOES) (GLenum target, GLuint framebuffer);
5656    void         (*glDeleteFramebuffersOES) (GLsizei n, const GLuint* framebuffers);
5657    void         (*glGenFramebuffersOES) (GLsizei n, GLuint* framebuffers);
5658    GLenum       (*glCheckFramebufferStatusOES) (GLenum target);
5659    void         (*glFramebufferRenderbufferOES) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
5660    void         (*glFramebufferTexture2DOES) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
5661    void         (*glGetFramebufferAttachmentParameterivOES) (GLenum target, GLenum attachment, GLenum pname, GLint* params);
5662    void         (*glGenerateMipmapOES) (GLenum target);
5663 
5664    /* GL_OES_matrix_palette */
5665    void         (*glCurrentPaletteMatrixOES) (GLuint matrixpaletteindex);
5666    void         (*glLoadPaletteFromModelViewMatrixOES) (void);
5667    void         (*glMatrixIndexPointerOES) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
5668    void         (*glWeightPointerOES) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
5669 
5670    /* GL_OES_query_matrix */
5671    GLbitfield   (*glQueryMatrixxOES) (GLfixed mantissa[16], GLint exponent[16]);
5672 
5673    /* GL_OES_single_precision */
5674    void         (*glDepthRangefOES) (GLclampf zNear, GLclampf zFar);
5675    void         (*glFrustumfOES) (GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar);
5676    void         (*glOrthofOES) (GLfloat left, GLfloat right, GLfloat bottom, GLfloat top, GLfloat zNear, GLfloat zFar);
5677    void         (*glClipPlanefOES) (GLenum plane, const GLfloat *equation);
5678    void         (*glGetClipPlanefOES) (GLenum pname, GLfloat eqn[4]);
5679    void         (*glClearDepthfOES) (GLclampf depth);
5680 
5681    /* GL_OES_texture_cube_map */
5682    void         (*glTexGenfOES) (GLenum coord, GLenum pname, GLfloat param);
5683    void         (*glTexGenfvOES) (GLenum coord, GLenum pname, const GLfloat *params);
5684    void         (*glTexGeniOES) (GLenum coord, GLenum pname, GLint param);
5685    void         (*glTexGenivOES) (GLenum coord, GLenum pname, const GLint *params);
5686    void         (*glTexGenxOES) (GLenum coord, GLenum pname, GLfixed param);
5687    void         (*glTexGenxvOES) (GLenum coord, GLenum pname, const GLfixed *params);
5688    void         (*glGetTexGenfvOES) (GLenum coord, GLenum pname, GLfloat *params);
5689    void         (*glGetTexGenivOES) (GLenum coord, GLenum pname, GLint *params);
5690    void         (*glGetTexGenxvOES) (GLenum coord, GLenum pname, GLfixed *params);
5691 
5692    /* GL_OES_vertex_array_object */
5693    void         (*glBindVertexArrayOES) (GLuint array);
5694    void         (*glDeleteVertexArraysOES) (GLsizei n, const GLuint *arrays);
5695    void         (*glGenVertexArraysOES) (GLsizei n, GLuint *arrays);
5696    GLboolean    (*glIsVertexArrayOES) (GLuint array);
5697 
5698    /* GL_APPLE_copy_texture_levels */
5699    void         (*glCopyTextureLevelsAPPLE) (GLuint destinationTexture, GLuint sourceTexture, GLint sourceBaseLevel, GLsizei sourceLevelCount);
5700    void         (*glRenderbufferStorageMultisampleAPPLE) (GLenum, GLsizei, GLenum, GLsizei, GLsizei);
5701    void         (*glResolveMultisampleFramebufferAPPLE) (void);
5702    GLsync       (*glFenceSyncAPPLE) (GLenum condition, GLbitfield flags);
5703    GLboolean    (*glIsSyncAPPLE) (GLsync sync);
5704    void         (*glDeleteSyncAPPLE) (GLsync sync);
5705    GLenum       (*glClientWaitSyncAPPLE) (GLsync sync, GLbitfield flags, uint64_t timeout);
5706    void         (*glWaitSyncAPPLE) (GLsync sync, GLbitfield flags, uint64_t timeout);
5707    void         (*glGetInteger64vAPPLE) (GLenum pname, int64_t *params);
5708    void         (*glGetSyncivAPPLE) (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values);
5709 
5710    /* GL_EXT_map_buffer_range */
5711    void*        (*glMapBufferRangeEXT) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
5712    void         (*glFlushMappedBufferRangeEXT) (GLenum target, GLintptr offset, GLsizeiptr length);
5713 
5714    /* GL_EXT_multisampled_render_to_texture */
5715    void         (*glRenderbufferStorageMultisampleEXT) (GLenum, GLsizei, GLenum, GLsizei, GLsizei);
5716    void         (*glFramebufferTexture2DMultisampleEXT) (GLenum, GLenum, GLenum, GLuint, GLint, GLsizei);
5717 
5718    /* GL_EXT_robustness */
5719    GLenum       (*glGetGraphicsResetStatusEXT) (void);
5720    void         (*glReadnPixelsEXT) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data);
5721    void         (*glGetnUniformfvEXT) (GLuint program, GLint location, GLsizei bufSize, float *params);
5722    void         (*glGetnUniformivEXT) (GLuint program, GLint location, GLsizei bufSize, GLint *params);
5723 
5724    /* GL_EXT_texture_storage */
5725    void         (*glTexStorage1DEXT) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);
5726    void         (*glTexStorage2DEXT) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
5727    void         (*glTexStorage3DEXT) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
5728    void         (*glTextureStorage1DEXT) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width);
5729    void         (*glTextureStorage2DEXT) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
5730    void         (*glTextureStorage3DEXT) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
5731 
5732    /* GL_IMG_user_clip_plane */
5733    void         (*glClipPlanefIMG) (GLenum, const GLfloat *);
5734    void         (*glClipPlanexIMG) (GLenum, const GLfixed *);
5735 
5736    /* GL_IMG_multisampled_render_to_texture */
5737    void         (*glRenderbufferStorageMultisampleIMG) (GLenum, GLsizei, GLenum, GLsizei, GLsizei);
5738    void         (*glFramebufferTexture2DMultisampleIMG) (GLenum, GLenum, GLenum, GLuint, GLint, GLsizei);
5739 
5740    /* GL_QCOM_tiled_rendering */
5741    void         (*glStartTilingQCOM) (GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask);
5742    void         (*glEndTilingQCOM) (GLbitfield preserveMask);
5743    /** @} */
5744 
5745    /*------- EvasGL / EGL-related functions -------*/
5746    /**
5747     * @name Evas GL Sync object functions
5748     * @since 1.12
5749     * @{ */
5750 
5751    /**
5752     * @anchor evasglCreateSync
5753     * @brief Create a synchronization primitive which can be tested or waited upon.
5754     *
5755     * @note Requires the extension @c EGL_KHR_fence_sync, similar to eglCreateSyncKHR.
5756     *
5757     * @param evas_gl      The current Evas_GL connection
5758     * @param type         One of: @c EVAS_GL_SYNC_FENCE or @c EVAS_GL_SYNC_REUSABLE
5759     * @param attrib_list  Optional attributes list, terminated by @c EVAS_GL_NONE
5760     *                     The supported attributes depend on the driver extensions,
5761     *                     please refer to the EGL specifications for more information.
5762     *
5763     * @return A new sync object (EvasGLSync)
5764     * @since 1.12
5765     */
5766    EvasGLSync   (*evasglCreateSync) (Evas_GL *evas_gl, unsigned int type, const int *attrib_list);
5767    /**
5768     * @anchor evasglDestroySync
5769     * @brief Destroys a sync object created by @c evasglCreateSync.
5770     *
5771     * @note Requires the extension @c EGL_KHR_fence_sync, similar to eglDestroySyncKHR.
5772     *
5773     * @param evas_gl     The current Evas_GL connection
5774     * @param sync        A valid sync object created by @c evasglCreateSync
5775     *
5776     * @return @c EINA_TRUE in case of success, @c EINA_FALSE in case of failure
5777     *         (in which case evas_gl_error_get() should return an error code)
5778     * @since 1.12
5779     */
5780    Eina_Bool    (*evasglDestroySync) (Evas_GL *evas_gl, EvasGLSync sync);
5781 
5782    /**
5783     * @anchor evasglClientWaitSync
5784     * @brief Block and wait until for sync object is signaled or timeout is reached
5785     *
5786     * @param evas_gl     The current Evas_GL connection
5787     * @param sync        A valid sync object created by evasglCreateSync
5788     * @param timeout     A relative timeout in nanoseconds
5789     *
5790     * @note Requires the extension @c EGL_KHR_reusable_sync, similar to eglClientWaitSyncKHR.
5791     *
5792     * @return @c EVAS_GL_TIMEOUT_EXPIRED if the sync failed and timeout was reached,
5793     *         @c EVAS_GL_CONDITION_SATISFIED if the sync was signaled,
5794     *         or 0 in case of failure (in which case evas_gl_error_get() should return an error code)
5795     * @since 1.12
5796     */
5797    int          (*evasglClientWaitSync) (Evas_GL *evas_gl, EvasGLSync sync, int flags, EvasGLTime timeout);
5798 
5799    /**
5800     * @anchor evasglSignalSync
5801     * @brief Signal a sync object, unlocking all threads waiting on it
5802     *
5803     * @param evas_gl     The current Evas_GL connection
5804     * @param sync        A valid sync object created by evasglCreateSync
5805     *
5806     * @note Requires the extension @c EGL_KHR_reusable_sync or @c EGL_KHR_wait_sync, similar to eglSignalSyncKHR.
5807     *
5808     * @return @c EINA_TRUE in case of success, or
5809     *         @c EINA_FALSE in case of failure (in which case evas_gl_error_get() should return an error code)
5810     * @since 1.12
5811     */
5812    Eina_Bool    (*evasglSignalSync) (Evas_GL *evas_gl, EvasGLSync sync, unsigned mode);
5813 
5814    /**
5815     * @anchor evasglGetSyncAttrib
5816     * @brief Query a sync object for its properties
5817     *
5818     * @param evas_gl     The current Evas_GL connection
5819     * @param sync        A valid sync object created by evasglCreateSync
5820     * @param attribute   Which attribute to query, can be one of: @c EVAS_GL_SYNC_STATUS, @c EVAS_GL_SYNC_TYPE or @c EVAS_GL_SYNC_CONDITION
5821     * @param value       Return value or the query, see @ref evasgl_sync_values "sync object".
5822     *
5823     * @note Requires the extension @c EGL_KHR_fence_sync, similar to eglGetSyncAttribKHR.
5824     *
5825     * @return @c EINA_TRUE in case of success, or
5826     *         @c EINA_FALSE in case of failure (in which case evas_gl_error_get() should return an error code)
5827     * @since 1.12
5828     */
5829    Eina_Bool    (*evasglGetSyncAttrib) (Evas_GL *evas_gl, EvasGLSync sync, int attribute, int *value);
5830 
5831    /**
5832     * @anchor evasglWaitSync
5833     * @brief Wait on an EvasGLSync without blocking, see @c EGL_KHR_wait_sync for more information
5834     *
5835     * @param evas_gl     The current Evas_GL connection
5836     * @param sync        A valid sync object created by evasglCreateSync
5837     * @param flags       Must be 0
5838     *
5839     * @note Requires the extension @c EGL_KHR_wait_sync, similar to eglWaitSyncKHR.
5840     *
5841     * @return @c EINA_TRUE in case of success, or
5842     *         @c EINA_FALSE in case of failure (in which case evas_gl_error_get() should return an error code)
5843     * @since 1.12
5844     */
5845    int          (*evasglWaitSync) (Evas_GL *evas_gl, EvasGLSync sync, int flags);
5846    /** @} */
5847 
5848    // ---------------------------------------------------------------------- //
5849    /* Evas_GL_API version 3: */
5850 
5851    /**
5852     * @name Evas GL Wayland functions
5853     *
5854     * Evas_GL_API version 3 or higher.
5855     *
5856     * @since 1.13
5857     * @{ */
5858    /**
5859     * @anchor evasglBindWaylandDisplay
5860     * @brief Requires the extension @c EGL_WL_bind_wayland_display, similar to eglBindWaylandDisplayWL.
5861     */
5862    Eina_Bool    (*evasglBindWaylandDisplay) (Evas_GL *evas_gl, void *wl_display);
5863    /**
5864     * @anchor evasglUnbindWaylandDisplay
5865     * @brief Requires the extension @c EGL_WL_bind_wayland_display, similar to eglUnbindWaylandDisplayWL.
5866     */
5867    Eina_Bool    (*evasglUnbindWaylandDisplay) (Evas_GL *evas_gl, void *wl_display);
5868    /**
5869     * @anchor evasglQueryWaylandBuffer
5870     * @brief Requires the extension @c EGL_WL_bind_wayland_display, similar to eglQueryWaylandBufferWL.
5871     */
5872    Eina_Bool    (*evasglQueryWaylandBuffer) (Evas_GL *evas_gl, void *buffer, int attribute, int *value);
5873    /** @} */
5874 
5875    // ---------------------------------------------------------------------- //
5876    /**
5877     * @anchor gles3
5878     * @name OpenGL-ES 3.0.
5879     *
5880     * Evas_GL_API version 4.
5881     *
5882     * The following functions are supported in all OpenGL-ES 3.0 contexts.
5883     * @{
5884     */
5885    /* This defines shows that Evas_GL_API supports GLES3 APIs */
5886 #define EVAS_GL_GLES3 1
5887     void         (*glBeginQuery) (GLenum target, GLuint id);
5888     void         (*glBeginTransformFeedback) (GLenum primitiveMode);
5889     void         (*glBindBufferBase) (GLenum target, GLuint index, GLuint buffer);
5890     void         (*glBindBufferRange) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
5891     void         (*glBindSampler) (GLuint unit, GLuint sampler);
5892     void         (*glBindTransformFeedback) (GLenum target, GLuint id);
5893     void         (*glBindVertexArray) (GLuint array);
5894     void         (*glBlitFramebuffer) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
5895     void         (*glClearBufferfi) (GLenum buffer, GLint drawBuffer, GLfloat depth, GLint stencil);
5896     void         (*glClearBufferfv) (GLenum buffer, GLint drawBuffer, const GLfloat * value);
5897     void         (*glClearBufferiv) (GLenum buffer, GLint drawBuffer, const GLint * value);
5898     void         (*glClearBufferuiv) (GLenum buffer, GLint drawBuffer, const GLuint * value);
5899     GLenum       (*glClientWaitSync) (GLsync sync, GLbitfield flags, uint64_t timeout);
5900     void         (*glCompressedTexImage3D) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid * data);
5901     void         (*glCompressedTexSubImage3D) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid * data);
5902     void         (*glCopyBufferSubData) (GLenum readtarget, GLenum writetarget, GLintptr readoffset, GLintptr writeoffset, GLsizeiptr size);
5903     void         (*glCopyTexSubImage3D) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
5904     void         (*glDeleteQueries) (GLsizei n, const GLuint * ids);
5905     void         (*glDeleteSamplers) (GLsizei n, const GLuint * samplers);
5906     void         (*glDeleteSync) (GLsync sync);
5907     void         (*glDeleteTransformFeedbacks) (GLsizei n, const GLuint *ids);
5908     void         (*glDeleteVertexArrays) (GLsizei n, const GLuint *arrays);
5909     void         (*glDrawArraysInstanced) (GLenum mode, GLint first, GLsizei count, GLsizei primcount);
5910     void         (*glDrawBuffers) (GLsizei n, const GLenum *bufs);
5911     void         (*glDrawElementsInstanced) (GLenum mode, GLsizei count, GLenum type, const void * indices, GLsizei primcount);
5912     void         (*glDrawRangeElements) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid * indices);
5913     void         (*glEndQuery) (GLenum target);
5914     void         (*glEndTransformFeedback) (void);
5915     GLsync       (*glFenceSync) (GLenum condition, GLbitfield flags);
5916     GLsync       (*glFlushMappedBufferRange) (GLenum target, GLintptr offset, GLsizeiptr length);
5917     void         (*glFramebufferTextureLayer) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
5918     void         (*glGenQueries) (GLsizei n, GLuint * ids);
5919     void         (*glGenSamplers) (GLsizei n, GLuint *samplers);
5920     void         (*glGenTransformFeedbacks) (GLsizei n, GLuint *ids);
5921     void         (*glGenVertexArrays) (GLsizei n, GLuint *arrays);
5922     void         (*glGetActiveUniformBlockiv) (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params);
5923     void         (*glGetActiveUniformBlockName) (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName);
5924     void         (*glGetActiveUniformsiv) (GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params);
5925     void         (*glGetBufferParameteri64v) (GLenum target, GLenum value, int64_t * data);
5926     void         (*glGetBufferPointerv) (GLenum target, GLenum pname, GLvoid ** params);
5927     GLint        (*glGetFragDataLocation) (GLuint program, const char * name);
5928     void         (*glGetInteger64i_v) (GLenum target, GLuint index, int64_t * data);
5929     void         (*glGetInteger64v) (GLenum pname, int64_t * data);
5930     void         (*glGetIntegeri_v) (GLenum target, GLuint index, GLint * data);
5931     void         (*glGetInternalformativ) (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint *params);
5932     void         (*glGetProgramBinary) (GLuint program, GLsizei bufsize, GLsizei *length, GLenum *binaryFormat, void *binary);
5933     void         (*glGetQueryiv) (GLenum target, GLenum pname, GLint * params);
5934     void         (*glGetQueryObjectuiv) (GLuint id, GLenum pname, GLuint * params);
5935     void         (*glGetSamplerParameterfv) (GLuint sampler, GLenum pname, GLfloat * params);
5936     void         (*glGetSamplerParameteriv) (GLuint sampler, GLenum pname, GLint * params);
5937     const GLubyte* (*glGetStringi) (GLenum name, GLuint index);
5938     void         (*glGetSynciv) (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values);
5939     void         (*glGetTransformFeedbackVarying) (GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLsizei * size, GLenum * type, char * name);
5940     GLuint       (*glGetUniformBlockIndex) (GLuint program, const GLchar *uniformBlockName);
5941     void         (*glGetUniformIndices) (GLuint program, GLsizei uniformCount, const GLchar *const*uniformNames, GLuint *uniformIndices);
5942     void         (*glGetUniformuiv) (GLuint program, GLint location, GLuint* params);
5943     void         (*glGetVertexAttribIiv) (GLuint index, GLenum pname, GLint *params);
5944     void         (*glGetVertexAttribIuiv) (GLuint index, GLenum pname, GLuint *params);
5945     void         (*glInvalidateFramebuffer) (GLenum target, GLsizei numAttachments, const GLenum *attachments);
5946     void         (*glInvalidateSubFramebuffer) (GLenum target, GLsizei numAttachments, const GLenum *attachments, GLint x, GLint y, GLsizei width, GLsizei height);
5947     GLboolean    (*glIsQuery) (GLuint id);
5948     GLboolean    (*glIsSampler) (GLuint id);
5949     GLboolean    (*glIsSync) (GLsync sync);
5950     GLboolean    (*glIsTransformFeedback) (GLuint id);
5951     GLboolean    (*glIsVertexArray) (GLuint array);
5952     void *       (*glMapBufferRange) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
5953     void         (*glPauseTransformFeedback) (void);
5954     void         (*glProgramBinary) (GLuint program, GLenum binaryFormat, const void *binary, GLsizei length);
5955     void         (*glProgramParameteri) (GLuint program, GLenum pname, GLint value);
5956     void         (*glReadBuffer) (GLenum src);
5957     void         (*glRenderbufferStorageMultisample) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
5958     void         (*glResumeTransformFeedback) (void);
5959     void         (*glSamplerParameterf) (GLuint sampler, GLenum pname, GLfloat param);
5960     void         (*glSamplerParameterfv) (GLuint sampler, GLenum pname, const GLfloat * params);
5961     void         (*glSamplerParameteri) (GLuint sampler, GLenum pname, GLint param);
5962     void         (*glSamplerParameteriv) (GLuint sampler, GLenum pname, const GLint * params);
5963     void         (*glTexImage3D) (GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid * data);
5964     void         (*glTexStorage2D) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
5965     void         (*glTexStorage3D) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
5966     void         (*glTexSubImage3D) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid * data);
5967     void         (*glTransformFeedbackVaryings) (GLuint program, GLsizei count, const GLchar *const* varyings, GLenum bufferMode);
5968     void         (*glUniform1ui) (GLint location, GLuint v0);
5969     void         (*glUniform1uiv) (GLint location, GLsizei count, const GLuint *value);
5970     void         (*glUniform2ui) (GLint location, GLuint v0, GLuint v1);
5971     void         (*glUniform2uiv) (GLint location, GLsizei count, const GLuint *value);
5972     void         (*glUniform3ui) (GLint location, GLuint v0, GLuint v1, GLuint v2);
5973     void         (*glUniform3uiv) (GLint location, GLsizei count, const GLuint *value);
5974     void         (*glUniform4ui) (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
5975     void         (*glUniform4uiv) (GLint location, GLsizei count, const GLuint *value);
5976     void         (*glUniformBlockBinding) (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding);
5977     void         (*glUniformMatrix2x3fv) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
5978     void         (*glUniformMatrix3x2fv) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
5979     void         (*glUniformMatrix2x4fv) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
5980     void         (*glUniformMatrix4x2fv) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
5981     void         (*glUniformMatrix3x4fv) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
5982     void         (*glUniformMatrix4x3fv) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
5983     GLboolean    (*glUnmapBuffer) (GLenum target);
5984     void         (*glVertexAttribDivisor) (GLuint index, GLuint divisor);
5985     void         (*glVertexAttribI4i) (GLuint index, GLint v0, GLint v1, GLint v2, GLint v3);
5986     void         (*glVertexAttribI4iv) (GLuint index, const GLint *v);
5987     void         (*glVertexAttribI4ui) (GLuint index, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
5988     void         (*glVertexAttribI4uiv) (GLuint index, const GLuint *v);
5989     void         (*glVertexAttribIPointer) (GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
5990     void         (*glWaitSync) (GLsync sync, GLbitfield flags, uint64_t timeout);
5991    /** @} */
5992    /**
5993     * @anchor gles3_1
5994     * @name OpenGL-ES 3.1.
5995     *
5996     * Evas_GL_API version 5.
5997     *
5998     * The following functions are supported in all OpenGL-ES 3.1 contexts.
5999     * @{
6000     */
6001    /* This defines shows that Evas_GL_API supports GLES3.1 APIs */
6002     void         (*glDispatchCompute) (GLuint num_groups_x, GLuint num_groups_y, GLuint num_groups_z);
6003     void         (*glDispatchComputeIndirect) (GLintptr indirect);
6004     void         (*glDrawArraysIndirect) (GLenum mode, const void *indirect);
6005     void         (*glDrawElementsIndirect) (GLenum mode, GLenum type, const void *indirect);
6006     void         (*glFramebufferParameteri) (GLenum target, GLenum pname, GLint param);
6007     void         (*glGetFramebufferParameteriv) (GLenum target, GLenum pname, GLint *params);
6008     void         (*glGetProgramInterfaceiv) (GLuint program, GLenum programInterface, GLenum pname, GLint *params);
6009     GLuint       (*glGetProgramResourceIndex) (GLuint program, GLenum programInterface, const GLchar *name);
6010     void         (*glGetProgramResourceName) (GLuint program, GLenum programInterface, GLuint index, GLsizei bufSize, GLsizei *length, GLchar *name);
6011     void         (*glGetProgramResourceiv) (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei bufSize, GLsizei *length, GLint *params);
6012     GLint        (*glGetProgramResourceLocation) (GLuint program, GLenum programInterface, const GLchar *name);
6013     void         (*glUseProgramStages) (GLuint pipeline, GLbitfield stages, GLuint program);
6014     void         (*glActiveShaderProgram) (GLuint pipeline, GLuint program);
6015     GLuint       (*glCreateShaderProgramv) (GLenum type, GLsizei count, const GLchar *const*strings);
6016     void         (*glBindProgramPipeline) (GLuint pipeline);
6017     void         (*glDeleteProgramPipelines) (GLsizei n, const GLuint *pipelines);
6018     void         (*glGenProgramPipelines) (GLsizei n, GLuint *pipelines);
6019     GLboolean    (*glIsProgramPipeline) (GLuint pipeline);
6020     void         (*glGetProgramPipelineiv) (GLuint pipeline, GLenum pname, GLint *params);
6021     void         (*glProgramUniform1i) (GLuint program, GLint location, GLint v0);
6022     void         (*glProgramUniform2i) (GLuint program, GLint location, GLint v0, GLint v1);
6023     void         (*glProgramUniform3i) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2);
6024     void         (*glProgramUniform4i) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
6025     void         (*glProgramUniform1ui) (GLuint program, GLint location, GLuint v0);
6026     void         (*glProgramUniform2ui) (GLuint program, GLint location, GLuint v0, GLuint v1);
6027     void         (*glProgramUniform3ui) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2);
6028     void         (*glProgramUniform4ui) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
6029     void         (*glProgramUniform1f) (GLuint program, GLint location, GLfloat v0);
6030     void         (*glProgramUniform2f) (GLuint program, GLint location, GLfloat v0, GLfloat v1);
6031     void         (*glProgramUniform3f) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
6032     void         (*glProgramUniform4f) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
6033     void         (*glProgramUniform1iv) (GLuint program, GLint location, GLsizei count, const GLint *value);
6034     void         (*glProgramUniform2iv) (GLuint program, GLint location, GLsizei count, const GLint *value);
6035     void         (*glProgramUniform3iv) (GLuint program, GLint location, GLsizei count, const GLint *value);
6036     void         (*glProgramUniform4iv) (GLuint program, GLint location, GLsizei count, const GLint *value);
6037     void         (*glProgramUniform1uiv) (GLuint program, GLint location, GLsizei count, const GLuint *value);
6038     void         (*glProgramUniform2uiv) (GLuint program, GLint location, GLsizei count, const GLuint *value);
6039     void         (*glProgramUniform3uiv) (GLuint program, GLint location, GLsizei count, const GLuint *value);
6040     void         (*glProgramUniform4uiv) (GLuint program, GLint location, GLsizei count, const GLuint *value);
6041     void         (*glProgramUniform1fv) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
6042     void         (*glProgramUniform2fv) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
6043     void         (*glProgramUniform3fv) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
6044     void         (*glProgramUniform4fv) (GLuint program, GLint location, GLsizei count, const GLfloat *value);
6045     void         (*glProgramUniformMatrix2fv) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
6046     void         (*glProgramUniformMatrix3fv) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
6047     void         (*glProgramUniformMatrix4fv) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
6048     void         (*glProgramUniformMatrix2x3fv) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
6049     void         (*glProgramUniformMatrix3x2fv) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
6050     void         (*glProgramUniformMatrix2x4fv) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
6051     void         (*glProgramUniformMatrix4x2fv) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
6052     void         (*glProgramUniformMatrix3x4fv) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
6053     void         (*glProgramUniformMatrix4x3fv) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
6054     void         (*glValidateProgramPipeline) (GLuint pipeline);
6055     void         (*glGetProgramPipelineInfoLog) (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
6056     void         (*glBindImageTexture) (GLuint unit, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLenum format);
6057     void         (*glGetBooleani_v) (GLenum target, GLuint index, GLboolean *data);
6058     void         (*glMemoryBarrier) (GLbitfield barriers);
6059     void         (*glMemoryBarrierByRegion) (GLbitfield barriers);
6060     void         (*glTexStorage2DMultisample) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
6061     void         (*glGetMultisamplefv) (GLenum pname, GLuint index, GLfloat *val);
6062     void         (*glSampleMaski) (GLuint maskNumber, GLbitfield mask);
6063     void         (*glGetTexLevelParameteriv) (GLenum target, GLint level, GLenum pname, GLint *params);
6064     void         (*glGetTexLevelParameterfv) (GLenum target, GLint level, GLenum pname, GLfloat *params);
6065     void         (*glBindVertexBuffer) (GLuint bindingindex, GLuint buffer, GLintptr offset, GLsizei stride);
6066     void         (*glVertexAttribFormat) (GLuint attribindex, GLint size, GLenum type, GLboolean normalized, GLuint relativeoffset);
6067     void         (*glVertexAttribIFormat) (GLuint attribindex, GLint size, GLenum type, GLuint relativeoffset);
6068     void         (*glVertexAttribBinding) (GLuint attribindex, GLuint bindingindex);
6069     void         (*glVertexBindingDivisor) (GLuint bindingindex, GLuint divisor);
6070    /** @} */
6071 
6072    /**
6073     * @anchor gles3_2
6074     * @name OpenGL-ES 3.2.
6075     *
6076     * Evas_GL_API version 6.
6077     *
6078     * The following functions are supported in all OpenGL-ES 3.2 contexts.
6079     * @{
6080     */
6081    /* This defines shows that Evas_GL_API supports GLES3.2 APIs */
6082     void         (*glBlendBarrier) (void);
6083     void         (*glCopyImageSubData) (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth);
6084     void         (*glDebugMessageControl) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);
6085     void         (*glDebugMessageInsert) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf);
6086     void         (*glDebugMessageCallback) (GLDEBUGPROC callback, const void *userParam);
6087     GLuint       (*glGetDebugMessageLog) (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog);
6088     void         (*glPushDebugGroup) (GLenum source, GLuint id, GLsizei length, const GLchar *message);
6089     void         (*glPopDebugGroup) (void);
6090     void         (*glObjectLabel) (GLenum identifier, GLuint name, GLsizei length, const GLchar *label);
6091     void         (*glGetObjectLabel) (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label);
6092     void         (*glObjectPtrLabel) (const void *ptr, GLsizei length, const GLchar *label);
6093     void         (*glGetObjectPtrLabel) (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label);
6094     //void (*glGetPointerv) (GLenum pname, void **params);
6095     void         (*glEnablei) (GLenum target, GLuint index);
6096     void         (*glDisablei) (GLenum target, GLuint index);
6097     void         (*glBlendEquationi) (GLuint buf, GLenum mode);
6098     void         (*glBlendEquationSeparatei) (GLuint buf, GLenum modeRGB, GLenum modeAlpha);
6099     void         (*glBlendFunci) (GLuint buf, GLenum src, GLenum dst);
6100     void         (*glBlendFuncSeparatei) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
6101     void         (*glColorMaski) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
6102     GLboolean    (*glIsEnabledi) (GLenum target, GLuint index);
6103     void         (*glDrawElementsBaseVertex) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex);
6104     void         (*glDrawRangeElementsBaseVertex) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex);
6105     void         (*glDrawElementsInstancedBaseVertex) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex);
6106     void         (*glFramebufferTexture) (GLenum target, GLenum attachment, GLuint texture, GLint level);
6107     void         (*glPrimitiveBoundingBox) (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW);
6108     GLenum       (*glGetGraphicsResetStatus) (void);
6109     void         (*glReadnPixels) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data);
6110     void         (*glGetnUniformfv) (GLuint program, GLint location, GLsizei bufSize, GLfloat *params);
6111     void         (*glGetnUniformiv) (GLuint program, GLint location, GLsizei bufSize, GLint *params);
6112     void         (*glGetnUniformuiv) (GLuint program, GLint location, GLsizei bufSize, GLuint *params);
6113     void         (*glMinSampleShading) (GLfloat value);
6114     void         (*glPatchParameteri) (GLenum pname, GLint value);
6115     void         (*glTexParameterIiv) (GLenum target, GLenum pname, const GLint *params);
6116     void         (*glTexParameterIuiv) (GLenum target, GLenum pname, const GLuint *params);
6117     void         (*glGetTexParameterIiv) (GLenum target, GLenum pname, GLint *params);
6118     void         (*glGetTexParameterIuiv) (GLenum target, GLenum pname, GLuint *params);
6119     void         (*glSamplerParameterIiv) (GLuint sampler, GLenum pname, const GLint *param);
6120     void         (*glSamplerParameterIuiv) (GLuint sampler, GLenum pname, const GLuint *param);
6121     void         (*glGetSamplerParameterIiv) (GLuint sampler, GLenum pname, GLint *params);
6122     void         (*glGetSamplerParameterIuiv) (GLuint sampler, GLenum pname, GLuint *params);
6123     void         (*glTexBuffer) (GLenum target, GLenum internalformat, GLuint buffer);
6124     void         (*glTexBufferRange) (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size);
6125     void         (*glTexStorage3DMultisample) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
6126 
6127    /** @} */
6128 
6129    /* Future calls will be added down here for expansion, when adding
6130     * new APIs here, please bump the struct version number (together with
6131     * the EFL version bump).
6132     */
6133 };
6134 
6135 /**
6136  * @}
6137  */
6138 
6139 #ifdef __cplusplus
6140 }
6141 #endif
6142 
6143 #undef EAPI
6144 #define EAPI
6145 
6146 #endif
6147