1af69d88dSmrg/*
2af69d88dSmrg * Copyright © 2012 Intel Corporation
3af69d88dSmrg *
4af69d88dSmrg * Permission is hereby granted, free of charge, to any person obtaining a
5af69d88dSmrg * copy of this software and associated documentation files (the "Software"),
6af69d88dSmrg * to deal in the Software without restriction, including without limitation
7af69d88dSmrg * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8af69d88dSmrg * and/or sell copies of the Software, and to permit persons to whom the
9af69d88dSmrg * Software is furnished to do so, subject to the following conditions:
10af69d88dSmrg *
11af69d88dSmrg * The above copyright notice and this permission notice (including the next
12af69d88dSmrg * paragraph) shall be included in all copies or substantial portions of the
13af69d88dSmrg * Software.
14af69d88dSmrg *
15af69d88dSmrg * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16af69d88dSmrg * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17af69d88dSmrg * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
18af69d88dSmrg * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19af69d88dSmrg * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
20af69d88dSmrg * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
21af69d88dSmrg * DEALINGS IN THE SOFTWARE.
22af69d88dSmrg */
23af69d88dSmrg
24af69d88dSmrg/**
25af69d88dSmrg * \name dispatch_sanity.cpp
26af69d88dSmrg *
27af69d88dSmrg * Verify that only set of functions that should be available in a particular
28af69d88dSmrg * API are available in that API.
29af69d88dSmrg *
30af69d88dSmrg * The list of expected functions originally came from the functions set by
31af69d88dSmrg * api_exec_es2.c.  This file no longer exists in Mesa (but api_exec_es1.c was
32af69d88dSmrg * still generated at the time this test was written).  It was the generated
33af69d88dSmrg * file that configured the dispatch table for ES2 contexts.  This test
34af69d88dSmrg * verifies that all of the functions set by the old api_exec_es2.c (with the
35af69d88dSmrg * recent addition of VAO functions) are set in the dispatch table and
36af69d88dSmrg * everything else is a NOP.
37af69d88dSmrg *
38af69d88dSmrg * When adding extensions that add new functions, this test will need to be
39af69d88dSmrg * modified to expect dispatch functions for the new extension functions.
40af69d88dSmrg */
41af69d88dSmrg
42af69d88dSmrg#include <gtest/gtest.h>
43af69d88dSmrg
44af69d88dSmrg#include "GL/gl.h"
45af69d88dSmrg#include "GL/glext.h"
467ec681f3Smrg#include "util/compiler.h"
47af69d88dSmrg#include "main/api_exec.h"
48af69d88dSmrg#include "main/context.h"
49af69d88dSmrg#include "main/remap.h"
50af69d88dSmrg#include "main/vtxfmt.h"
51af69d88dSmrg#include "glapi/glapi.h"
52af69d88dSmrg#include "drivers/common/driverfuncs.h"
53af69d88dSmrg
54af69d88dSmrg#include "swrast/swrast.h"
55af69d88dSmrg#include "vbo/vbo.h"
56af69d88dSmrg#include "tnl/tnl.h"
57af69d88dSmrg#include "swrast_setup/swrast_setup.h"
58af69d88dSmrg
59af69d88dSmrg#ifndef GLAPIENTRYP
60af69d88dSmrg#define GLAPIENTRYP GL_APIENTRYP
61af69d88dSmrg#endif
62af69d88dSmrg
63af69d88dSmrg#include "main/dispatch.h"
64af69d88dSmrg
65af69d88dSmrgstruct function {
66af69d88dSmrg   const char *name;
67af69d88dSmrg   unsigned int Version;
68af69d88dSmrg   int offset;
69af69d88dSmrg};
70af69d88dSmrg
7101e04c3fSmrgextern const struct function common_desktop_functions_possible[];
7201e04c3fSmrgextern const struct function gl_compatibility_functions_possible[];
73af69d88dSmrgextern const struct function gl_core_functions_possible[];
74af69d88dSmrgextern const struct function gles11_functions_possible[];
75af69d88dSmrgextern const struct function gles2_functions_possible[];
76af69d88dSmrgextern const struct function gles3_functions_possible[];
7701e04c3fSmrgextern const struct function gles31_functions_possible[];
78af69d88dSmrg
79af69d88dSmrgclass DispatchSanity_test : public ::testing::Test {
80af69d88dSmrgpublic:
81af69d88dSmrg   virtual void SetUp();
827ec681f3Smrg   virtual void TearDown();
83af69d88dSmrg   void SetUpCtx(gl_api api, unsigned int version);
847ec681f3Smrg   void TearDownCtx();
85af69d88dSmrg
86af69d88dSmrg   struct gl_config visual;
87af69d88dSmrg   struct dd_function_table driver_functions;
88af69d88dSmrg   struct gl_context share_list;
89af69d88dSmrg   struct gl_context ctx;
9001e04c3fSmrg   _glapi_proc *nop_table;
91af69d88dSmrg};
92af69d88dSmrg
93af69d88dSmrgvoid
94af69d88dSmrgDispatchSanity_test::SetUp()
95af69d88dSmrg{
96af69d88dSmrg   memset(&visual, 0, sizeof(visual));
97af69d88dSmrg   memset(&driver_functions, 0, sizeof(driver_functions));
98af69d88dSmrg   memset(&share_list, 0, sizeof(share_list));
99af69d88dSmrg   memset(&ctx, 0, sizeof(ctx));
100af69d88dSmrg
101af69d88dSmrg   _mesa_init_driver_functions(&driver_functions);
10201e04c3fSmrg
10301e04c3fSmrg   const unsigned size = _glapi_get_dispatch_table_size();
10401e04c3fSmrg   nop_table = (_glapi_proc *) _mesa_new_nop_table(size);
105af69d88dSmrg}
106af69d88dSmrg
1077ec681f3Smrgvoid
1087ec681f3SmrgDispatchSanity_test::TearDown()
1097ec681f3Smrg{
1107ec681f3Smrg   free(nop_table);
1117ec681f3Smrg}
1127ec681f3Smrg
113af69d88dSmrgvoid
114af69d88dSmrgDispatchSanity_test::SetUpCtx(gl_api api, unsigned int version)
115af69d88dSmrg{
116af69d88dSmrg   _mesa_initialize_context(&ctx,
117af69d88dSmrg                            api,
118af69d88dSmrg                            &visual,
119af69d88dSmrg                            NULL, // share_list
120af69d88dSmrg                            &driver_functions);
1217ec681f3Smrg   _vbo_CreateContext(&ctx, false);
122af69d88dSmrg
12301e04c3fSmrg   _mesa_override_extensions(&ctx);
124af69d88dSmrg   ctx.Version = version;
125af69d88dSmrg
126af69d88dSmrg   _mesa_initialize_dispatch_tables(&ctx);
127af69d88dSmrg   _mesa_initialize_vbo_vtxfmt(&ctx);
128af69d88dSmrg}
129af69d88dSmrg
1307ec681f3Smrgvoid
1317ec681f3SmrgDispatchSanity_test::TearDownCtx()
1327ec681f3Smrg{
1337ec681f3Smrg   _vbo_DestroyContext(&ctx);
1347ec681f3Smrg   _mesa_free_context_data(&ctx, false);
1357ec681f3Smrg}
1367ec681f3Smrg
137af69d88dSmrgstatic const char *
138af69d88dSmrgoffset_to_proc_name_safe(unsigned offset)
139af69d88dSmrg{
140af69d88dSmrg   const char *name = _glapi_get_proc_name(offset);
141af69d88dSmrg   return name ? name : "???";
142af69d88dSmrg}
143af69d88dSmrg
144af69d88dSmrg/* Scan through the dispatch table and check that all the functions in
14501e04c3fSmrg * _glapi_proc *table exist.
14601e04c3fSmrg */
147af69d88dSmrgstatic void
14801e04c3fSmrgvalidate_functions(struct gl_context *ctx, const struct function *function_table,
14901e04c3fSmrg                   const _glapi_proc *nop_table)
150af69d88dSmrg{
151af69d88dSmrg   _glapi_proc *table = (_glapi_proc *) ctx->Exec;
152af69d88dSmrg
153af69d88dSmrg   for (unsigned i = 0; function_table[i].name != NULL; i++) {
15401e04c3fSmrg      /* The context version is >= the GL version where the function was
15501e04c3fSmrg       * introduced. Therefore, the function cannot be set to the nop
15601e04c3fSmrg       * function.
157af69d88dSmrg       */
15801e04c3fSmrg      const bool cant_be_nop = ctx->Version >= function_table[i].Version;
159af69d88dSmrg
160af69d88dSmrg      const int offset = (function_table[i].offset != -1)
161af69d88dSmrg         ? function_table[i].offset
162af69d88dSmrg         : _glapi_get_proc_offset(function_table[i].name);
163af69d88dSmrg
164af69d88dSmrg      ASSERT_NE(-1, offset)
165af69d88dSmrg         << "Function: " << function_table[i].name;
166af69d88dSmrg      ASSERT_EQ(offset,
167af69d88dSmrg                _glapi_get_proc_offset(function_table[i].name))
168af69d88dSmrg         << "Function: " << function_table[i].name;
169af69d88dSmrg      if (cant_be_nop) {
17001e04c3fSmrg         EXPECT_NE(nop_table[offset], table[offset])
171af69d88dSmrg            << "Function: " << function_table[i].name
172af69d88dSmrg            << " at offset " << offset;
173af69d88dSmrg      }
174af69d88dSmrg
17501e04c3fSmrg      table[offset] = nop_table[offset];
176af69d88dSmrg   }
177af69d88dSmrg}
178af69d88dSmrg
179af69d88dSmrg/* Scan through the table and ensure that there is nothing except
18001e04c3fSmrg * nop functions (as set by validate_functions().
18101e04c3fSmrg */
182af69d88dSmrgstatic void
18301e04c3fSmrgvalidate_nops(struct gl_context *ctx, const _glapi_proc *nop_table)
184af69d88dSmrg{
185af69d88dSmrg   _glapi_proc *table = (_glapi_proc *) ctx->Exec;
186af69d88dSmrg
187af69d88dSmrg   const unsigned size = _glapi_get_dispatch_table_size();
188af69d88dSmrg   for (unsigned i = 0; i < size; i++) {
18901e04c3fSmrg      EXPECT_EQ(nop_table[i], table[i])
190af69d88dSmrg         << "i = " << i << " (" << offset_to_proc_name_safe(i) << ")";
191af69d88dSmrg   }
192af69d88dSmrg}
193af69d88dSmrg
194af69d88dSmrgTEST_F(DispatchSanity_test, GL31_CORE)
195af69d88dSmrg{
196af69d88dSmrg   SetUpCtx(API_OPENGL_CORE, 31);
19701e04c3fSmrg   validate_functions(&ctx, common_desktop_functions_possible, nop_table);
19801e04c3fSmrg   validate_functions(&ctx, gl_core_functions_possible, nop_table);
19901e04c3fSmrg   validate_nops(&ctx, nop_table);
2007ec681f3Smrg   TearDownCtx();
20101e04c3fSmrg}
20201e04c3fSmrg
20301e04c3fSmrgTEST_F(DispatchSanity_test, GL30)
20401e04c3fSmrg{
20501e04c3fSmrg   SetUpCtx(API_OPENGL_COMPAT, 30);
20601e04c3fSmrg   validate_functions(&ctx, common_desktop_functions_possible, nop_table);
20701e04c3fSmrg   validate_functions(&ctx, gl_compatibility_functions_possible, nop_table);
20801e04c3fSmrg   validate_nops(&ctx, nop_table);
2097ec681f3Smrg   TearDownCtx();
210af69d88dSmrg}
211af69d88dSmrg
212af69d88dSmrgTEST_F(DispatchSanity_test, GLES11)
213af69d88dSmrg{
214af69d88dSmrg   SetUpCtx(API_OPENGLES, 11);
21501e04c3fSmrg   validate_functions(&ctx, gles11_functions_possible, nop_table);
21601e04c3fSmrg   validate_nops(&ctx, nop_table);
2177ec681f3Smrg   TearDownCtx();
218af69d88dSmrg}
219af69d88dSmrg
220af69d88dSmrgTEST_F(DispatchSanity_test, GLES2)
221af69d88dSmrg{
222af69d88dSmrg   SetUpCtx(API_OPENGLES2, 20);
22301e04c3fSmrg   validate_functions(&ctx, gles2_functions_possible, nop_table);
22401e04c3fSmrg   validate_nops(&ctx, nop_table);
2257ec681f3Smrg   TearDownCtx();
226af69d88dSmrg}
227af69d88dSmrg
228af69d88dSmrgTEST_F(DispatchSanity_test, GLES3)
229af69d88dSmrg{
230af69d88dSmrg   SetUpCtx(API_OPENGLES2, 30);
23101e04c3fSmrg   validate_functions(&ctx, gles2_functions_possible, nop_table);
23201e04c3fSmrg   validate_functions(&ctx, gles3_functions_possible, nop_table);
23301e04c3fSmrg   validate_nops(&ctx, nop_table);
2347ec681f3Smrg   TearDownCtx();
235af69d88dSmrg}
236af69d88dSmrg
23701e04c3fSmrgTEST_F(DispatchSanity_test, GLES31)
23801e04c3fSmrg{
23901e04c3fSmrg   SetUpCtx(API_OPENGLES2, 31);
24001e04c3fSmrg   validate_functions(&ctx, gles2_functions_possible, nop_table);
24101e04c3fSmrg   validate_functions(&ctx, gles3_functions_possible, nop_table);
24201e04c3fSmrg   validate_functions(&ctx, gles31_functions_possible, nop_table);
24301e04c3fSmrg   validate_nops(&ctx, nop_table);
2447ec681f3Smrg   TearDownCtx();
24501e04c3fSmrg}
24601e04c3fSmrg
24701e04c3fSmrgconst struct function common_desktop_functions_possible[] = {
24801e04c3fSmrg   { "glBindRenderbufferEXT", 10, -1 },
24901e04c3fSmrg   { "glBindFramebufferEXT", 10, -1 },
250af69d88dSmrg   { "glCullFace", 10, -1 },
251af69d88dSmrg   { "glFrontFace", 10, -1 },
252af69d88dSmrg   { "glHint", 10, -1 },
253af69d88dSmrg   { "glLineWidth", 10, -1 },
254af69d88dSmrg   { "glPointSize", 10, -1 },
255af69d88dSmrg   { "glPolygonMode", 10, -1 },
256af69d88dSmrg   { "glScissor", 10, -1 },
257af69d88dSmrg   { "glTexParameterf", 10, -1 },
258af69d88dSmrg   { "glTexParameterfv", 10, -1 },
259af69d88dSmrg   { "glTexParameteri", 10, -1 },
260af69d88dSmrg   { "glTexParameteriv", 10, -1 },
26101e04c3fSmrg   { "glTexImage1D", 10, _gloffset_TexImage1D },
26201e04c3fSmrg   { "glTexImage2D", 10, _gloffset_TexImage2D },
263af69d88dSmrg   { "glDrawBuffer", 10, -1 },
264af69d88dSmrg   { "glClear", 10, -1 },
265af69d88dSmrg   { "glClearColor", 10, -1 },
266af69d88dSmrg   { "glClearStencil", 10, -1 },
267af69d88dSmrg   { "glClearDepth", 10, -1 },
268af69d88dSmrg   { "glStencilMask", 10, -1 },
269af69d88dSmrg   { "glColorMask", 10, -1 },
270af69d88dSmrg   { "glDepthMask", 10, -1 },
271af69d88dSmrg   { "glDisable", 10, -1 },
272af69d88dSmrg   { "glEnable", 10, -1 },
273af69d88dSmrg   { "glFinish", 10, -1 },
274af69d88dSmrg   { "glFlush", 10, -1 },
275af69d88dSmrg   { "glBlendFunc", 10, -1 },
276af69d88dSmrg   { "glLogicOp", 10, -1 },
277af69d88dSmrg   { "glStencilFunc", 10, -1 },
278af69d88dSmrg   { "glStencilOp", 10, -1 },
279af69d88dSmrg   { "glDepthFunc", 10, -1 },
280af69d88dSmrg   { "glPixelStoref", 10, -1 },
281af69d88dSmrg   { "glPixelStorei", 10, -1 },
282af69d88dSmrg   { "glReadBuffer", 10, -1 },
283af69d88dSmrg   { "glReadPixels", 10, -1 },
284af69d88dSmrg   { "glGetBooleanv", 10, -1 },
285af69d88dSmrg   { "glGetDoublev", 10, -1 },
286af69d88dSmrg   { "glGetError", 10, -1 },
287af69d88dSmrg   { "glGetFloatv", 10, -1 },
288af69d88dSmrg   { "glGetIntegerv", 10, -1 },
289af69d88dSmrg   { "glGetString", 10, -1 },
290af69d88dSmrg   { "glGetTexImage", 10, -1 },
291af69d88dSmrg   { "glGetTexParameterfv", 10, -1 },
292af69d88dSmrg   { "glGetTexParameteriv", 10, -1 },
293af69d88dSmrg   { "glGetTexLevelParameterfv", 10, -1 },
294af69d88dSmrg   { "glGetTexLevelParameteriv", 10, -1 },
295af69d88dSmrg   { "glIsEnabled", 10, -1 },
296af69d88dSmrg   { "glDepthRange", 10, -1 },
297af69d88dSmrg   { "glViewport", 10, -1 },
298af69d88dSmrg
299af69d88dSmrg   /* GL 1.1 */
300af69d88dSmrg   { "glDrawArrays", 11, -1 },
301af69d88dSmrg   { "glDrawElements", 11, -1 },
302af69d88dSmrg   { "glGetPointerv", 11, -1 },
303af69d88dSmrg   { "glPolygonOffset", 11, -1 },
304af69d88dSmrg   { "glCopyTexImage1D", 11, -1 },
305af69d88dSmrg   { "glCopyTexImage2D", 11, -1 },
306af69d88dSmrg   { "glCopyTexSubImage1D", 11, -1 },
307af69d88dSmrg   { "glCopyTexSubImage2D", 11, -1 },
308af69d88dSmrg   { "glTexSubImage1D", 11, -1 },
309af69d88dSmrg   { "glTexSubImage2D", 11, -1 },
310af69d88dSmrg   { "glBindTexture", 11, -1 },
311af69d88dSmrg   { "glDeleteTextures", 11, -1 },
312af69d88dSmrg   { "glGenTextures", 11, -1 },
313af69d88dSmrg   { "glIsTexture", 11, -1 },
314af69d88dSmrg
315af69d88dSmrg   /* GL 1.2 */
316af69d88dSmrg   { "glBlendColor", 12, -1 },
317af69d88dSmrg   { "glBlendEquation", 12, -1 },
318af69d88dSmrg   { "glDrawRangeElements", 12, -1 },
319af69d88dSmrg   { "glTexImage3D", 12, -1 },
320af69d88dSmrg   { "glTexSubImage3D", 12, -1 },
321af69d88dSmrg   { "glCopyTexSubImage3D", 12, -1 },
322af69d88dSmrg
323af69d88dSmrg   /* GL 1.3 */
324af69d88dSmrg   { "glActiveTexture", 13, -1 },
325af69d88dSmrg   { "glSampleCoverage", 13, -1 },
326af69d88dSmrg   { "glCompressedTexImage3D", 13, -1 },
327af69d88dSmrg   { "glCompressedTexImage2D", 13, -1 },
328af69d88dSmrg   { "glCompressedTexImage1D", 13, -1 },
329af69d88dSmrg   { "glCompressedTexSubImage3D", 13, -1 },
330af69d88dSmrg   { "glCompressedTexSubImage2D", 13, -1 },
331af69d88dSmrg   { "glCompressedTexSubImage1D", 13, -1 },
332af69d88dSmrg   { "glGetCompressedTexImage", 13, -1 },
333af69d88dSmrg
334af69d88dSmrg   /* GL 1.4 */
335af69d88dSmrg   { "glBlendFuncSeparate", 14, -1 },
336af69d88dSmrg   { "glMultiDrawArrays", 14, -1 },
337af69d88dSmrg   { "glMultiDrawElements", 14, -1 },
338af69d88dSmrg   { "glPointParameterf", 14, -1 },
339af69d88dSmrg   { "glPointParameterfv", 14, -1 },
340af69d88dSmrg   { "glPointParameteri", 14, -1 },
341af69d88dSmrg   { "glPointParameteriv", 14, -1 },
342af69d88dSmrg
343af69d88dSmrg   /* GL 1.5 */
344af69d88dSmrg   { "glGenQueries", 15, -1 },
345af69d88dSmrg   { "glDeleteQueries", 15, -1 },
346af69d88dSmrg   { "glIsQuery", 15, -1 },
347af69d88dSmrg   { "glBeginQuery", 15, -1 },
348af69d88dSmrg   { "glEndQuery", 15, -1 },
349af69d88dSmrg   { "glGetQueryiv", 15, -1 },
350af69d88dSmrg   { "glGetQueryObjectiv", 15, -1 },
351af69d88dSmrg   { "glGetQueryObjectuiv", 15, -1 },
352af69d88dSmrg   { "glBindBuffer", 15, -1 },
353af69d88dSmrg   { "glDeleteBuffers", 15, -1 },
354af69d88dSmrg   { "glGenBuffers", 15, -1 },
355af69d88dSmrg   { "glIsBuffer", 15, -1 },
356af69d88dSmrg   { "glBufferData", 15, -1 },
357af69d88dSmrg   { "glBufferSubData", 15, -1 },
358af69d88dSmrg   { "glGetBufferSubData", 15, -1 },
359af69d88dSmrg   { "glMapBuffer", 15, -1 },
360af69d88dSmrg   { "glUnmapBuffer", 15, -1 },
361af69d88dSmrg   { "glGetBufferParameteriv", 15, -1 },
362af69d88dSmrg   { "glGetBufferPointerv", 15, -1 },
363af69d88dSmrg
364af69d88dSmrg   /* GL 2.0 */
365af69d88dSmrg   { "glBlendEquationSeparate", 20, -1 },
366af69d88dSmrg   { "glDrawBuffers", 20, -1 },
367af69d88dSmrg   { "glStencilOpSeparate", 20, -1 },
368af69d88dSmrg   { "glStencilFuncSeparate", 20, -1 },
369af69d88dSmrg   { "glStencilMaskSeparate", 20, -1 },
370af69d88dSmrg   { "glAttachShader", 20, -1 },
371af69d88dSmrg   { "glBindAttribLocation", 20, -1 },
372af69d88dSmrg   { "glCompileShader", 20, -1 },
373af69d88dSmrg   { "glCreateProgram", 20, -1 },
374af69d88dSmrg   { "glCreateShader", 20, -1 },
375af69d88dSmrg   { "glDeleteProgram", 20, -1 },
376af69d88dSmrg   { "glDeleteShader", 20, -1 },
377af69d88dSmrg   { "glDetachShader", 20, -1 },
378af69d88dSmrg   { "glDisableVertexAttribArray", 20, -1 },
379af69d88dSmrg   { "glEnableVertexAttribArray", 20, -1 },
380af69d88dSmrg   { "glGetActiveAttrib", 20, -1 },
381af69d88dSmrg   { "glGetActiveUniform", 20, -1 },
382af69d88dSmrg   { "glGetAttachedShaders", 20, -1 },
383af69d88dSmrg   { "glGetAttribLocation", 20, -1 },
384af69d88dSmrg   { "glGetProgramiv", 20, -1 },
385af69d88dSmrg   { "glGetProgramInfoLog", 20, -1 },
386af69d88dSmrg   { "glGetShaderiv", 20, -1 },
387af69d88dSmrg   { "glGetShaderInfoLog", 20, -1 },
388af69d88dSmrg   { "glGetShaderSource", 20, -1 },
389af69d88dSmrg   { "glGetUniformLocation", 20, -1 },
390af69d88dSmrg   { "glGetUniformfv", 20, -1 },
391af69d88dSmrg   { "glGetUniformiv", 20, -1 },
392af69d88dSmrg   { "glGetVertexAttribdv", 20, -1 },
393af69d88dSmrg   { "glGetVertexAttribfv", 20, -1 },
394af69d88dSmrg   { "glGetVertexAttribiv", 20, -1 },
395af69d88dSmrg   { "glGetVertexAttribPointerv", 20, -1 },
396af69d88dSmrg   { "glIsProgram", 20, -1 },
397af69d88dSmrg   { "glIsShader", 20, -1 },
398af69d88dSmrg   { "glLinkProgram", 20, -1 },
399af69d88dSmrg   { "glShaderSource", 20, -1 },
400af69d88dSmrg   { "glUseProgram", 20, -1 },
401af69d88dSmrg   { "glUniform1f", 20, -1 },
402af69d88dSmrg   { "glUniform2f", 20, -1 },
403af69d88dSmrg   { "glUniform3f", 20, -1 },
404af69d88dSmrg   { "glUniform4f", 20, -1 },
405af69d88dSmrg   { "glUniform1i", 20, -1 },
406af69d88dSmrg   { "glUniform2i", 20, -1 },
407af69d88dSmrg   { "glUniform3i", 20, -1 },
408af69d88dSmrg   { "glUniform4i", 20, -1 },
409af69d88dSmrg   { "glUniform1fv", 20, -1 },
410af69d88dSmrg   { "glUniform2fv", 20, -1 },
411af69d88dSmrg   { "glUniform3fv", 20, -1 },
412af69d88dSmrg   { "glUniform4fv", 20, -1 },
413af69d88dSmrg   { "glUniform1iv", 20, -1 },
414af69d88dSmrg   { "glUniform2iv", 20, -1 },
415af69d88dSmrg   { "glUniform3iv", 20, -1 },
416af69d88dSmrg   { "glUniform4iv", 20, -1 },
417af69d88dSmrg   { "glUniformMatrix2fv", 20, -1 },
418af69d88dSmrg   { "glUniformMatrix3fv", 20, -1 },
419af69d88dSmrg   { "glUniformMatrix4fv", 20, -1 },
420af69d88dSmrg   { "glValidateProgram", 20, -1 },
421af69d88dSmrg   { "glVertexAttrib1d", 20, -1 },
422af69d88dSmrg   { "glVertexAttrib1dv", 20, -1 },
423af69d88dSmrg   { "glVertexAttrib1f", 20, -1 },
424af69d88dSmrg   { "glVertexAttrib1fv", 20, -1 },
425af69d88dSmrg   { "glVertexAttrib1s", 20, -1 },
426af69d88dSmrg   { "glVertexAttrib1sv", 20, -1 },
427af69d88dSmrg   { "glVertexAttrib2d", 20, -1 },
428af69d88dSmrg   { "glVertexAttrib2dv", 20, -1 },
429af69d88dSmrg   { "glVertexAttrib2f", 20, -1 },
430af69d88dSmrg   { "glVertexAttrib2fv", 20, -1 },
431af69d88dSmrg   { "glVertexAttrib2s", 20, -1 },
432af69d88dSmrg   { "glVertexAttrib2sv", 20, -1 },
433af69d88dSmrg   { "glVertexAttrib3d", 20, -1 },
434af69d88dSmrg   { "glVertexAttrib3dv", 20, -1 },
435af69d88dSmrg   { "glVertexAttrib3f", 20, -1 },
436af69d88dSmrg   { "glVertexAttrib3fv", 20, -1 },
437af69d88dSmrg   { "glVertexAttrib3s", 20, -1 },
438af69d88dSmrg   { "glVertexAttrib3sv", 20, -1 },
439af69d88dSmrg   { "glVertexAttrib4Nbv", 20, -1 },
440af69d88dSmrg   { "glVertexAttrib4Niv", 20, -1 },
441af69d88dSmrg   { "glVertexAttrib4Nsv", 20, -1 },
442af69d88dSmrg   { "glVertexAttrib4Nub", 20, -1 },
443af69d88dSmrg   { "glVertexAttrib4Nubv", 20, -1 },
444af69d88dSmrg   { "glVertexAttrib4Nuiv", 20, -1 },
445af69d88dSmrg   { "glVertexAttrib4Nusv", 20, -1 },
446af69d88dSmrg   { "glVertexAttrib4bv", 20, -1 },
447af69d88dSmrg   { "glVertexAttrib4d", 20, -1 },
448af69d88dSmrg   { "glVertexAttrib4dv", 20, -1 },
449af69d88dSmrg   { "glVertexAttrib4f", 20, -1 },
450af69d88dSmrg   { "glVertexAttrib4fv", 20, -1 },
451af69d88dSmrg   { "glVertexAttrib4iv", 20, -1 },
452af69d88dSmrg   { "glVertexAttrib4s", 20, -1 },
453af69d88dSmrg   { "glVertexAttrib4sv", 20, -1 },
454af69d88dSmrg   { "glVertexAttrib4ubv", 20, -1 },
455af69d88dSmrg   { "glVertexAttrib4uiv", 20, -1 },
456af69d88dSmrg   { "glVertexAttrib4usv", 20, -1 },
457af69d88dSmrg   { "glVertexAttribPointer", 20, -1 },
458af69d88dSmrg
459af69d88dSmrg   /* GL 2.1 */
460af69d88dSmrg   { "glUniformMatrix2x3fv", 21, -1 },
461af69d88dSmrg   { "glUniformMatrix3x2fv", 21, -1 },
462af69d88dSmrg   { "glUniformMatrix2x4fv", 21, -1 },
463af69d88dSmrg   { "glUniformMatrix4x2fv", 21, -1 },
464af69d88dSmrg   { "glUniformMatrix3x4fv", 21, -1 },
465af69d88dSmrg   { "glUniformMatrix4x3fv", 21, -1 },
466af69d88dSmrg
467af69d88dSmrg   /* GL 3.0 */
468af69d88dSmrg   { "glColorMaski", 30, -1 },
469af69d88dSmrg   { "glGetBooleani_v", 30, -1 },
470af69d88dSmrg   { "glGetIntegeri_v", 30, -1 },
471af69d88dSmrg   { "glEnablei", 30, -1 },
472af69d88dSmrg   { "glDisablei", 30, -1 },
473af69d88dSmrg   { "glIsEnabledi", 30, -1 },
474af69d88dSmrg   { "glBeginTransformFeedback", 30, -1 },
475af69d88dSmrg   { "glEndTransformFeedback", 30, -1 },
476af69d88dSmrg   { "glBindBufferRange", 30, -1 },
477af69d88dSmrg   { "glBindBufferBase", 30, -1 },
478af69d88dSmrg   { "glTransformFeedbackVaryings", 30, -1 },
479af69d88dSmrg   { "glGetTransformFeedbackVarying", 30, -1 },
480af69d88dSmrg   { "glClampColor", 30, -1 },
481af69d88dSmrg   { "glBeginConditionalRender", 30, -1 },
482af69d88dSmrg   { "glEndConditionalRender", 30, -1 },
483af69d88dSmrg   { "glVertexAttribIPointer", 30, -1 },
484af69d88dSmrg   { "glGetVertexAttribIiv", 30, -1 },
485af69d88dSmrg   { "glGetVertexAttribIuiv", 30, -1 },
486af69d88dSmrg   { "glVertexAttribI1i", 30, -1 },
487af69d88dSmrg   { "glVertexAttribI2i", 30, -1 },
488af69d88dSmrg   { "glVertexAttribI3i", 30, -1 },
489af69d88dSmrg   { "glVertexAttribI4i", 30, -1 },
490af69d88dSmrg   { "glVertexAttribI1ui", 30, -1 },
491af69d88dSmrg   { "glVertexAttribI2ui", 30, -1 },
492af69d88dSmrg   { "glVertexAttribI3ui", 30, -1 },
493af69d88dSmrg   { "glVertexAttribI4ui", 30, -1 },
494af69d88dSmrg   { "glVertexAttribI1iv", 30, -1 },
495af69d88dSmrg   { "glVertexAttribI2iv", 30, -1 },
496af69d88dSmrg   { "glVertexAttribI3iv", 30, -1 },
497af69d88dSmrg   { "glVertexAttribI4iv", 30, -1 },
498af69d88dSmrg   { "glVertexAttribI1uiv", 30, -1 },
499af69d88dSmrg   { "glVertexAttribI2uiv", 30, -1 },
500af69d88dSmrg   { "glVertexAttribI3uiv", 30, -1 },
501af69d88dSmrg   { "glVertexAttribI4uiv", 30, -1 },
502af69d88dSmrg   { "glVertexAttribI4bv", 30, -1 },
503af69d88dSmrg   { "glVertexAttribI4sv", 30, -1 },
504af69d88dSmrg   { "glVertexAttribI4ubv", 30, -1 },
505af69d88dSmrg   { "glVertexAttribI4usv", 30, -1 },
506af69d88dSmrg   { "glGetUniformuiv", 30, -1 },
507af69d88dSmrg   { "glBindFragDataLocation", 30, -1 },
508af69d88dSmrg   { "glGetFragDataLocation", 30, -1 },
509af69d88dSmrg   { "glUniform1ui", 30, -1 },
510af69d88dSmrg   { "glUniform2ui", 30, -1 },
511af69d88dSmrg   { "glUniform3ui", 30, -1 },
512af69d88dSmrg   { "glUniform4ui", 30, -1 },
513af69d88dSmrg   { "glUniform1uiv", 30, -1 },
514af69d88dSmrg   { "glUniform2uiv", 30, -1 },
515af69d88dSmrg   { "glUniform3uiv", 30, -1 },
516af69d88dSmrg   { "glUniform4uiv", 30, -1 },
517af69d88dSmrg   { "glTexParameterIiv", 30, -1 },
518af69d88dSmrg   { "glTexParameterIuiv", 30, -1 },
519af69d88dSmrg   { "glGetTexParameterIiv", 30, -1 },
520af69d88dSmrg   { "glGetTexParameterIuiv", 30, -1 },
521af69d88dSmrg   { "glClearBufferiv", 30, -1 },
522af69d88dSmrg   { "glClearBufferuiv", 30, -1 },
523af69d88dSmrg   { "glClearBufferfv", 30, -1 },
524af69d88dSmrg   { "glClearBufferfi", 30, -1 },
525af69d88dSmrg   { "glGetStringi", 30, -1 },
526af69d88dSmrg
527af69d88dSmrg   /* GL 3.1 */
528af69d88dSmrg   { "glDrawArraysInstanced", 31, -1 },
529af69d88dSmrg   { "glDrawElementsInstanced", 31, -1 },
530af69d88dSmrg   { "glPrimitiveRestartIndex", 31, -1 },
53101e04c3fSmrg   { "glTexBuffer", 31, -1 },
53201e04c3fSmrg
53301e04c3fSmrg   /* GL_ARB_texture_buffer_range */
53401e04c3fSmrg   { "glTexBufferRange", 43, -1 },
535af69d88dSmrg
536af69d88dSmrg   /* GL_ARB_shader_objects */
537af69d88dSmrg   { "glDeleteObjectARB", 31, -1 },
538af69d88dSmrg   { "glGetHandleARB", 31, -1 },
539af69d88dSmrg   { "glDetachObjectARB", 31, -1 },
540af69d88dSmrg   { "glCreateShaderObjectARB", 31, -1 },
541af69d88dSmrg   { "glCreateProgramObjectARB", 31, -1 },
542af69d88dSmrg   { "glAttachObjectARB", 31, -1 },
543af69d88dSmrg   { "glGetObjectParameterfvARB", 31, -1 },
544af69d88dSmrg   { "glGetObjectParameterivARB", 31, -1 },
545af69d88dSmrg   { "glGetInfoLogARB", 31, -1 },
546af69d88dSmrg   { "glGetAttachedObjectsARB", 31, -1 },
547af69d88dSmrg
548af69d88dSmrg   /* GL_ARB_get_program_binary */
549af69d88dSmrg   { "glGetProgramBinary", 30, -1 },
550af69d88dSmrg   { "glProgramBinary", 30, -1 },
551af69d88dSmrg   { "glProgramParameteri", 30, -1 },
552af69d88dSmrg
553af69d88dSmrg   /* GL_EXT_transform_feedback */
554af69d88dSmrg   { "glBindBufferOffsetEXT", 31, -1 },
555af69d88dSmrg
556af69d88dSmrg   /* GL_IBM_multimode_draw_arrays */
557af69d88dSmrg   { "glMultiModeDrawArraysIBM", 31, -1 },
558af69d88dSmrg   { "glMultiModeDrawElementsIBM", 31, -1 },
559af69d88dSmrg
560af69d88dSmrg   /* GL_EXT_depth_bounds_test */
561af69d88dSmrg   { "glDepthBoundsEXT", 31, -1 },
562af69d88dSmrg
563af69d88dSmrg   /* GL_apple_object_purgeable */
564af69d88dSmrg   { "glObjectPurgeableAPPLE", 31, -1 },
565af69d88dSmrg   { "glObjectUnpurgeableAPPLE", 31, -1 },
566af69d88dSmrg   { "glGetObjectParameterivAPPLE", 31, -1 },
567af69d88dSmrg
568af69d88dSmrg   /* GL_ARB_instanced_arrays */
569af69d88dSmrg   { "glVertexAttribDivisorARB", 31, -1 },
5707ec681f3Smrg   { "glVertexArrayVertexAttribDivisorEXT", 31, -1 },
571af69d88dSmrg
572af69d88dSmrg   /* GL_NV_texture_barrier */
573af69d88dSmrg   { "glTextureBarrierNV", 31, -1 },
574af69d88dSmrg
575af69d88dSmrg   /* GL_EXT_texture_integer */
576af69d88dSmrg   { "glClearColorIiEXT", 31, -1 },
577af69d88dSmrg   { "glClearColorIuiEXT", 31, -1 },
578af69d88dSmrg
579af69d88dSmrg   /* GL_OES_EGL_image */
580af69d88dSmrg   { "glEGLImageTargetRenderbufferStorageOES", 31, -1 },
581af69d88dSmrg   { "glEGLImageTargetTexture2DOES", 31, -1 },
582af69d88dSmrg
5837ec681f3Smrg   /* EXT_EGL_image_storage */
5847ec681f3Smrg   { "glEGLImageTargetTexStorageEXT", 31, -1 },
5857ec681f3Smrg   { "glEGLImageTargetTextureStorageEXT", 31, -1 },
5867ec681f3Smrg
5877ec681f3Smrg   /* GL_NV_copy_image */
5887ec681f3Smrg   { "glCopyImageSubDataNV", 31, -1 },
5897ec681f3Smrg
590af69d88dSmrg   /* GL 3.2 */
591af69d88dSmrg   { "glGetInteger64i_v", 32, -1 },
592af69d88dSmrg   { "glGetBufferParameteri64v", 32, -1 },
593af69d88dSmrg   { "glFramebufferTexture", 32, -1 },
59401e04c3fSmrg   { "glProgramParameteri", 32, -1 },
59501e04c3fSmrg   { "glFramebufferTextureLayer", 32, -1 },
596af69d88dSmrg
597af69d88dSmrg   /* GL 3.3 */
598af69d88dSmrg   { "glVertexAttribDivisor", 33, -1 },
599af69d88dSmrg
600af69d88dSmrg   /* GL 4.0 */
601af69d88dSmrg   { "glMinSampleShading", 40, -1 },
60201e04c3fSmrg   { "glPatchParameteri", 40, -1 },
60301e04c3fSmrg   { "glPatchParameterfv", 40, -1 },
604af69d88dSmrg   { "glBlendEquationi", 40, -1 },
605af69d88dSmrg   { "glBlendEquationSeparatei", 40, -1 },
606af69d88dSmrg   { "glBlendFunci", 40, -1 },
607af69d88dSmrg   { "glBlendFuncSeparatei", 40, -1 },
608af69d88dSmrg
60901e04c3fSmrg   { "glGetSubroutineUniformLocation", 40, -1 },
61001e04c3fSmrg   { "glGetSubroutineIndex", 40, -1 },
61101e04c3fSmrg   { "glGetActiveSubroutineUniformiv", 40, -1 },
61201e04c3fSmrg   { "glGetActiveSubroutineUniformName", 40, -1 },
61301e04c3fSmrg   { "glGetActiveSubroutineName", 40, -1 },
61401e04c3fSmrg   { "glUniformSubroutinesuiv", 40, -1 },
61501e04c3fSmrg   { "glGetUniformSubroutineuiv", 40, -1 },
61601e04c3fSmrg   { "glGetProgramStageiv", 40, -1 },
61701e04c3fSmrg
61801e04c3fSmrg   { "glUniform1d", 40, -1 },
61901e04c3fSmrg   { "glUniform2d", 40, -1 },
62001e04c3fSmrg   { "glUniform3d", 40, -1 },
62101e04c3fSmrg   { "glUniform4d", 40, -1 },
62201e04c3fSmrg   { "glUniform1dv", 40, -1 },
62301e04c3fSmrg   { "glUniform2dv", 40, -1 },
62401e04c3fSmrg   { "glUniform3dv", 40, -1 },
62501e04c3fSmrg   { "glUniform4dv", 40, -1 },
62601e04c3fSmrg   { "glUniformMatrix2dv", 40, -1 },
62701e04c3fSmrg   { "glUniformMatrix3dv", 40, -1 },
62801e04c3fSmrg   { "glUniformMatrix4dv", 40, -1 },
62901e04c3fSmrg   { "glUniformMatrix2x3dv", 40, -1 },
63001e04c3fSmrg   { "glUniformMatrix2x4dv", 40, -1 },
63101e04c3fSmrg   { "glUniformMatrix3x2dv", 40, -1 },
63201e04c3fSmrg   { "glUniformMatrix3x4dv", 40, -1 },
63301e04c3fSmrg   { "glUniformMatrix4x2dv", 40, -1 },
63401e04c3fSmrg   { "glUniformMatrix4x3dv", 40, -1 },
63501e04c3fSmrg   { "glGetUniformdv", 43, -1 },
63601e04c3fSmrg
63701e04c3fSmrg   /* GL 4.1 */
63801e04c3fSmrg   { "glVertexAttribL1d", 41, -1 },
63901e04c3fSmrg   { "glVertexAttribL2d", 41, -1 },
64001e04c3fSmrg   { "glVertexAttribL3d", 41, -1 },
64101e04c3fSmrg   { "glVertexAttribL4d", 41, -1 },
64201e04c3fSmrg   { "glVertexAttribL1dv", 41, -1 },
64301e04c3fSmrg   { "glVertexAttribL2dv", 41, -1 },
64401e04c3fSmrg   { "glVertexAttribL3dv", 41, -1 },
64501e04c3fSmrg   { "glVertexAttribL4dv", 41, -1 },
64601e04c3fSmrg   { "glVertexAttribLPointer", 41, -1 },
64701e04c3fSmrg   { "glGetVertexAttribLdv", 41, -1 },
6487ec681f3Smrg   { "glVertexArrayVertexAttribLOffsetEXT", 41, -1 },
64901e04c3fSmrg
650af69d88dSmrg   /* GL 4.3 */
651af69d88dSmrg   { "glIsRenderbuffer", 43, -1 },
652af69d88dSmrg   { "glBindRenderbuffer", 43, -1 },
653af69d88dSmrg   { "glDeleteRenderbuffers", 43, -1 },
654af69d88dSmrg   { "glGenRenderbuffers", 43, -1 },
655af69d88dSmrg   { "glRenderbufferStorage", 43, -1 },
656af69d88dSmrg   { "glGetRenderbufferParameteriv", 43, -1 },
657af69d88dSmrg   { "glIsFramebuffer", 43, -1 },
658af69d88dSmrg   { "glBindFramebuffer", 43, -1 },
659af69d88dSmrg   { "glDeleteFramebuffers", 43, -1 },
660af69d88dSmrg   { "glGenFramebuffers", 43, -1 },
661af69d88dSmrg   { "glCheckFramebufferStatus", 43, -1 },
662af69d88dSmrg   { "glFramebufferTexture1D", 43, -1 },
663af69d88dSmrg   { "glFramebufferTexture2D", 43, -1 },
664af69d88dSmrg   { "glFramebufferTexture3D", 43, -1 },
665af69d88dSmrg   { "glFramebufferRenderbuffer", 43, -1 },
666af69d88dSmrg   { "glGetFramebufferAttachmentParameteriv", 43, -1 },
667af69d88dSmrg   { "glGenerateMipmap", 43, -1 },
668af69d88dSmrg   { "glBlitFramebuffer", 43, -1 },
669af69d88dSmrg   { "glRenderbufferStorageMultisample", 43, -1 },
670af69d88dSmrg   { "glFramebufferTextureLayer", 43, -1 },
671af69d88dSmrg   { "glMapBufferRange", 43, -1 },
672af69d88dSmrg   { "glFlushMappedBufferRange", 43, -1 },
673af69d88dSmrg   { "glBindVertexArray", 43, -1 },
674af69d88dSmrg   { "glDeleteVertexArrays", 43, -1 },
675af69d88dSmrg   { "glGenVertexArrays", 43, -1 },
676af69d88dSmrg   { "glIsVertexArray", 43, -1 },
677af69d88dSmrg   { "glGetUniformIndices", 43, -1 },
678af69d88dSmrg   { "glGetActiveUniformsiv", 43, -1 },
679af69d88dSmrg   { "glGetActiveUniformName", 43, -1 },
680af69d88dSmrg   { "glGetUniformBlockIndex", 43, -1 },
681af69d88dSmrg   { "glGetActiveUniformBlockiv", 43, -1 },
682af69d88dSmrg   { "glGetActiveUniformBlockName", 43, -1 },
683af69d88dSmrg   { "glUniformBlockBinding", 43, -1 },
684af69d88dSmrg   { "glCopyBufferSubData", 43, -1 },
685af69d88dSmrg   { "glDrawElementsBaseVertex", 43, -1 },
686af69d88dSmrg   { "glDrawRangeElementsBaseVertex", 43, -1 },
687af69d88dSmrg   { "glDrawElementsInstancedBaseVertex", 43, -1 },
688af69d88dSmrg   { "glMultiDrawElementsBaseVertex", 43, -1 },
689af69d88dSmrg   { "glProvokingVertex", 43, -1 },
690af69d88dSmrg   { "glFenceSync", 43, -1 },
691af69d88dSmrg   { "glIsSync", 43, -1 },
692af69d88dSmrg   { "glDeleteSync", 43, -1 },
693af69d88dSmrg   { "glClientWaitSync", 43, -1 },
694af69d88dSmrg   { "glWaitSync", 43, -1 },
695af69d88dSmrg   { "glGetInteger64v", 43, -1 },
696af69d88dSmrg   { "glGetSynciv", 43, -1 },
697af69d88dSmrg   { "glTexImage2DMultisample", 43, -1 },
698af69d88dSmrg   { "glTexImage3DMultisample", 43, -1 },
699af69d88dSmrg   { "glGetMultisamplefv", 43, -1 },
700af69d88dSmrg   { "glSampleMaski", 43, -1 },
701af69d88dSmrg   { "glBlendEquationiARB", 43, -1 },
702af69d88dSmrg   { "glBlendEquationSeparateiARB", 43, -1 },
703af69d88dSmrg   { "glBlendFunciARB", 43, -1 },
704af69d88dSmrg   { "glBlendFuncSeparateiARB", 43, -1 },
705af69d88dSmrg   { "glMinSampleShadingARB", 43, -1 },                 // XXX: Add to xml
706af69d88dSmrg   { "glBindFragDataLocationIndexed", 43, -1 },
707af69d88dSmrg   { "glGetFragDataIndex", 43, -1 },
708af69d88dSmrg   { "glGenSamplers", 43, -1 },
709af69d88dSmrg   { "glDeleteSamplers", 43, -1 },
710af69d88dSmrg   { "glIsSampler", 43, -1 },
711af69d88dSmrg   { "glBindSampler", 43, -1 },
712af69d88dSmrg   { "glSamplerParameteri", 43, -1 },
713af69d88dSmrg   { "glSamplerParameteriv", 43, -1 },
714af69d88dSmrg   { "glSamplerParameterf", 43, -1 },
715af69d88dSmrg   { "glSamplerParameterfv", 43, -1 },
716af69d88dSmrg   { "glSamplerParameterIiv", 43, -1 },
717af69d88dSmrg   { "glSamplerParameterIuiv", 43, -1 },
718af69d88dSmrg   { "glGetSamplerParameteriv", 43, -1 },
719af69d88dSmrg   { "glGetSamplerParameterIiv", 43, -1 },
720af69d88dSmrg   { "glGetSamplerParameterfv", 43, -1 },
721af69d88dSmrg   { "glGetSamplerParameterIuiv", 43, -1 },
722af69d88dSmrg   { "glQueryCounter", 43, -1 },
723af69d88dSmrg   { "glGetQueryObjecti64v", 43, -1 },
724af69d88dSmrg   { "glGetQueryObjectui64v", 43, -1 },
725af69d88dSmrg   { "glVertexP2ui", 43, -1 },
726af69d88dSmrg   { "glVertexP2uiv", 43, -1 },
727af69d88dSmrg   { "glVertexP3ui", 43, -1 },
728af69d88dSmrg   { "glVertexP3uiv", 43, -1 },
729af69d88dSmrg   { "glVertexP4ui", 43, -1 },
730af69d88dSmrg   { "glVertexP4uiv", 43, -1 },
731af69d88dSmrg   { "glTexCoordP1ui", 43, -1 },
732af69d88dSmrg   { "glTexCoordP1uiv", 43, -1 },
733af69d88dSmrg   { "glTexCoordP2ui", 43, -1 },
734af69d88dSmrg   { "glTexCoordP2uiv", 43, -1 },
735af69d88dSmrg   { "glTexCoordP3ui", 43, -1 },
736af69d88dSmrg   { "glTexCoordP3uiv", 43, -1 },
737af69d88dSmrg   { "glTexCoordP4ui", 43, -1 },
738af69d88dSmrg   { "glTexCoordP4uiv", 43, -1 },
739af69d88dSmrg   { "glMultiTexCoordP1ui", 43, -1 },
740af69d88dSmrg   { "glMultiTexCoordP1uiv", 43, -1 },
741af69d88dSmrg   { "glMultiTexCoordP2ui", 43, -1 },
742af69d88dSmrg   { "glMultiTexCoordP2uiv", 43, -1 },
743af69d88dSmrg   { "glMultiTexCoordP3ui", 43, -1 },
744af69d88dSmrg   { "glMultiTexCoordP3uiv", 43, -1 },
745af69d88dSmrg   { "glMultiTexCoordP4ui", 43, -1 },
746af69d88dSmrg   { "glMultiTexCoordP4uiv", 43, -1 },
747af69d88dSmrg   { "glNormalP3ui", 43, -1 },
748af69d88dSmrg   { "glNormalP3uiv", 43, -1 },
749af69d88dSmrg   { "glColorP3ui", 43, -1 },
750af69d88dSmrg   { "glColorP3uiv", 43, -1 },
751af69d88dSmrg   { "glColorP4ui", 43, -1 },
752af69d88dSmrg   { "glColorP4uiv", 43, -1 },
753af69d88dSmrg   { "glSecondaryColorP3ui", 43, -1 },
754af69d88dSmrg   { "glSecondaryColorP3uiv", 43, -1 },
755af69d88dSmrg   { "glVertexAttribP1ui", 43, -1 },
756af69d88dSmrg   { "glVertexAttribP1uiv", 43, -1 },
757af69d88dSmrg   { "glVertexAttribP2ui", 43, -1 },
758af69d88dSmrg   { "glVertexAttribP2uiv", 43, -1 },
759af69d88dSmrg   { "glVertexAttribP3ui", 43, -1 },
760af69d88dSmrg   { "glVertexAttribP3uiv", 43, -1 },
761af69d88dSmrg   { "glVertexAttribP4ui", 43, -1 },
762af69d88dSmrg   { "glVertexAttribP4uiv", 43, -1 },
763af69d88dSmrg   { "glDrawArraysIndirect", 43, -1 },
764af69d88dSmrg   { "glDrawElementsIndirect", 43, -1 },
765af69d88dSmrg   { "glBindTransformFeedback", 43, -1 },
766af69d88dSmrg   { "glDeleteTransformFeedbacks", 43, -1 },
767af69d88dSmrg   { "glGenTransformFeedbacks", 43, -1 },
768af69d88dSmrg   { "glIsTransformFeedback", 43, -1 },
769af69d88dSmrg   { "glPauseTransformFeedback", 43, -1 },
770af69d88dSmrg   { "glResumeTransformFeedback", 43, -1 },
771af69d88dSmrg   { "glDrawTransformFeedback", 43, -1 },
772af69d88dSmrg   { "glDrawTransformFeedbackStream", 43, -1 },
773af69d88dSmrg   { "glBeginQueryIndexed", 43, -1 },
774af69d88dSmrg   { "glEndQueryIndexed", 43, -1 },
775af69d88dSmrg   { "glGetQueryIndexediv", 43, -1 },
776af69d88dSmrg   { "glReleaseShaderCompiler", 43, -1 },
777af69d88dSmrg   { "glShaderBinary", 43, -1 },
778af69d88dSmrg   { "glGetShaderPrecisionFormat", 43, -1 },
779af69d88dSmrg   { "glDepthRangef", 43, -1 },
780af69d88dSmrg   { "glClearDepthf", 43, -1 },
781af69d88dSmrg   { "glGetProgramBinary", 43, -1 },
782af69d88dSmrg   { "glProgramBinary", 43, -1 },
783af69d88dSmrg   { "glProgramParameteri", 43, -1 },
784af69d88dSmrg   { "glUseProgramStages", 43, -1 },
785af69d88dSmrg   { "glActiveShaderProgram", 43, -1 },
786af69d88dSmrg   { "glCreateShaderProgramv", 43, -1 },
787af69d88dSmrg   { "glBindProgramPipeline", 43, -1 },
788af69d88dSmrg   { "glDeleteProgramPipelines", 43, -1 },
789af69d88dSmrg   { "glGenProgramPipelines", 43, -1 },
790af69d88dSmrg   { "glIsProgramPipeline", 43, -1 },
791af69d88dSmrg   { "glGetProgramPipelineiv", 43, -1 },
79201e04c3fSmrg   { "glProgramUniform1d", 43, -1 },
79301e04c3fSmrg   { "glProgramUniform1dv", 43, -1 },
794af69d88dSmrg   { "glProgramUniform1i", 43, -1 },
795af69d88dSmrg   { "glProgramUniform1iv", 43, -1 },
796af69d88dSmrg   { "glProgramUniform1f", 43, -1 },
797af69d88dSmrg   { "glProgramUniform1fv", 43, -1 },
798af69d88dSmrg   { "glProgramUniform1ui", 43, -1 },
799af69d88dSmrg   { "glProgramUniform1uiv", 43, -1 },
800af69d88dSmrg   { "glProgramUniform2i", 43, -1 },
801af69d88dSmrg   { "glProgramUniform2iv", 43, -1 },
802af69d88dSmrg   { "glProgramUniform2f", 43, -1 },
803af69d88dSmrg   { "glProgramUniform2fv", 43, -1 },
80401e04c3fSmrg   { "glProgramUniform2d", 40, -1 },
80501e04c3fSmrg   { "glProgramUniform2dv", 40, -1 },
806af69d88dSmrg   { "glProgramUniform2ui", 43, -1 },
807af69d88dSmrg   { "glProgramUniform2uiv", 43, -1 },
808af69d88dSmrg   { "glProgramUniform3i", 43, -1 },
809af69d88dSmrg   { "glProgramUniform3iv", 43, -1 },
810af69d88dSmrg   { "glProgramUniform3f", 43, -1 },
811af69d88dSmrg   { "glProgramUniform3fv", 43, -1 },
81201e04c3fSmrg   { "glProgramUniform3d", 40, -1 },
81301e04c3fSmrg   { "glProgramUniform3dv", 40, -1 },
814af69d88dSmrg   { "glProgramUniform3ui", 43, -1 },
815af69d88dSmrg   { "glProgramUniform3uiv", 43, -1 },
816af69d88dSmrg   { "glProgramUniform4i", 43, -1 },
817af69d88dSmrg   { "glProgramUniform4iv", 43, -1 },
81801e04c3fSmrg   { "glProgramUniform4d", 43, -1 },
81901e04c3fSmrg   { "glProgramUniform4dv", 43, -1 },
820af69d88dSmrg   { "glProgramUniform4f", 43, -1 },
821af69d88dSmrg   { "glProgramUniform4fv", 43, -1 },
822af69d88dSmrg   { "glProgramUniform4ui", 43, -1 },
823af69d88dSmrg   { "glProgramUniform4uiv", 43, -1 },
82401e04c3fSmrg   { "glProgramUniformMatrix2dv", 43, -1 },
825af69d88dSmrg   { "glProgramUniformMatrix2fv", 43, -1 },
82601e04c3fSmrg   { "glProgramUniformMatrix3dv", 43, -1 },
827af69d88dSmrg   { "glProgramUniformMatrix3fv", 43, -1 },
82801e04c3fSmrg   { "glProgramUniformMatrix4dv", 43, -1 },
829af69d88dSmrg   { "glProgramUniformMatrix4fv", 43, -1 },
83001e04c3fSmrg   { "glProgramUniformMatrix2x3dv", 43, -1 },
831af69d88dSmrg   { "glProgramUniformMatrix2x3fv", 43, -1 },
83201e04c3fSmrg   { "glProgramUniformMatrix3x2dv", 43, -1 },
833af69d88dSmrg   { "glProgramUniformMatrix3x2fv", 43, -1 },
83401e04c3fSmrg   { "glProgramUniformMatrix2x4dv", 43, -1 },
835af69d88dSmrg   { "glProgramUniformMatrix2x4fv", 43, -1 },
83601e04c3fSmrg   { "glProgramUniformMatrix4x2dv", 43, -1 },
837af69d88dSmrg   { "glProgramUniformMatrix4x2fv", 43, -1 },
83801e04c3fSmrg   { "glProgramUniformMatrix3x4dv", 43, -1 },
839af69d88dSmrg   { "glProgramUniformMatrix3x4fv", 43, -1 },
84001e04c3fSmrg   { "glProgramUniformMatrix4x3dv", 43, -1 },
841af69d88dSmrg   { "glProgramUniformMatrix4x3fv", 43, -1 },
842af69d88dSmrg   { "glValidateProgramPipeline", 43, -1 },
843af69d88dSmrg   { "glGetProgramPipelineInfoLog", 43, -1 },
844af69d88dSmrg   { "glGetFloati_v", 43, -1 },
845af69d88dSmrg   { "glGetDoublei_v", 43, -1 },
846af69d88dSmrg// { "glCreateSyncFromCLeventARB", 43, -1 },            // XXX: Add to xml
847af69d88dSmrg   { "glGetGraphicsResetStatusARB", 43, -1 },
848af69d88dSmrg   { "glGetnMapdvARB", 43, -1 },
849af69d88dSmrg   { "glGetnMapfvARB", 43, -1 },
850af69d88dSmrg   { "glGetnMapivARB", 43, -1 },
851af69d88dSmrg   { "glGetnPixelMapfvARB", 43, -1 },
852af69d88dSmrg   { "glGetnPixelMapuivARB", 43, -1 },
853af69d88dSmrg   { "glGetnPixelMapusvARB", 43, -1 },
854af69d88dSmrg   { "glGetnPolygonStippleARB", 43, -1 },
855af69d88dSmrg   { "glGetnColorTableARB", 43, -1 },
856af69d88dSmrg   { "glGetnConvolutionFilterARB", 43, -1 },
857af69d88dSmrg   { "glGetnSeparableFilterARB", 43, -1 },
858af69d88dSmrg   { "glGetnHistogramARB", 43, -1 },
859af69d88dSmrg   { "glGetnMinmaxARB", 43, -1 },
860af69d88dSmrg   { "glGetnTexImageARB", 43, -1 },
861af69d88dSmrg   { "glReadnPixelsARB", 43, -1 },
862af69d88dSmrg   { "glGetnCompressedTexImageARB", 43, -1 },
863af69d88dSmrg   { "glGetnUniformfvARB", 43, -1 },
864af69d88dSmrg   { "glGetnUniformivARB", 43, -1 },
865af69d88dSmrg   { "glGetnUniformuivARB", 43, -1 },
866af69d88dSmrg   { "glGetnUniformdvARB", 43, -1 },
867af69d88dSmrg   { "glDrawArraysInstancedBaseInstance", 43, -1 },
868af69d88dSmrg   { "glDrawElementsInstancedBaseInstance", 43, -1 },
869af69d88dSmrg   { "glDrawElementsInstancedBaseVertexBaseInstance", 43, -1 },
870af69d88dSmrg   { "glDrawTransformFeedbackInstanced", 43, -1 },
871af69d88dSmrg   { "glDrawTransformFeedbackStreamInstanced", 43, -1 },
872af69d88dSmrg// { "glGetInternalformativ", 43, -1 },                 // XXX: Add to xml
873af69d88dSmrg   { "glGetActiveAtomicCounterBufferiv", 43, -1 },
874af69d88dSmrg   { "glBindImageTexture", 43, -1 },
875af69d88dSmrg   { "glMemoryBarrier", 43, -1 },
876af69d88dSmrg   { "glTexStorage1D", 43, -1 },
877af69d88dSmrg   { "glTexStorage2D", 43, -1 },
878af69d88dSmrg   { "glTexStorage3D", 43, -1 },
879af69d88dSmrg   { "glTextureStorage1DEXT", 43, -1 },
880af69d88dSmrg   { "glTextureStorage2DEXT", 43, -1 },
881af69d88dSmrg   { "glTextureStorage3DEXT", 43, -1 },
882af69d88dSmrg   { "glClearBufferData", 43, -1 },
883af69d88dSmrg   { "glClearBufferSubData", 43, -1 },
8847ec681f3Smrg   { "glClearNamedBufferDataEXT", 43, -1 },
8857ec681f3Smrg   { "glClearNamedBufferSubDataEXT", 43, -1 },
886af69d88dSmrg   { "glCopyImageSubData", 43, -1 },
887af69d88dSmrg   { "glTextureView", 43, -1 },
888af69d88dSmrg   { "glBindVertexBuffer", 43, -1 },
889af69d88dSmrg   { "glVertexAttribFormat", 43, -1 },
890af69d88dSmrg   { "glVertexAttribIFormat", 43, -1 },
891af69d88dSmrg   { "glVertexAttribLFormat", 43, -1 },
892af69d88dSmrg   { "glVertexAttribBinding", 43, -1 },
893af69d88dSmrg   { "glVertexBindingDivisor", 43, -1 },
8947ec681f3Smrg   { "glVertexArrayBindVertexBufferEXT", 43, -1 },
8957ec681f3Smrg   { "glVertexArrayVertexAttribFormatEXT", 43, -1 },
8967ec681f3Smrg   { "glVertexArrayVertexAttribIFormatEXT", 43, -1 },
8977ec681f3Smrg   { "glVertexArrayVertexAttribLFormatEXT", 43, -1 },
8987ec681f3Smrg   { "glVertexArrayVertexAttribBindingEXT", 43, -1 },
8997ec681f3Smrg   { "glVertexArrayVertexBindingDivisorEXT", 43, -1 },
90001e04c3fSmrg   { "glFramebufferParameteri", 43, -1 },
90101e04c3fSmrg   { "glGetFramebufferParameteriv", 43, -1 },
9027ec681f3Smrg   { "glNamedFramebufferParameteriEXT", 43, -1 },
9037ec681f3Smrg   { "glGetNamedFramebufferParameterivEXT", 43, -1 },
904af69d88dSmrg// { "glGetInternalformati64v", 43, -1 },               // XXX: Add to xml
905af69d88dSmrg   { "glInvalidateTexSubImage", 43, -1 },
906af69d88dSmrg   { "glInvalidateTexImage", 43, -1 },
907af69d88dSmrg   { "glInvalidateBufferSubData", 43, -1 },
908af69d88dSmrg   { "glInvalidateBufferData", 43, -1 },
909af69d88dSmrg   { "glInvalidateFramebuffer", 43, -1 },
910af69d88dSmrg   { "glInvalidateSubFramebuffer", 43, -1 },
911af69d88dSmrg   { "glMultiDrawArraysIndirect", 43, -1 },
912af69d88dSmrg   { "glMultiDrawElementsIndirect", 43, -1 },
91301e04c3fSmrg   { "glGetProgramInterfaceiv", 43, -1 },
91401e04c3fSmrg   { "glGetProgramResourceIndex", 43, -1 },
91501e04c3fSmrg   { "glGetProgramResourceName", 43, -1 },
91601e04c3fSmrg   { "glGetProgramResourceiv", 43, -1 },
91701e04c3fSmrg   { "glGetProgramResourceLocation", 43, -1 },
91801e04c3fSmrg   { "glGetProgramResourceLocationIndex", 43, -1 },
91901e04c3fSmrg   { "glShaderStorageBlockBinding", 43, -1 },
9207ec681f3Smrg   { "glTextureBufferRangeEXT", 43, -1 },
921af69d88dSmrg   { "glTexStorage2DMultisample", 43, -1 },
922af69d88dSmrg   { "glTexStorage3DMultisample", 43, -1 },
9237ec681f3Smrg   { "glTextureStorage2DMultisampleEXT", 43, -1 },
9247ec681f3Smrg   { "glTextureStorage3DMultisampleEXT", 43, -1 },
925af69d88dSmrg
92601e04c3fSmrg   { "glViewportArrayv", 43, -1 },
92701e04c3fSmrg   { "glViewportIndexedf", 43, -1 },
92801e04c3fSmrg   { "glViewportIndexedfv", 43, -1 },
92901e04c3fSmrg   { "glScissorArrayv", 43, -1 },
93001e04c3fSmrg   { "glScissorIndexed", 43, -1 },
93101e04c3fSmrg   { "glScissorIndexedv", 43, -1 },
93201e04c3fSmrg   { "glDepthRangeArrayv", 43, -1 },
93301e04c3fSmrg   { "glDepthRangeIndexed", 43, -1 },
93401e04c3fSmrg
9357ec681f3Smrg/* GL 4.4 */
9367ec681f3Smrg   /* GL_NV_alpha_to_coverage_dither_control */
9377ec681f3Smrg   { "glAlphaToCoverageDitherControlNV", 44, -1 },
9387ec681f3Smrg
93901e04c3fSmrg/* GL 4.5 */
94001e04c3fSmrg   /* aliased versions checked above */
94101e04c3fSmrg   //{ "glGetGraphicsResetStatus", 45, -1 },
94201e04c3fSmrg   //{ "glReadnPixels", 45, -1 },
94301e04c3fSmrg   //{ "glGetnUniformfv", 45, -1 },
94401e04c3fSmrg   //{ "glGetnUniformiv", 45, -1 },
94501e04c3fSmrg   //{ "glGetnUniformuiv", 45, -1 },
94601e04c3fSmrg   { "glMemoryBarrierByRegion", 45, -1 },
94701e04c3fSmrg
94801e04c3fSmrg   /* GL_ARB_direct_state_access */
94901e04c3fSmrg   { "glCreateTransformFeedbacks", 45, -1 },
95001e04c3fSmrg   { "glTransformFeedbackBufferBase", 45, -1 },
95101e04c3fSmrg   { "glTransformFeedbackBufferRange", 45, -1 },
95201e04c3fSmrg   { "glGetTransformFeedbackiv", 45, -1 },
95301e04c3fSmrg   { "glGetTransformFeedbacki_v", 45, -1 },
95401e04c3fSmrg   { "glGetTransformFeedbacki64_v", 45, -1 },
95501e04c3fSmrg   { "glCreateBuffers", 45, -1 },
95601e04c3fSmrg   { "glNamedBufferStorage", 45, -1 },
95701e04c3fSmrg   { "glNamedBufferData", 45, -1 },
95801e04c3fSmrg   { "glNamedBufferSubData", 45, -1 },
95901e04c3fSmrg   { "glCopyNamedBufferSubData", 45, -1 },
96001e04c3fSmrg   { "glClearNamedBufferData", 45, -1 },
96101e04c3fSmrg   { "glClearNamedBufferSubData", 45, -1 },
96201e04c3fSmrg   { "glMapNamedBuffer", 45, -1 },
96301e04c3fSmrg   { "glMapNamedBufferRange", 45, -1 },
96401e04c3fSmrg   { "glFlushMappedNamedBufferRange", 45, -1 },
96501e04c3fSmrg   { "glGetNamedBufferParameteriv", 45, -1 },
96601e04c3fSmrg   { "glGetNamedBufferParameteri64v", 45, -1 },
96701e04c3fSmrg   { "glGetNamedBufferPointerv", 45, -1 },
96801e04c3fSmrg   { "glGetNamedBufferSubData", 45, -1 },
96901e04c3fSmrg   { "glCreateFramebuffers", 45, -1 },
97001e04c3fSmrg   { "glNamedFramebufferRenderbuffer", 45, -1 },
97101e04c3fSmrg   { "glNamedFramebufferParameteri", 45, -1 },
97201e04c3fSmrg   { "glNamedFramebufferTexture", 45, -1 },
97301e04c3fSmrg   { "glNamedFramebufferTextureLayer", 45, -1 },
97401e04c3fSmrg   { "glNamedFramebufferDrawBuffer", 45, -1 },
97501e04c3fSmrg   { "glNamedFramebufferDrawBuffers", 45, -1 },
97601e04c3fSmrg   { "glNamedFramebufferReadBuffer", 45, -1 },
97701e04c3fSmrg   { "glInvalidateNamedFramebufferSubData", 45, -1 },
97801e04c3fSmrg   { "glInvalidateNamedFramebufferData", 45, -1 },
97901e04c3fSmrg   { "glClearNamedFramebufferiv", 45, -1 },
98001e04c3fSmrg   { "glClearNamedFramebufferuiv", 45, -1 },
98101e04c3fSmrg   { "glClearNamedFramebufferfv", 45, -1 },
98201e04c3fSmrg   { "glClearNamedFramebufferfi", 45, -1 },
98301e04c3fSmrg   { "glBlitNamedFramebuffer", 45, -1 },
98401e04c3fSmrg   { "glCheckNamedFramebufferStatus", 45, -1 },
98501e04c3fSmrg   { "glGetNamedFramebufferParameteriv", 45, -1 },
98601e04c3fSmrg   { "glGetNamedFramebufferAttachmentParameteriv", 45, -1 },
98701e04c3fSmrg   { "glCreateRenderbuffers", 45, -1 },
98801e04c3fSmrg   { "glNamedRenderbufferStorage", 45, -1 },
98901e04c3fSmrg   { "glNamedRenderbufferStorageMultisample", 45, -1 },
99001e04c3fSmrg   { "glGetNamedRenderbufferParameteriv", 45, -1 },
99101e04c3fSmrg   { "glCreateTextures", 45, -1 },
99201e04c3fSmrg   { "glTextureStorage1D", 45, -1 },
99301e04c3fSmrg   { "glTextureStorage2D", 45, -1 },
99401e04c3fSmrg   { "glTextureStorage3D", 45, -1 },
99501e04c3fSmrg   { "glTextureSubImage1D", 45, -1 },
99601e04c3fSmrg   { "glTextureSubImage2D", 45, -1 },
99701e04c3fSmrg   { "glTextureSubImage3D", 45, -1 },
99801e04c3fSmrg   { "glBindTextureUnit", 45, -1 },
99901e04c3fSmrg   { "glTextureParameterf", 45, -1 },
100001e04c3fSmrg   { "glTextureParameterfv", 45, -1 },
100101e04c3fSmrg   { "glTextureParameteri", 45, -1 },
100201e04c3fSmrg   { "glTextureParameterIiv", 45, -1 },
100301e04c3fSmrg   { "glTextureParameterIuiv", 45, -1 },
100401e04c3fSmrg   { "glTextureParameteriv", 45, -1 },
100501e04c3fSmrg   { "glGetTextureLevelParameterfv", 45, -1 },
100601e04c3fSmrg   { "glGetTextureLevelParameteriv", 45, -1 },
100701e04c3fSmrg   { "glGetTextureParameterfv", 45, -1 },
100801e04c3fSmrg   { "glGetTextureParameterIiv", 45, -1 },
100901e04c3fSmrg   { "glGetTextureParameterIuiv", 45, -1 },
101001e04c3fSmrg   { "glGetTextureParameteriv", 45, -1 },
101101e04c3fSmrg   { "glCopyTextureSubImage1D", 45, -1 },
101201e04c3fSmrg   { "glCopyTextureSubImage2D", 45, -1 },
101301e04c3fSmrg   { "glCopyTextureSubImage3D", 45, -1 },
101401e04c3fSmrg   { "glGetTextureImage", 45, -1 },
101501e04c3fSmrg   { "glGetCompressedTextureImage", 45, -1 },
101601e04c3fSmrg   { "glCompressedTextureSubImage1D", 45, -1 },
101701e04c3fSmrg   { "glCompressedTextureSubImage2D", 45, -1 },
101801e04c3fSmrg   { "glCompressedTextureSubImage3D", 45, -1 },
101901e04c3fSmrg   { "glGenerateTextureMipmap", 45, -1 },
102001e04c3fSmrg   { "glTextureStorage2DMultisample", 45, -1 },
102101e04c3fSmrg   { "glTextureStorage3DMultisample", 45, -1 },
102201e04c3fSmrg   { "glTextureBuffer", 45, -1 },
102301e04c3fSmrg   { "glTextureBufferRange", 45, -1 },
102401e04c3fSmrg   { "glCreateVertexArrays", 45, -1 },
102501e04c3fSmrg   { "glDisableVertexArrayAttrib", 45, -1 },
102601e04c3fSmrg   { "glEnableVertexArrayAttrib", 45, -1 },
102701e04c3fSmrg   { "glVertexArrayElementBuffer", 45, -1 },
102801e04c3fSmrg   { "glVertexArrayVertexBuffer", 45, -1 },
102901e04c3fSmrg   { "glVertexArrayVertexBuffers", 45, -1 },
103001e04c3fSmrg   { "glVertexArrayAttribFormat", 45, -1 },
103101e04c3fSmrg   { "glVertexArrayAttribIFormat", 45, -1 },
103201e04c3fSmrg   { "glVertexArrayAttribLFormat", 45, -1 },
103301e04c3fSmrg   { "glVertexArrayAttribBinding", 45, -1 },
103401e04c3fSmrg   { "glVertexArrayBindingDivisor", 45, -1 },
103501e04c3fSmrg   { "glGetVertexArrayiv", 45, -1 },
103601e04c3fSmrg   { "glGetVertexArrayIndexediv", 45, -1 },
103701e04c3fSmrg   { "glGetVertexArrayIndexed64iv", 45, -1 },
103801e04c3fSmrg   { "glCreateSamplers", 45, -1 },
103901e04c3fSmrg   { "glCreateProgramPipelines", 45, -1 },
104001e04c3fSmrg   { "glCreateQueries", 45, -1 },
104101e04c3fSmrg   { "glGetQueryBufferObjectiv", 45, -1 },
104201e04c3fSmrg   { "glGetQueryBufferObjectuiv", 45, -1 },
104301e04c3fSmrg   { "glGetQueryBufferObjecti64v", 45, -1 },
104401e04c3fSmrg   { "glGetQueryBufferObjectui64v", 45, -1 },
104501e04c3fSmrg
10467ec681f3Smrg   /* GL_EXT_direct_state_access - GL 1.0 */
10477ec681f3Smrg   { "glMatrixLoadfEXT", 10, -1 },
10487ec681f3Smrg   { "glMatrixLoaddEXT", 10, -1 },
10497ec681f3Smrg   { "glMatrixMultfEXT", 10, -1 },
10507ec681f3Smrg   { "glMatrixMultdEXT", 10, -1 },
10517ec681f3Smrg   { "glMatrixLoadIdentityEXT", 10, -1 },
10527ec681f3Smrg   { "glMatrixRotatefEXT", 10, -1 },
10537ec681f3Smrg   { "glMatrixRotatedEXT", 10, -1 },
10547ec681f3Smrg   { "glMatrixScalefEXT", 10, -1 },
10557ec681f3Smrg   { "glMatrixScaledEXT", 10, -1 },
10567ec681f3Smrg   { "glMatrixTranslatefEXT", 10, -1 },
10577ec681f3Smrg   { "glMatrixTranslatedEXT", 10, -1 },
10587ec681f3Smrg   { "glMatrixOrthoEXT", 10, -1 },
10597ec681f3Smrg   { "glMatrixFrustumEXT", 10, -1 },
10607ec681f3Smrg   { "glMatrixPushEXT", 10, -1 },
10617ec681f3Smrg   { "glMatrixPopEXT", 10, -1 },
10627ec681f3Smrg   /* GL_EXT_direct_state_access - GL 1.1 */
10637ec681f3Smrg   { "glClientAttribDefaultEXT", 11, -1 },
10647ec681f3Smrg   { "glPushClientAttribDefaultEXT", 11, -1 },
10657ec681f3Smrg   { "glTextureParameteriEXT", 11, -1 },
10667ec681f3Smrg   { "glTextureParameterivEXT", 11, -1 },
10677ec681f3Smrg   { "glTextureParameterfEXT", 11, -1 },
10687ec681f3Smrg   { "glTextureParameterfvEXT", 11, -1 },
10697ec681f3Smrg   { "glTextureImage1DEXT", 11, -1 },
10707ec681f3Smrg   { "glTextureImage2DEXT", 11, -1 },
10717ec681f3Smrg   { "glTextureSubImage1DEXT", 11, -1 },
10727ec681f3Smrg   { "glTextureSubImage2DEXT", 11, -1 },
10737ec681f3Smrg   { "glCopyTextureImage1DEXT", 11, -1 },
10747ec681f3Smrg   { "glCopyTextureImage2DEXT", 11, -1 },
10757ec681f3Smrg   { "glCopyTextureSubImage1DEXT", 11, -1 },
10767ec681f3Smrg   { "glCopyTextureSubImage2DEXT", 11, -1 },
10777ec681f3Smrg   { "glGetTextureImageEXT", 11, -1 },
10787ec681f3Smrg   { "glGetTextureParameterfvEXT", 11, -1 },
10797ec681f3Smrg   { "glGetTextureParameterivEXT", 11, -1 },
10807ec681f3Smrg   { "glGetTextureLevelParameterfvEXT", 11, -1 },
10817ec681f3Smrg   { "glGetTextureLevelParameterivEXT", 11, -1 },
10827ec681f3Smrg   /* GL_EXT_direct_state_access - GL 1.2 */
10837ec681f3Smrg   { "glTextureImage3DEXT", 12, -1 },
10847ec681f3Smrg   { "glTextureSubImage3DEXT", 12, -1 },
10857ec681f3Smrg   { "glCopyTextureSubImage3DEXT", 12, -1 },
10867ec681f3Smrg   /* GL_EXT_direct_state_access - GL 1.2.1 */
10877ec681f3Smrg   { "glBindMultiTextureEXT", 12, -1 },
10887ec681f3Smrg   { "glMultiTexCoordPointerEXT", 12, -1 },
10897ec681f3Smrg   { "glMultiTexEnvfEXT", 12, -1 },
10907ec681f3Smrg   { "glMultiTexEnvfvEXT", 12, -1 },
10917ec681f3Smrg   { "glMultiTexEnviEXT", 12, -1 },
10927ec681f3Smrg   { "glMultiTexEnvivEXT", 12, -1 },
10937ec681f3Smrg   { "glMultiTexGendEXT", 12, -1 },
10947ec681f3Smrg   { "glMultiTexGendvEXT", 12, -1 },
10957ec681f3Smrg   { "glMultiTexGenfEXT", 12, -1 },
10967ec681f3Smrg   { "glMultiTexGenfvEXT", 12, -1 },
10977ec681f3Smrg   { "glMultiTexGeniEXT", 12, -1 },
10987ec681f3Smrg   { "glMultiTexGenivEXT", 12, -1 },
10997ec681f3Smrg   { "glGetMultiTexEnvfvEXT", 12, -1 },
11007ec681f3Smrg   { "glGetMultiTexEnvivEXT", 12, -1 },
11017ec681f3Smrg   { "glGetMultiTexGendvEXT", 12, -1 },
11027ec681f3Smrg   { "glGetMultiTexGenfvEXT", 12, -1 },
11037ec681f3Smrg   { "glGetMultiTexGenivEXT", 12, -1 },
11047ec681f3Smrg   { "glMultiTexParameterfEXT", 12, -1 },
11057ec681f3Smrg   { "glMultiTexParameterfvEXT", 12, -1 },
11067ec681f3Smrg   { "glMultiTexParameteriEXT", 12, -1 },
11077ec681f3Smrg   { "glMultiTexParameterivEXT", 12, -1 },
11087ec681f3Smrg   { "glMultiTexImage1DEXT", 12, -1 },
11097ec681f3Smrg   { "glMultiTexImage2DEXT", 12, -1 },
11107ec681f3Smrg   { "glMultiTexSubImage1DEXT", 12, -1 },
11117ec681f3Smrg   { "glMultiTexSubImage2DEXT", 12, -1 },
11127ec681f3Smrg   { "glCopyMultiTexImage1DEXT", 12, -1 },
11137ec681f3Smrg   { "glCopyMultiTexImage2DEXT", 12, -1 },
11147ec681f3Smrg   { "glCopyMultiTexSubImage1DEXT", 12, -1 },
11157ec681f3Smrg   { "glCopyMultiTexSubImage2DEXT", 12, -1 },
11167ec681f3Smrg   { "glGetMultiTexImageEXT", 12, -1 },
11177ec681f3Smrg   { "glGetMultiTexParameterfvEXT", 12, -1 },
11187ec681f3Smrg   { "glGetMultiTexParameterivEXT", 12, -1 },
11197ec681f3Smrg   { "glGetMultiTexLevelParameterfvEXT", 12, -1 },
11207ec681f3Smrg   { "glGetMultiTexLevelParameterivEXT", 12, -1 },
11217ec681f3Smrg   { "glMultiTexImage3DEXT", 12, -1 },
11227ec681f3Smrg   { "glMultiTexSubImage3DEXT", 12, -1 },
11237ec681f3Smrg   { "glCopyMultiTexSubImage3DEXT", 12, -1 },
11247ec681f3Smrg   { "glEnableClientStateIndexedEXT", 12, -1 },
11257ec681f3Smrg   { "glDisableClientStateIndexedEXT", 12, -1 },
11267ec681f3Smrg   { "glGetPointerIndexedvEXT", 12, -1 },
11277ec681f3Smrg   /* GL_EXT_direct_state_access - ARB_vertex_program */
11287ec681f3Smrg   { "glNamedProgramStringEXT", 10, -1 },
11297ec681f3Smrg   { "glNamedProgramLocalParameter4dEXT", 10, -1 },
11307ec681f3Smrg   { "glNamedProgramLocalParameter4dvEXT", 10, -1 },
11317ec681f3Smrg   { "glNamedProgramLocalParameter4fEXT", 10, -1 },
11327ec681f3Smrg   { "glNamedProgramLocalParameter4fvEXT", 10, -1 },
11337ec681f3Smrg   { "glGetNamedProgramLocalParameterdvEXT", 10, -1 },
11347ec681f3Smrg   { "glGetNamedProgramLocalParameterfvEXT", 10, -1 },
11357ec681f3Smrg   { "glGetNamedProgramivEXT", 10, -1 },
11367ec681f3Smrg   { "glGetNamedProgramStringEXT", 10, -1 },
11377ec681f3Smrg   /* GL_EXT_direct_state_access - GL 1.3 */
11387ec681f3Smrg   { "glCompressedTextureImage1DEXT", 13, -1 },
11397ec681f3Smrg   { "glCompressedTextureImage2DEXT", 13, -1 },
11407ec681f3Smrg   { "glCompressedTextureImage3DEXT", 13, -1 },
11417ec681f3Smrg   { "glCompressedTextureSubImage1DEXT", 13, -1 },
11427ec681f3Smrg   { "glCompressedTextureSubImage2DEXT", 13, -1 },
11437ec681f3Smrg   { "glCompressedTextureSubImage3DEXT", 13, -1 },
11447ec681f3Smrg   { "glGetCompressedTextureImageEXT", 13, -1 },
11457ec681f3Smrg   { "glCompressedMultiTexImage1DEXT", 13, -1 },
11467ec681f3Smrg   { "glCompressedMultiTexImage2DEXT", 13, -1 },
11477ec681f3Smrg   { "glCompressedMultiTexImage3DEXT", 13, -1 },
11487ec681f3Smrg   { "glCompressedMultiTexSubImage1DEXT", 13, -1 },
11497ec681f3Smrg   { "glCompressedMultiTexSubImage2DEXT", 13, -1 },
11507ec681f3Smrg   { "glCompressedMultiTexSubImage3DEXT", 13, -1 },
11517ec681f3Smrg   { "glGetCompressedMultiTexImageEXT", 13, -1 },
11527ec681f3Smrg   { "glMatrixLoadTransposefEXT", 13, -1 },
11537ec681f3Smrg   { "glMatrixLoadTransposedEXT", 13, -1 },
11547ec681f3Smrg   { "glMatrixMultTransposefEXT", 13, -1 },
11557ec681f3Smrg   { "glMatrixMultTransposedEXT", 13, -1 },
11567ec681f3Smrg   /* GL_EXT_direct_state_access - GL 1.5 */
11577ec681f3Smrg   { "glNamedBufferDataEXT", 15, -1 },
11587ec681f3Smrg   { "glNamedBufferSubDataEXT", 15, -1 },
11597ec681f3Smrg   { "glMapNamedBufferEXT", 15, -1 },
11607ec681f3Smrg   { "glUnmapNamedBufferEXT", 15, -1 },
11617ec681f3Smrg   { "glGetNamedBufferParameterivEXT", 15, -1 },
11627ec681f3Smrg   { "glGetNamedBufferPointervEXT", 15, -1 },
11637ec681f3Smrg   { "glGetNamedBufferSubDataEXT", 15, -1 },
11647ec681f3Smrg   /* GL_EXT_direct_state_access - GL 2.0 */
11657ec681f3Smrg   /* Added glProgramUniform*EXT functions are aliases */
11667ec681f3Smrg   /* GL_EXT_direct_state_access - GL 2.1 */
11677ec681f3Smrg   /* Added glProgramUniformMAtrix*EXT functions are aliases */
11687ec681f3Smrg   /* GL_EXT_direct_state_access - EXT_texture_buffer_object */
11697ec681f3Smrg   { "glTextureBufferEXT", 10, -1 },
11707ec681f3Smrg   { "glMultiTexBufferEXT", 10, -1 },
11717ec681f3Smrg   /* GL_EXT_direct_state_access - EXT_texture_integer */
11727ec681f3Smrg   { "glTextureParameterIivEXT", 10, -1 },
11737ec681f3Smrg   { "glTextureParameterIuivEXT", 10, -1 },
11747ec681f3Smrg   { "glGetTextureParameterIivEXT", 10, -1 },
11757ec681f3Smrg   { "glGetTextureParameterIuivEXT", 10, -1 },
11767ec681f3Smrg   { "glMultiTexParameterIivEXT", 10, -1 },
11777ec681f3Smrg   { "glMultiTexParameterIuivEXT", 10, -1 },
11787ec681f3Smrg   { "glGetMultiTexParameterIivEXT", 10, -1 },
11797ec681f3Smrg   { "glGetMultiTexParameterIuivEXT", 10, -1 },
11807ec681f3Smrg   /* GL_EXT_direct_state_access - EXT_gpu_shader4 */
11817ec681f3Smrg   /* Added glProgramUniform*u*EXT functions are aliases */
11827ec681f3Smrg   /* GL_EXT_direct_state_access - EXT_gpu_program_parameters */
11837ec681f3Smrg   { "glNamedProgramLocalParameters4fvEXT", 10, -1 },
11847ec681f3Smrg   /* GL_EXT_direct_state_access - GL 3.0 */
11857ec681f3Smrg   { "glNamedRenderbufferStorageEXT", 30, -1 },
11867ec681f3Smrg   { "glGetNamedRenderbufferParameterivEXT", 30, -1 },
11877ec681f3Smrg   { "glNamedRenderbufferStorageMultisampleEXT", 30, -1 },
11887ec681f3Smrg   { "glCheckNamedFramebufferStatusEXT", 30, -1 },
11897ec681f3Smrg   { "glNamedFramebufferTexture1DEXT", 30, -1 },
11907ec681f3Smrg   { "glNamedFramebufferTexture2DEXT", 30, -1 },
11917ec681f3Smrg   { "glNamedFramebufferTexture3DEXT", 30, -1 },
11927ec681f3Smrg   { "glNamedFramebufferRenderbufferEXT", 30, -1 },
11937ec681f3Smrg   { "glGetNamedFramebufferAttachmentParameterivEXT", 30, -1 },
11947ec681f3Smrg   { "glGenerateTextureMipmapEXT", 30, -1 },
11957ec681f3Smrg   { "glGenerateMultiTexMipmapEXT", 30, -1 },
11967ec681f3Smrg   { "glFramebufferDrawBufferEXT", 30, -1 },
11977ec681f3Smrg   { "glFramebufferDrawBuffersEXT", 30, -1 },
11987ec681f3Smrg   { "glFramebufferReadBufferEXT", 30, -1 },
11997ec681f3Smrg   { "glGetFramebufferParameterivEXT", 30, -1 },
12007ec681f3Smrg   { "glNamedCopyBufferSubDataEXT", 30, -1 },
12017ec681f3Smrg   { "glVertexArrayVertexOffsetEXT", 30, -1 },
12027ec681f3Smrg   { "glVertexArrayColorOffsetEXT", 30, -1 },
12037ec681f3Smrg   { "glVertexArrayEdgeFlagOffsetEXT", 30, -1 },
12047ec681f3Smrg   { "glVertexArrayIndexOffsetEXT", 30, -1 },
12057ec681f3Smrg   { "glVertexArrayNormalOffsetEXT", 30, -1 },
12067ec681f3Smrg   { "glVertexArrayTexCoordOffsetEXT", 30, -1 },
12077ec681f3Smrg   { "glVertexArrayMultiTexCoordOffsetEXT", 30, -1 },
12087ec681f3Smrg   { "glVertexArrayFogCoordOffsetEXT", 30, -1 },
12097ec681f3Smrg   { "glVertexArraySecondaryColorOffsetEXT", 30, -1 },
12107ec681f3Smrg   { "glVertexArrayVertexAttribOffsetEXT", 30, -1 },
12117ec681f3Smrg   { "glVertexArrayVertexAttribIOffsetEXT", 30, -1 },
12127ec681f3Smrg   { "glEnableVertexArrayEXT", 30, -1 },
12137ec681f3Smrg   { "glDisableVertexArrayEXT", 30, -1 },
12147ec681f3Smrg   { "glEnableVertexArrayAttribEXT", 30, -1 },
12157ec681f3Smrg   { "glDisableVertexArrayAttribEXT", 30, -1 },
12167ec681f3Smrg   { "glGetVertexArrayIntegervEXT", 30, -1 },
12177ec681f3Smrg   { "glGetVertexArrayPointervEXT", 30, -1 },
12187ec681f3Smrg   { "glGetVertexArrayIntegeri_vEXT", 30, -1 },
12197ec681f3Smrg   { "glGetVertexArrayPointeri_vEXT", 30, -1 },
12207ec681f3Smrg   { "glMapNamedBufferRangeEXT", 30, -1 },
12217ec681f3Smrg   { "glFlushMappedNamedBufferRangeEXT", 30, -1 },
12227ec681f3Smrg
1223af69d88dSmrg   /* GL_ARB_internalformat_query */
1224af69d88dSmrg   { "glGetInternalformativ", 30, -1 },
1225af69d88dSmrg
122601e04c3fSmrg   /* GL_ARB_internalformat_query */
122701e04c3fSmrg   { "glGetInternalformati64v", 30, -1 },
122801e04c3fSmrg
1229af69d88dSmrg   /* GL_ARB_multi_bind */
1230af69d88dSmrg   { "glBindBuffersBase", 44, -1 },
1231af69d88dSmrg   { "glBindBuffersRange", 44, -1 },
1232af69d88dSmrg   { "glBindTextures", 44, -1 },
1233af69d88dSmrg   { "glBindSamplers", 44, -1 },
1234af69d88dSmrg   { "glBindImageTextures", 44, -1 },
1235af69d88dSmrg   { "glBindVertexBuffers", 44, -1 },
1236af69d88dSmrg
12377ec681f3Smrg   /* GL_ARB_shading_language_include */
12387ec681f3Smrg   { "glNamedStringARB", 20, -1 },
12397ec681f3Smrg   { "glDeleteNamedStringARB", 20, -1 },
12407ec681f3Smrg   { "glCompileShaderIncludeARB", 20, -1 },
12417ec681f3Smrg   { "glIsNamedStringARB", 20, -1 },
12427ec681f3Smrg   { "glGetNamedStringARB", 20, -1 },
12437ec681f3Smrg   { "glGetNamedStringivARB", 20, -1 },
12447ec681f3Smrg
1245af69d88dSmrg   /* GL_KHR_debug/GL_ARB_debug_output */
1246af69d88dSmrg   { "glPushDebugGroup", 11, -1 },
1247af69d88dSmrg   { "glPopDebugGroup", 11, -1 },
1248af69d88dSmrg   { "glDebugMessageCallback", 11, -1 },
1249af69d88dSmrg   { "glDebugMessageControl", 11, -1 },
1250af69d88dSmrg   { "glDebugMessageInsert", 11, -1 },
1251af69d88dSmrg   { "glGetDebugMessageLog", 11, -1 },
1252af69d88dSmrg   { "glGetObjectLabel", 11, -1 },
1253af69d88dSmrg   { "glGetObjectPtrLabel", 11, -1 },
1254af69d88dSmrg   { "glObjectLabel", 11, -1 },
1255af69d88dSmrg   { "glObjectPtrLabel", 11, -1 },
1256af69d88dSmrg   /* aliased versions checked above */
1257af69d88dSmrg   //{ "glDebugMessageControlARB", 11, -1 },
1258af69d88dSmrg   //{ "glDebugMessageInsertARB", 11, -1 },
1259af69d88dSmrg   //{ "glDebugMessageCallbackARB", 11, -1 },
1260af69d88dSmrg   //{ "glGetDebugMessageLogARB", 11, -1 },
1261af69d88dSmrg
1262af69d88dSmrg   /* GL_AMD_performance_monitor */
1263af69d88dSmrg   { "glGetPerfMonitorGroupsAMD", 11, -1 },
1264af69d88dSmrg   { "glGetPerfMonitorCountersAMD", 11, -1 },
1265af69d88dSmrg   { "glGetPerfMonitorGroupStringAMD", 11, -1 },
1266af69d88dSmrg   { "glGetPerfMonitorCounterStringAMD", 11, -1 },
1267af69d88dSmrg   { "glGetPerfMonitorCounterInfoAMD", 11, -1 },
1268af69d88dSmrg   { "glGenPerfMonitorsAMD", 11, -1 },
1269af69d88dSmrg   { "glDeletePerfMonitorsAMD", 11, -1 },
1270af69d88dSmrg   { "glSelectPerfMonitorCountersAMD", 11, -1 },
1271af69d88dSmrg   { "glBeginPerfMonitorAMD", 11, -1 },
1272af69d88dSmrg   { "glEndPerfMonitorAMD", 11, -1 },
1273af69d88dSmrg   { "glGetPerfMonitorCounterDataAMD", 11, -1 },
1274af69d88dSmrg
1275af69d88dSmrg   /* GL_INTEL_performance_query */
1276af69d88dSmrg   { "glGetFirstPerfQueryIdINTEL", 30, -1 },
1277af69d88dSmrg   { "glGetNextPerfQueryIdINTEL", 30, -1 },
1278af69d88dSmrg   { "glGetPerfQueryIdByNameINTEL", 30, -1 },
1279af69d88dSmrg   { "glGetPerfQueryInfoINTEL", 30, -1 },
1280af69d88dSmrg   { "glGetPerfCounterInfoINTEL", 30, -1 },
1281af69d88dSmrg   { "glCreatePerfQueryINTEL", 30, -1 },
1282af69d88dSmrg   { "glDeletePerfQueryINTEL", 30, -1 },
1283af69d88dSmrg   { "glBeginPerfQueryINTEL", 30, -1 },
1284af69d88dSmrg   { "glEndPerfQueryINTEL", 30, -1 },
1285af69d88dSmrg   { "glGetPerfQueryDataINTEL", 30, -1 },
1286af69d88dSmrg
1287af69d88dSmrg   /* GL_NV_vdpau_interop */
1288af69d88dSmrg   { "glVDPAUInitNV", 11, -1 },
1289af69d88dSmrg   { "glVDPAUFiniNV", 11, -1 },
1290af69d88dSmrg   { "glVDPAURegisterVideoSurfaceNV", 11, -1 },
1291af69d88dSmrg   { "glVDPAURegisterOutputSurfaceNV", 11, -1 },
1292af69d88dSmrg   { "glVDPAUIsSurfaceNV", 11, -1 },
1293af69d88dSmrg   { "glVDPAUUnregisterSurfaceNV", 11, -1 },
1294af69d88dSmrg   { "glVDPAUGetSurfaceivNV", 11, -1 },
1295af69d88dSmrg   { "glVDPAUSurfaceAccessNV", 11, -1 },
1296af69d88dSmrg   { "glVDPAUMapSurfacesNV", 11, -1 },
1297af69d88dSmrg   { "glVDPAUUnmapSurfacesNV", 11, -1 },
1298af69d88dSmrg
1299af69d88dSmrg   /* GL_ARB_buffer_storage */
1300af69d88dSmrg   { "glBufferStorage", 43, -1 },
13017ec681f3Smrg   { "glNamedBufferStorageEXT", 43, -1 },
1302af69d88dSmrg
1303af69d88dSmrg   /* GL_ARB_clear_texture */
1304af69d88dSmrg   { "glClearTexImage", 13, -1 },
1305af69d88dSmrg   { "glClearTexSubImage", 13, -1 },
1306af69d88dSmrg
130701e04c3fSmrg   /* GL_ARB_clip_control */
130801e04c3fSmrg   { "glClipControl", 45, -1 },
130901e04c3fSmrg
131001e04c3fSmrg   /* GL_ARB_compute_shader */
131101e04c3fSmrg   { "glDispatchCompute", 43, -1 },
131201e04c3fSmrg   { "glDispatchComputeIndirect", 43, -1 },
131301e04c3fSmrg
131401e04c3fSmrg   /* GL_ARB_compute_variable_group_size */
131501e04c3fSmrg   { "glDispatchComputeGroupSizeARB", 43, -1 },
131601e04c3fSmrg
131701e04c3fSmrg   /* GL_EXT_polygon_offset_clamp */
131801e04c3fSmrg   { "glPolygonOffsetClampEXT", 11, -1 },
131901e04c3fSmrg
132001e04c3fSmrg   /* GL_ARB_get_texture_sub_image */
132101e04c3fSmrg   { "glGetTextureSubImage", 20, -1 },
132201e04c3fSmrg   { "glGetCompressedTextureSubImage", 20, -1 },
132301e04c3fSmrg
132401e04c3fSmrg   /* GL_GREMEDY_string_marker */
132501e04c3fSmrg   { "glStringMarkerGREMEDY", 15, -1 },
132601e04c3fSmrg
132701e04c3fSmrg   /* GL_EXT_window_rectangles */
132801e04c3fSmrg   { "glWindowRectanglesEXT", 30, -1 },
132901e04c3fSmrg
133001e04c3fSmrg   /* GL_KHR_blend_equation_advanced */
133101e04c3fSmrg   { "glBlendBarrierKHR", 20, -1 },
133201e04c3fSmrg
133301e04c3fSmrg   /* GL_ARB_sparse_buffer */
133401e04c3fSmrg   { "glBufferPageCommitmentARB", 43, -1 },
133501e04c3fSmrg   { "glNamedBufferPageCommitmentARB", 43, -1 },
13367ec681f3Smrg   { "glNamedBufferPageCommitmentEXT", 43, -1 },
133701e04c3fSmrg
133801e04c3fSmrg   /* GL_ARB_bindless_texture */
133901e04c3fSmrg   { "glGetTextureHandleARB", 40, -1 },
134001e04c3fSmrg   { "glGetTextureSamplerHandleARB", 40, -1 },
134101e04c3fSmrg   { "glMakeTextureHandleResidentARB", 40, -1 },
134201e04c3fSmrg   { "glMakeTextureHandleNonResidentARB", 40, -1 },
134301e04c3fSmrg   { "glIsTextureHandleResidentARB", 40, -1 },
134401e04c3fSmrg   { "glGetImageHandleARB", 40, -1 },
134501e04c3fSmrg   { "glMakeImageHandleResidentARB", 40, -1 },
134601e04c3fSmrg   { "glMakeImageHandleNonResidentARB", 40, -1 },
134701e04c3fSmrg   { "glIsImageHandleResidentARB", 40, -1 },
134801e04c3fSmrg   { "glUniformHandleui64ARB", 40, -1 },
134901e04c3fSmrg   { "glUniformHandleui64vARB", 40, -1 },
135001e04c3fSmrg   { "glProgramUniformHandleui64ARB", 40, -1 },
135101e04c3fSmrg   { "glProgramUniformHandleui64vARB", 40, -1 },
135201e04c3fSmrg   { "glVertexAttribL1ui64ARB", 40, -1 },
135301e04c3fSmrg   { "glVertexAttribL1ui64vARB", 40, -1 },
135401e04c3fSmrg   { "glGetVertexAttribLui64vARB", 40, -1 },
135501e04c3fSmrg
135601e04c3fSmrg   /* GL_EXT_external_objects */
135701e04c3fSmrg   { "glGetUnsignedBytevEXT", 45, -1 },
135801e04c3fSmrg   { "glGetUnsignedBytei_vEXT", 45, -1 },
135901e04c3fSmrg   { "glDeleteMemoryObjectsEXT", 45, -1 },
136001e04c3fSmrg   { "glIsMemoryObjectEXT", 45, -1 },
136101e04c3fSmrg   { "glCreateMemoryObjectsEXT", 45, -1 },
136201e04c3fSmrg   { "glMemoryObjectParameterivEXT", 45, -1 },
136301e04c3fSmrg   { "glGetMemoryObjectParameterivEXT", 45, -1 },
136401e04c3fSmrg   { "glTexStorageMem2DEXT", 45, -1 },
136501e04c3fSmrg   { "glTexStorageMem2DMultisampleEXT", 45, -1 },
136601e04c3fSmrg   { "glTexStorageMem3DEXT", 45, -1 },
136701e04c3fSmrg   { "glTexStorageMem3DMultisampleEXT", 45, -1 },
136801e04c3fSmrg   { "glBufferStorageMemEXT", 45, -1 },
136901e04c3fSmrg   { "glTextureStorageMem2DEXT", 45, -1 },
137001e04c3fSmrg   { "glTextureStorageMem2DMultisampleEXT", 45, -1 },
137101e04c3fSmrg   { "glTextureStorageMem3DEXT", 45, -1 },
137201e04c3fSmrg   { "glTextureStorageMem3DMultisampleEXT", 45, -1 },
137301e04c3fSmrg   { "glNamedBufferStorageMemEXT", 45, -1 },
137401e04c3fSmrg   { "glTexStorageMem1DEXT", 45, -1 },
137501e04c3fSmrg   { "glTextureStorageMem1DEXT", 45, -1 },
137601e04c3fSmrg   { "glGenSemaphoresEXT", 45, -1 },
137701e04c3fSmrg   { "glDeleteSemaphoresEXT", 45, -1 },
137801e04c3fSmrg   { "glIsSemaphoreEXT", 45, -1 },
137901e04c3fSmrg   { "glSemaphoreParameterui64vEXT", 45, -1 },
138001e04c3fSmrg   { "glGetSemaphoreParameterui64vEXT", 45, -1 },
138101e04c3fSmrg   { "glWaitSemaphoreEXT", 45, -1 },
138201e04c3fSmrg   { "glSignalSemaphoreEXT", 45, -1 },
138301e04c3fSmrg
138401e04c3fSmrg   /* GL_EXT_external_objects_fd */
138501e04c3fSmrg   { "glImportMemoryFdEXT", 45, -1 },
138601e04c3fSmrg   { "glImportSemaphoreFdEXT", 45, -1 },
138701e04c3fSmrg
138801e04c3fSmrg   /* GL_ARB_gl_spirv */
138901e04c3fSmrg   { "glSpecializeShaderARB", 45, -1 },
139001e04c3fSmrg
139101e04c3fSmrg   /* GL_EXT_shader_framebuffer_fetch_non_coherent */
139201e04c3fSmrg   { "glFramebufferFetchBarrierEXT", 20, -1 },
139301e04c3fSmrg
139401e04c3fSmrg   /* GL_NV_conservative_raster */
139501e04c3fSmrg   { "glSubpixelPrecisionBiasNV", 10, -1 },
139601e04c3fSmrg
139701e04c3fSmrg   /* GL_NV_conservative_raster_dilate */
139801e04c3fSmrg   { "glConservativeRasterParameterfNV", 10, -1 },
139901e04c3fSmrg
140001e04c3fSmrg   /* GL_NV_conservative_raster_pre_snap_triangles */
140101e04c3fSmrg   { "glConservativeRasterParameteriNV", 10, -1 },
140201e04c3fSmrg
140301e04c3fSmrg   /* GL_ARB_sample_locations */
140401e04c3fSmrg   { "glFramebufferSampleLocationsfvARB", 30, -1 },
140501e04c3fSmrg   { "glNamedFramebufferSampleLocationsfvARB", 30, -1 },
140601e04c3fSmrg   { "glEvaluateDepthValuesARB", 30, -1 },
140701e04c3fSmrg
140801e04c3fSmrg   /* GL_ARB_indirect_parameters */
140901e04c3fSmrg   { "glMultiDrawArraysIndirectCountARB", 11, -1 },
141001e04c3fSmrg   { "glMultiDrawElementsIndirectCountARB", 11, -1 },
141101e04c3fSmrg
141201e04c3fSmrg   /* GL_AMD_framebuffer_multisample_advanced */
141301e04c3fSmrg   { "glRenderbufferStorageMultisampleAdvancedAMD", 11, -1 },
141401e04c3fSmrg   { "glNamedRenderbufferStorageMultisampleAdvancedAMD", 11, -1 },
141501e04c3fSmrg
1416b9abf16eSmaya   { "glMaxShaderCompilerThreadsKHR", 11, -1 },
1417b9abf16eSmaya
14187ec681f3Smrg   /* GL_EXT_shader_image_load_store */
14197ec681f3Smrg   { "glBindImageTextureEXT", 30, -1 },
14207ec681f3Smrg
14217ec681f3Smrg   /* GL_MESA_framebuffer_flip_y */
14227ec681f3Smrg   { "glFramebufferParameteriMESA", 43, -1 },
14237ec681f3Smrg   { "glGetFramebufferParameterivMESA", 43, -1 },
14247ec681f3Smrg
14257ec681f3Smrg   /* GL_ARB_gpu_shader_int64 */
14267ec681f3Smrg   { "glUniform1i64ARB", 40, -1 },
14277ec681f3Smrg   { "glUniform2i64ARB", 40, -1 },
14287ec681f3Smrg   { "glUniform3i64ARB", 40, -1 },
14297ec681f3Smrg   { "glUniform4i64ARB", 40, -1 },
14307ec681f3Smrg   { "glUniform1ui64ARB", 40, -1 },
14317ec681f3Smrg   { "glUniform2ui64ARB", 40, -1 },
14327ec681f3Smrg   { "glUniform3ui64ARB", 40, -1 },
14337ec681f3Smrg   { "glUniform4ui64ARB", 40, -1 },
14347ec681f3Smrg   { "glUniform1i64vARB", 40, -1 },
14357ec681f3Smrg   { "glUniform2i64vARB", 40, -1 },
14367ec681f3Smrg   { "glUniform3i64vARB", 40, -1 },
14377ec681f3Smrg   { "glUniform4i64vARB", 40, -1 },
14387ec681f3Smrg   { "glUniform1ui64vARB", 40, -1 },
14397ec681f3Smrg   { "glUniform2ui64vARB", 40, -1 },
14407ec681f3Smrg   { "glUniform3ui64vARB", 40, -1 },
14417ec681f3Smrg   { "glUniform4ui64vARB", 40, -1 },
14427ec681f3Smrg   { "glGetUniformi64vARB", 40, -1 },
14437ec681f3Smrg   { "glGetUniformui64vARB", 40, -1 },
14447ec681f3Smrg   { "glGetnUniformi64vARB", 40, -1 },
14457ec681f3Smrg   { "glGetnUniformui64vARB", 40, -1 },
14467ec681f3Smrg   { "glProgramUniform1i64ARB", 40, -1 },
14477ec681f3Smrg   { "glProgramUniform2i64ARB", 40, -1 },
14487ec681f3Smrg   { "glProgramUniform3i64ARB", 40, -1 },
14497ec681f3Smrg   { "glProgramUniform4i64ARB", 40, -1 },
14507ec681f3Smrg   { "glProgramUniform1ui64ARB", 40, -1 },
14517ec681f3Smrg   { "glProgramUniform2ui64ARB", 40, -1 },
14527ec681f3Smrg   { "glProgramUniform3ui64ARB", 40, -1 },
14537ec681f3Smrg   { "glProgramUniform4ui64ARB", 40, -1 },
14547ec681f3Smrg   { "glProgramUniform1i64vARB", 40, -1 },
14557ec681f3Smrg   { "glProgramUniform2i64vARB", 40, -1 },
14567ec681f3Smrg   { "glProgramUniform3i64vARB", 40, -1 },
14577ec681f3Smrg   { "glProgramUniform4i64vARB", 40, -1 },
14587ec681f3Smrg   { "glProgramUniform1ui64vARB", 40, -1 },
14597ec681f3Smrg   { "glProgramUniform2ui64vARB", 40, -1 },
14607ec681f3Smrg   { "glProgramUniform3ui64vARB", 40, -1 },
14617ec681f3Smrg   { "glProgramUniform4ui64vARB", 40, -1 },
14627ec681f3Smrg
14637ec681f3Smrg   /* GL_NV_viewport_swizzle */
14647ec681f3Smrg   { "glViewportSwizzleNV", 11, -1 },
14657ec681f3Smrg
14667ec681f3Smrg   /* ARB_ES3_2_compatibility */
14677ec681f3Smrg   { "glPrimitiveBoundingBoxARB", 45, -1 },
14687ec681f3Smrg
14697ec681f3Smrg   { "glInternalBufferSubDataCopyMESA", 11, -1 },
14707ec681f3Smrg   { "glInternalSetError", 20, -1 },
14717ec681f3Smrg
147201e04c3fSmrg   { NULL, 0, -1 }
147301e04c3fSmrg};
147401e04c3fSmrg
147501e04c3fSmrgconst struct function gl_compatibility_functions_possible[] = {
147601e04c3fSmrg   { "glNewList", 10, _gloffset_NewList },
147701e04c3fSmrg   { "glEndList", 10, _gloffset_EndList },
147801e04c3fSmrg   { "glCallList", 10, _gloffset_CallList },
147901e04c3fSmrg   { "glCallLists", 10, _gloffset_CallLists },
148001e04c3fSmrg   { "glDeleteLists", 10, _gloffset_DeleteLists },
148101e04c3fSmrg   { "glGenLists", 10, _gloffset_GenLists },
148201e04c3fSmrg   { "glListBase", 10, _gloffset_ListBase },
148301e04c3fSmrg   { "glBegin", 10, _gloffset_Begin },
148401e04c3fSmrg   { "glBitmap", 10, _gloffset_Bitmap },
148501e04c3fSmrg   { "glColor3b", 10, _gloffset_Color3b },
148601e04c3fSmrg   { "glColor3bv", 10, _gloffset_Color3bv },
148701e04c3fSmrg   { "glColor3d", 10, _gloffset_Color3d },
148801e04c3fSmrg   { "glColor3dv", 10, _gloffset_Color3dv },
148901e04c3fSmrg   { "glColor3f", 10, _gloffset_Color3f },
149001e04c3fSmrg   { "glColor3fv", 10, _gloffset_Color3fv },
149101e04c3fSmrg   { "glColor3i", 10, _gloffset_Color3i },
149201e04c3fSmrg   { "glColor3iv", 10, _gloffset_Color3iv },
149301e04c3fSmrg   { "glColor3s", 10, _gloffset_Color3s },
149401e04c3fSmrg   { "glColor3sv", 10, _gloffset_Color3sv },
149501e04c3fSmrg   { "glColor3ub", 10, _gloffset_Color3ub },
149601e04c3fSmrg   { "glColor3ubv", 10, _gloffset_Color3ubv },
149701e04c3fSmrg   { "glColor3ui", 10, _gloffset_Color3ui },
149801e04c3fSmrg   { "glColor3uiv", 10, _gloffset_Color3uiv },
149901e04c3fSmrg   { "glColor3us", 10, _gloffset_Color3us },
150001e04c3fSmrg   { "glColor3usv", 10, _gloffset_Color3usv },
150101e04c3fSmrg   { "glColor4b", 10, _gloffset_Color4b },
150201e04c3fSmrg   { "glColor4bv", 10, _gloffset_Color4bv },
150301e04c3fSmrg   { "glColor4d", 10, _gloffset_Color4d },
150401e04c3fSmrg   { "glColor4dv", 10, _gloffset_Color4dv },
150501e04c3fSmrg   { "glColor4f", 10, _gloffset_Color4f },
150601e04c3fSmrg   { "glColor4fv", 10, _gloffset_Color4fv },
150701e04c3fSmrg   { "glColor4i", 10, _gloffset_Color4i },
150801e04c3fSmrg   { "glColor4iv", 10, _gloffset_Color4iv },
150901e04c3fSmrg   { "glColor4s", 10, _gloffset_Color4s },
151001e04c3fSmrg   { "glColor4sv", 10, _gloffset_Color4sv },
151101e04c3fSmrg   { "glColor4ub", 10, _gloffset_Color4ub },
151201e04c3fSmrg   { "glColor4ubv", 10, _gloffset_Color4ubv },
151301e04c3fSmrg   { "glColor4ui", 10, _gloffset_Color4ui },
151401e04c3fSmrg   { "glColor4uiv", 10, _gloffset_Color4uiv },
151501e04c3fSmrg   { "glColor4us", 10, _gloffset_Color4us },
151601e04c3fSmrg   { "glColor4usv", 10, _gloffset_Color4usv },
151701e04c3fSmrg   { "glEdgeFlag", 10, _gloffset_EdgeFlag },
151801e04c3fSmrg   { "glEdgeFlagv", 10, _gloffset_EdgeFlagv },
151901e04c3fSmrg   { "glEnd", 10, _gloffset_End },
152001e04c3fSmrg   { "glIndexd", 10, _gloffset_Indexd },
152101e04c3fSmrg   { "glIndexdv", 10, _gloffset_Indexdv },
152201e04c3fSmrg   { "glIndexf", 10, _gloffset_Indexf },
152301e04c3fSmrg   { "glIndexfv", 10, _gloffset_Indexfv },
152401e04c3fSmrg   { "glIndexi", 10, _gloffset_Indexi },
152501e04c3fSmrg   { "glIndexiv", 10, _gloffset_Indexiv },
152601e04c3fSmrg   { "glIndexs", 10, _gloffset_Indexs },
152701e04c3fSmrg   { "glIndexsv", 10, _gloffset_Indexsv },
152801e04c3fSmrg   { "glNormal3b", 10, _gloffset_Normal3b },
152901e04c3fSmrg   { "glNormal3bv", 10, _gloffset_Normal3bv },
153001e04c3fSmrg   { "glNormal3d", 10, _gloffset_Normal3d },
153101e04c3fSmrg   { "glNormal3dv", 10, _gloffset_Normal3dv },
153201e04c3fSmrg   { "glNormal3f", 10, _gloffset_Normal3f },
153301e04c3fSmrg   { "glNormal3fv", 10, _gloffset_Normal3fv },
153401e04c3fSmrg   { "glNormal3i", 10, _gloffset_Normal3i },
153501e04c3fSmrg   { "glNormal3iv", 10, _gloffset_Normal3iv },
153601e04c3fSmrg   { "glNormal3s", 10, _gloffset_Normal3s },
153701e04c3fSmrg   { "glNormal3sv", 10, _gloffset_Normal3sv },
153801e04c3fSmrg   { "glRasterPos2d", 10, _gloffset_RasterPos2d },
153901e04c3fSmrg   { "glRasterPos2dv", 10, _gloffset_RasterPos2dv },
154001e04c3fSmrg   { "glRasterPos2f", 10, _gloffset_RasterPos2f },
154101e04c3fSmrg   { "glRasterPos2fv", 10, _gloffset_RasterPos2fv },
154201e04c3fSmrg   { "glRasterPos2i", 10, _gloffset_RasterPos2i },
154301e04c3fSmrg   { "glRasterPos2iv", 10, _gloffset_RasterPos2iv },
154401e04c3fSmrg   { "glRasterPos2s", 10, _gloffset_RasterPos2s },
154501e04c3fSmrg   { "glRasterPos2sv", 10, _gloffset_RasterPos2sv },
154601e04c3fSmrg   { "glRasterPos3d", 10, _gloffset_RasterPos3d },
154701e04c3fSmrg   { "glRasterPos3dv", 10, _gloffset_RasterPos3dv },
154801e04c3fSmrg   { "glRasterPos3f", 10, _gloffset_RasterPos3f },
154901e04c3fSmrg   { "glRasterPos3fv", 10, _gloffset_RasterPos3fv },
155001e04c3fSmrg   { "glRasterPos3i", 10, _gloffset_RasterPos3i },
155101e04c3fSmrg   { "glRasterPos3iv", 10, _gloffset_RasterPos3iv },
155201e04c3fSmrg   { "glRasterPos3s", 10, _gloffset_RasterPos3s },
155301e04c3fSmrg   { "glRasterPos3sv", 10, _gloffset_RasterPos3sv },
155401e04c3fSmrg   { "glRasterPos4d", 10, _gloffset_RasterPos4d },
155501e04c3fSmrg   { "glRasterPos4dv", 10, _gloffset_RasterPos4dv },
155601e04c3fSmrg   { "glRasterPos4f", 10, _gloffset_RasterPos4f },
155701e04c3fSmrg   { "glRasterPos4fv", 10, _gloffset_RasterPos4fv },
155801e04c3fSmrg   { "glRasterPos4i", 10, _gloffset_RasterPos4i },
155901e04c3fSmrg   { "glRasterPos4iv", 10, _gloffset_RasterPos4iv },
156001e04c3fSmrg   { "glRasterPos4s", 10, _gloffset_RasterPos4s },
156101e04c3fSmrg   { "glRasterPos4sv", 10, _gloffset_RasterPos4sv },
156201e04c3fSmrg   { "glRectd", 10, _gloffset_Rectd },
156301e04c3fSmrg   { "glRectdv", 10, _gloffset_Rectdv },
156401e04c3fSmrg   { "glRectf", 10, _gloffset_Rectf },
156501e04c3fSmrg   { "glRectfv", 10, _gloffset_Rectfv },
156601e04c3fSmrg   { "glRecti", 10, _gloffset_Recti },
156701e04c3fSmrg   { "glRectiv", 10, _gloffset_Rectiv },
156801e04c3fSmrg   { "glRects", 10, _gloffset_Rects },
156901e04c3fSmrg   { "glRectsv", 10, _gloffset_Rectsv },
157001e04c3fSmrg   { "glTexCoord1d", 10, _gloffset_TexCoord1d },
157101e04c3fSmrg   { "glTexCoord1dv", 10, _gloffset_TexCoord1dv },
157201e04c3fSmrg   { "glTexCoord1f", 10, _gloffset_TexCoord1f },
157301e04c3fSmrg   { "glTexCoord1fv", 10, _gloffset_TexCoord1fv },
157401e04c3fSmrg   { "glTexCoord1i", 10, _gloffset_TexCoord1i },
157501e04c3fSmrg   { "glTexCoord1iv", 10, _gloffset_TexCoord1iv },
157601e04c3fSmrg   { "glTexCoord1s", 10, _gloffset_TexCoord1s },
157701e04c3fSmrg   { "glTexCoord1sv", 10, _gloffset_TexCoord1sv },
157801e04c3fSmrg   { "glTexCoord2d", 10, _gloffset_TexCoord2d },
157901e04c3fSmrg   { "glTexCoord2dv", 10, _gloffset_TexCoord2dv },
158001e04c3fSmrg   { "glTexCoord2f", 10, _gloffset_TexCoord2f },
158101e04c3fSmrg   { "glTexCoord2fv", 10, _gloffset_TexCoord2fv },
158201e04c3fSmrg   { "glTexCoord2i", 10, _gloffset_TexCoord2i },
158301e04c3fSmrg   { "glTexCoord2iv", 10, _gloffset_TexCoord2iv },
158401e04c3fSmrg   { "glTexCoord2s", 10, _gloffset_TexCoord2s },
158501e04c3fSmrg   { "glTexCoord2sv", 10, _gloffset_TexCoord2sv },
158601e04c3fSmrg   { "glTexCoord3d", 10, _gloffset_TexCoord3d },
158701e04c3fSmrg   { "glTexCoord3dv", 10, _gloffset_TexCoord3dv },
158801e04c3fSmrg   { "glTexCoord3f", 10, _gloffset_TexCoord3f },
158901e04c3fSmrg   { "glTexCoord3fv", 10, _gloffset_TexCoord3fv },
159001e04c3fSmrg   { "glTexCoord3i", 10, _gloffset_TexCoord3i },
159101e04c3fSmrg   { "glTexCoord3iv", 10, _gloffset_TexCoord3iv },
159201e04c3fSmrg   { "glTexCoord3s", 10, _gloffset_TexCoord3s },
159301e04c3fSmrg   { "glTexCoord3sv", 10, _gloffset_TexCoord3sv },
159401e04c3fSmrg   { "glTexCoord4d", 10, _gloffset_TexCoord4d },
159501e04c3fSmrg   { "glTexCoord4dv", 10, _gloffset_TexCoord4dv },
159601e04c3fSmrg   { "glTexCoord4f", 10, _gloffset_TexCoord4f },
159701e04c3fSmrg   { "glTexCoord4fv", 10, _gloffset_TexCoord4fv },
159801e04c3fSmrg   { "glTexCoord4i", 10, _gloffset_TexCoord4i },
159901e04c3fSmrg   { "glTexCoord4iv", 10, _gloffset_TexCoord4iv },
160001e04c3fSmrg   { "glTexCoord4s", 10, _gloffset_TexCoord4s },
160101e04c3fSmrg   { "glTexCoord4sv", 10, _gloffset_TexCoord4sv },
160201e04c3fSmrg   { "glVertex2d", 10, _gloffset_Vertex2d },
160301e04c3fSmrg   { "glVertex2dv", 10, _gloffset_Vertex2dv },
160401e04c3fSmrg   { "glVertex2f", 10, _gloffset_Vertex2f },
160501e04c3fSmrg   { "glVertex2fv", 10, _gloffset_Vertex2fv },
160601e04c3fSmrg   { "glVertex2i", 10, _gloffset_Vertex2i },
160701e04c3fSmrg   { "glVertex2iv", 10, _gloffset_Vertex2iv },
160801e04c3fSmrg   { "glVertex2s", 10, _gloffset_Vertex2s },
160901e04c3fSmrg   { "glVertex2sv", 10, _gloffset_Vertex2sv },
161001e04c3fSmrg   { "glVertex3d", 10, _gloffset_Vertex3d },
161101e04c3fSmrg   { "glVertex3dv", 10, _gloffset_Vertex3dv },
161201e04c3fSmrg   { "glVertex3f", 10, _gloffset_Vertex3f },
161301e04c3fSmrg   { "glVertex3fv", 10, _gloffset_Vertex3fv },
161401e04c3fSmrg   { "glVertex3i", 10, _gloffset_Vertex3i },
161501e04c3fSmrg   { "glVertex3iv", 10, _gloffset_Vertex3iv },
161601e04c3fSmrg   { "glVertex3s", 10, _gloffset_Vertex3s },
161701e04c3fSmrg   { "glVertex3sv", 10, _gloffset_Vertex3sv },
161801e04c3fSmrg   { "glVertex4d", 10, _gloffset_Vertex4d },
161901e04c3fSmrg   { "glVertex4dv", 10, _gloffset_Vertex4dv },
162001e04c3fSmrg   { "glVertex4f", 10, _gloffset_Vertex4f },
162101e04c3fSmrg   { "glVertex4fv", 10, _gloffset_Vertex4fv },
162201e04c3fSmrg   { "glVertex4i", 10, _gloffset_Vertex4i },
162301e04c3fSmrg   { "glVertex4iv", 10, _gloffset_Vertex4iv },
162401e04c3fSmrg   { "glVertex4s", 10, _gloffset_Vertex4s },
162501e04c3fSmrg   { "glVertex4sv", 10, _gloffset_Vertex4sv },
162601e04c3fSmrg   { "glClipPlane", 10, _gloffset_ClipPlane },
162701e04c3fSmrg   { "glColorMaterial", 10, _gloffset_ColorMaterial },
162801e04c3fSmrg   { "glFogf", 10, _gloffset_Fogf },
162901e04c3fSmrg   { "glFogfv", 10, _gloffset_Fogfv },
163001e04c3fSmrg   { "glFogi", 10, _gloffset_Fogi },
163101e04c3fSmrg   { "glFogiv", 10, _gloffset_Fogiv },
163201e04c3fSmrg   { "glLightf", 10, _gloffset_Lightf },
163301e04c3fSmrg   { "glLightfv", 10, _gloffset_Lightfv },
163401e04c3fSmrg   { "glLighti", 10, _gloffset_Lighti },
163501e04c3fSmrg   { "glLightiv", 10, _gloffset_Lightiv },
163601e04c3fSmrg   { "glLightModelf", 10, _gloffset_LightModelf },
163701e04c3fSmrg   { "glLightModelfv", 10, _gloffset_LightModelfv },
163801e04c3fSmrg   { "glLightModeli", 10, _gloffset_LightModeli },
163901e04c3fSmrg   { "glLightModeliv", 10, _gloffset_LightModeliv },
164001e04c3fSmrg   { "glLineStipple", 10, _gloffset_LineStipple },
164101e04c3fSmrg   { "glMaterialf", 10, _gloffset_Materialf },
164201e04c3fSmrg   { "glMaterialfv", 10, _gloffset_Materialfv },
164301e04c3fSmrg   { "glMateriali", 10, _gloffset_Materiali },
164401e04c3fSmrg   { "glMaterialiv", 10, _gloffset_Materialiv },
164501e04c3fSmrg   { "glPolygonStipple", 10, _gloffset_PolygonStipple },
164601e04c3fSmrg   { "glShadeModel", 10, _gloffset_ShadeModel },
164701e04c3fSmrg   { "glTexEnvf", 10, _gloffset_TexEnvf },
164801e04c3fSmrg   { "glTexEnvfv", 10, _gloffset_TexEnvfv },
164901e04c3fSmrg   { "glTexEnvi", 10, _gloffset_TexEnvi },
165001e04c3fSmrg   { "glTexEnviv", 10, _gloffset_TexEnviv },
165101e04c3fSmrg   { "glTexGend", 10, _gloffset_TexGend },
165201e04c3fSmrg   { "glTexGendv", 10, _gloffset_TexGendv },
165301e04c3fSmrg   { "glTexGenf", 10, _gloffset_TexGenf },
165401e04c3fSmrg   { "glTexGenfv", 10, _gloffset_TexGenfv },
165501e04c3fSmrg   { "glTexGeni", 10, _gloffset_TexGeni },
165601e04c3fSmrg   { "glTexGeniv", 10, _gloffset_TexGeniv },
165701e04c3fSmrg   { "glFeedbackBuffer", 10, _gloffset_FeedbackBuffer },
165801e04c3fSmrg   { "glSelectBuffer", 10, _gloffset_SelectBuffer },
165901e04c3fSmrg   { "glRenderMode", 10, _gloffset_RenderMode },
166001e04c3fSmrg   { "glInitNames", 10, _gloffset_InitNames },
166101e04c3fSmrg   { "glLoadName", 10, _gloffset_LoadName },
166201e04c3fSmrg   { "glPassThrough", 10, _gloffset_PassThrough },
166301e04c3fSmrg   { "glPopName", 10, _gloffset_PopName },
166401e04c3fSmrg   { "glPushName", 10, _gloffset_PushName },
166501e04c3fSmrg   { "glClearAccum", 10, _gloffset_ClearAccum },
166601e04c3fSmrg   { "glClearIndex", 10, _gloffset_ClearIndex },
166701e04c3fSmrg   { "glIndexMask", 10, _gloffset_IndexMask },
166801e04c3fSmrg   { "glAccum", 10, _gloffset_Accum },
166901e04c3fSmrg   { "glPopAttrib", 10, _gloffset_PopAttrib },
167001e04c3fSmrg   { "glPushAttrib", 10, _gloffset_PushAttrib },
167101e04c3fSmrg   { "glMap1d", 10, _gloffset_Map1d },
167201e04c3fSmrg   { "glMap1f", 10, _gloffset_Map1f },
167301e04c3fSmrg   { "glMap2d", 10, _gloffset_Map2d },
167401e04c3fSmrg   { "glMap2f", 10, _gloffset_Map2f },
167501e04c3fSmrg   { "glMapGrid1d", 10, _gloffset_MapGrid1d },
167601e04c3fSmrg   { "glMapGrid1f", 10, _gloffset_MapGrid1f },
167701e04c3fSmrg   { "glMapGrid2d", 10, _gloffset_MapGrid2d },
167801e04c3fSmrg   { "glMapGrid2f", 10, _gloffset_MapGrid2f },
167901e04c3fSmrg   { "glEvalCoord1d", 10, _gloffset_EvalCoord1d },
168001e04c3fSmrg   { "glEvalCoord1dv", 10, _gloffset_EvalCoord1dv },
168101e04c3fSmrg   { "glEvalCoord1f", 10, _gloffset_EvalCoord1f },
168201e04c3fSmrg   { "glEvalCoord1fv", 10, _gloffset_EvalCoord1fv },
168301e04c3fSmrg   { "glEvalCoord2d", 10, _gloffset_EvalCoord2d },
168401e04c3fSmrg   { "glEvalCoord2dv", 10, _gloffset_EvalCoord2dv },
168501e04c3fSmrg   { "glEvalCoord2f", 10, _gloffset_EvalCoord2f },
168601e04c3fSmrg   { "glEvalCoord2fv", 10, _gloffset_EvalCoord2fv },
168701e04c3fSmrg   { "glEvalMesh1", 10, _gloffset_EvalMesh1 },
168801e04c3fSmrg   { "glEvalPoint1", 10, _gloffset_EvalPoint1 },
168901e04c3fSmrg   { "glEvalMesh2", 10, _gloffset_EvalMesh2 },
169001e04c3fSmrg   { "glEvalPoint2", 10, _gloffset_EvalPoint2 },
169101e04c3fSmrg   { "glAlphaFunc", 10, _gloffset_AlphaFunc },
169201e04c3fSmrg   { "glPixelZoom", 10, _gloffset_PixelZoom },
169301e04c3fSmrg   { "glPixelTransferf", 10, _gloffset_PixelTransferf },
169401e04c3fSmrg   { "glPixelTransferi", 10, _gloffset_PixelTransferi },
169501e04c3fSmrg   { "glPixelMapfv", 10, _gloffset_PixelMapfv },
169601e04c3fSmrg   { "glPixelMapuiv", 10, _gloffset_PixelMapuiv },
169701e04c3fSmrg   { "glPixelMapusv", 10, _gloffset_PixelMapusv },
169801e04c3fSmrg   { "glCopyPixels", 10, _gloffset_CopyPixels },
169901e04c3fSmrg   { "glDrawPixels", 10, _gloffset_DrawPixels },
170001e04c3fSmrg   { "glGetClipPlane", 10, _gloffset_GetClipPlane },
170101e04c3fSmrg   { "glGetLightfv", 10, _gloffset_GetLightfv },
170201e04c3fSmrg   { "glGetLightiv", 10, _gloffset_GetLightiv },
170301e04c3fSmrg   { "glGetMapdv", 10, _gloffset_GetMapdv },
170401e04c3fSmrg   { "glGetMapfv", 10, _gloffset_GetMapfv },
170501e04c3fSmrg   { "glGetMapiv", 10, _gloffset_GetMapiv },
170601e04c3fSmrg   { "glGetMaterialfv", 10, _gloffset_GetMaterialfv },
170701e04c3fSmrg   { "glGetMaterialiv", 10, _gloffset_GetMaterialiv },
170801e04c3fSmrg   { "glGetPixelMapfv", 10, _gloffset_GetPixelMapfv },
170901e04c3fSmrg   { "glGetPixelMapuiv", 10, _gloffset_GetPixelMapuiv },
171001e04c3fSmrg   { "glGetPixelMapusv", 10, _gloffset_GetPixelMapusv },
171101e04c3fSmrg   { "glGetPolygonStipple", 10, _gloffset_GetPolygonStipple },
171201e04c3fSmrg   { "glGetTexEnvfv", 10, _gloffset_GetTexEnvfv },
171301e04c3fSmrg   { "glGetTexEnviv", 10, _gloffset_GetTexEnviv },
171401e04c3fSmrg   { "glGetTexGendv", 10, _gloffset_GetTexGendv },
171501e04c3fSmrg   { "glGetTexGenfv", 10, _gloffset_GetTexGenfv },
171601e04c3fSmrg   { "glGetTexGeniv", 10, _gloffset_GetTexGeniv },
171701e04c3fSmrg   { "glIsList", 10, _gloffset_IsList },
171801e04c3fSmrg   { "glFrustum", 10, _gloffset_Frustum },
171901e04c3fSmrg   { "glLoadIdentity", 10, _gloffset_LoadIdentity },
172001e04c3fSmrg   { "glLoadMatrixf", 10, _gloffset_LoadMatrixf },
172101e04c3fSmrg   { "glLoadMatrixd", 10, _gloffset_LoadMatrixd },
172201e04c3fSmrg   { "glMatrixMode", 10, _gloffset_MatrixMode },
172301e04c3fSmrg   { "glMultMatrixf", 10, _gloffset_MultMatrixf },
172401e04c3fSmrg   { "glMultMatrixd", 10, _gloffset_MultMatrixd },
172501e04c3fSmrg   { "glOrtho", 10, _gloffset_Ortho },
172601e04c3fSmrg   { "glPopMatrix", 10, _gloffset_PopMatrix },
172701e04c3fSmrg   { "glPushMatrix", 10, _gloffset_PushMatrix },
172801e04c3fSmrg   { "glRotated", 10, _gloffset_Rotated },
172901e04c3fSmrg   { "glRotatef", 10, _gloffset_Rotatef },
173001e04c3fSmrg   { "glScaled", 10, _gloffset_Scaled },
173101e04c3fSmrg   { "glScalef", 10, _gloffset_Scalef },
173201e04c3fSmrg   { "glTranslated", 10, _gloffset_Translated },
173301e04c3fSmrg   { "glTranslatef", 10, _gloffset_Translatef },
173401e04c3fSmrg   { "glArrayElement", 10, _gloffset_ArrayElement },
173501e04c3fSmrg   { "glColorPointer", 10, _gloffset_ColorPointer },
173601e04c3fSmrg   { "glDisableClientState", 10, _gloffset_DisableClientState },
173701e04c3fSmrg   { "glEdgeFlagPointer", 10, _gloffset_EdgeFlagPointer },
173801e04c3fSmrg   { "glEnableClientState", 10, _gloffset_EnableClientState },
173901e04c3fSmrg   { "glIndexPointer", 10, _gloffset_IndexPointer },
174001e04c3fSmrg   { "glInterleavedArrays", 10, _gloffset_InterleavedArrays },
174101e04c3fSmrg   { "glNormalPointer", 10, _gloffset_NormalPointer },
174201e04c3fSmrg   { "glTexCoordPointer", 10, _gloffset_TexCoordPointer },
174301e04c3fSmrg   { "glVertexPointer", 10, _gloffset_VertexPointer },
174401e04c3fSmrg   { "glAreTexturesResident", 10, _gloffset_AreTexturesResident },
174501e04c3fSmrg   { "glPrioritizeTextures", 10, _gloffset_PrioritizeTextures },
174601e04c3fSmrg   { "glIndexub", 10, _gloffset_Indexub },
174701e04c3fSmrg   { "glIndexubv", 10, _gloffset_Indexubv },
174801e04c3fSmrg   { "glPopClientAttrib", 10, _gloffset_PopClientAttrib },
174901e04c3fSmrg   { "glPushClientAttrib", 10, _gloffset_PushClientAttrib },
175001e04c3fSmrg   { "glColorTable", 10, _gloffset_ColorTable },
175101e04c3fSmrg   { "glColorTableParameterfv", 10, _gloffset_ColorTableParameterfv },
175201e04c3fSmrg   { "glColorTableParameteriv", 10, _gloffset_ColorTableParameteriv },
175301e04c3fSmrg   { "glCopyColorTable", 10, _gloffset_CopyColorTable },
175401e04c3fSmrg   { "glGetColorTable", 10, _gloffset_GetColorTable },
175501e04c3fSmrg   { "glGetColorTableParameterfv", 10, _gloffset_GetColorTableParameterfv },
175601e04c3fSmrg   { "glGetColorTableParameteriv", 10, _gloffset_GetColorTableParameteriv },
175701e04c3fSmrg   { "glColorSubTable", 10, _gloffset_ColorSubTable },
175801e04c3fSmrg   { "glCopyColorSubTable", 10, _gloffset_CopyColorSubTable },
175901e04c3fSmrg   { "glConvolutionFilter1D", 10, _gloffset_ConvolutionFilter1D },
176001e04c3fSmrg   { "glConvolutionFilter2D", 10, _gloffset_ConvolutionFilter2D },
176101e04c3fSmrg   { "glConvolutionParameterf", 10, _gloffset_ConvolutionParameterf },
176201e04c3fSmrg   { "glConvolutionParameterfv", 10, _gloffset_ConvolutionParameterfv },
176301e04c3fSmrg   { "glConvolutionParameteri", 10, _gloffset_ConvolutionParameteri },
176401e04c3fSmrg   { "glConvolutionParameteriv", 10, _gloffset_ConvolutionParameteriv },
176501e04c3fSmrg   { "glCopyConvolutionFilter1D", 10, _gloffset_CopyConvolutionFilter1D },
176601e04c3fSmrg   { "glCopyConvolutionFilter2D", 10, _gloffset_CopyConvolutionFilter2D },
176701e04c3fSmrg   { "glGetConvolutionFilter", 10, _gloffset_GetConvolutionFilter },
176801e04c3fSmrg   { "glGetConvolutionParameterfv", 10, _gloffset_GetConvolutionParameterfv },
176901e04c3fSmrg   { "glGetConvolutionParameteriv", 10, _gloffset_GetConvolutionParameteriv },
177001e04c3fSmrg   { "glGetSeparableFilter", 10, _gloffset_GetSeparableFilter },
177101e04c3fSmrg   { "glSeparableFilter2D", 10, _gloffset_SeparableFilter2D },
177201e04c3fSmrg   { "glGetHistogram", 10, _gloffset_GetHistogram },
177301e04c3fSmrg   { "glGetHistogramParameterfv", 10, _gloffset_GetHistogramParameterfv },
177401e04c3fSmrg   { "glGetHistogramParameteriv", 10, _gloffset_GetHistogramParameteriv },
177501e04c3fSmrg   { "glGetMinmax", 10, _gloffset_GetMinmax },
177601e04c3fSmrg   { "glGetMinmaxParameterfv", 10, _gloffset_GetMinmaxParameterfv },
177701e04c3fSmrg   { "glGetMinmaxParameteriv", 10, _gloffset_GetMinmaxParameteriv },
177801e04c3fSmrg   { "glHistogram", 10, _gloffset_Histogram },
177901e04c3fSmrg   { "glMinmax", 10, _gloffset_Minmax },
178001e04c3fSmrg   { "glResetHistogram", 10, _gloffset_ResetHistogram },
178101e04c3fSmrg   { "glResetMinmax", 10, _gloffset_ResetMinmax },
178201e04c3fSmrg   { "glClientActiveTexture", 10, _gloffset_ClientActiveTexture },
178301e04c3fSmrg   { "glMultiTexCoord1d", 10, _gloffset_MultiTexCoord1d },
178401e04c3fSmrg   { "glMultiTexCoord1dv", 10, _gloffset_MultiTexCoord1dv },
178501e04c3fSmrg   { "glMultiTexCoord1f", 10, _gloffset_MultiTexCoord1fARB },
178601e04c3fSmrg   { "glMultiTexCoord1fv", 10, _gloffset_MultiTexCoord1fvARB },
178701e04c3fSmrg   { "glMultiTexCoord1i", 10, _gloffset_MultiTexCoord1i },
178801e04c3fSmrg   { "glMultiTexCoord1iv", 10, _gloffset_MultiTexCoord1iv },
178901e04c3fSmrg   { "glMultiTexCoord1s", 10, _gloffset_MultiTexCoord1s },
179001e04c3fSmrg   { "glMultiTexCoord1sv", 10, _gloffset_MultiTexCoord1sv },
179101e04c3fSmrg   { "glMultiTexCoord2d", 10, _gloffset_MultiTexCoord2d },
179201e04c3fSmrg   { "glMultiTexCoord2dv", 10, _gloffset_MultiTexCoord2dv },
179301e04c3fSmrg   { "glMultiTexCoord2f", 10, _gloffset_MultiTexCoord2fARB },
179401e04c3fSmrg   { "glMultiTexCoord2fv", 10, _gloffset_MultiTexCoord2fvARB },
179501e04c3fSmrg   { "glMultiTexCoord2i", 10, _gloffset_MultiTexCoord2i },
179601e04c3fSmrg   { "glMultiTexCoord2iv", 10, _gloffset_MultiTexCoord2iv },
179701e04c3fSmrg   { "glMultiTexCoord2s", 10, _gloffset_MultiTexCoord2s },
179801e04c3fSmrg   { "glMultiTexCoord2sv", 10, _gloffset_MultiTexCoord2sv },
179901e04c3fSmrg   { "glMultiTexCoord3d", 10, _gloffset_MultiTexCoord3d },
180001e04c3fSmrg   { "glMultiTexCoord3dv", 10, _gloffset_MultiTexCoord3dv },
180101e04c3fSmrg   { "glMultiTexCoord3f", 10, _gloffset_MultiTexCoord3fARB },
180201e04c3fSmrg   { "glMultiTexCoord3fv", 10, _gloffset_MultiTexCoord3fvARB },
180301e04c3fSmrg   { "glMultiTexCoord3i", 10, _gloffset_MultiTexCoord3i },
180401e04c3fSmrg   { "glMultiTexCoord3iv", 10, _gloffset_MultiTexCoord3iv },
180501e04c3fSmrg   { "glMultiTexCoord3s", 10, _gloffset_MultiTexCoord3s },
180601e04c3fSmrg   { "glMultiTexCoord3sv", 10, _gloffset_MultiTexCoord3sv },
180701e04c3fSmrg   { "glMultiTexCoord4d", 10, _gloffset_MultiTexCoord4d },
180801e04c3fSmrg   { "glMultiTexCoord4dv", 10, _gloffset_MultiTexCoord4dv },
180901e04c3fSmrg   { "glMultiTexCoord4f", 10, _gloffset_MultiTexCoord4fARB },
181001e04c3fSmrg   { "glMultiTexCoord4fv", 10, _gloffset_MultiTexCoord4fvARB },
181101e04c3fSmrg   { "glMultiTexCoord4i", 10, _gloffset_MultiTexCoord4i },
181201e04c3fSmrg   { "glMultiTexCoord4iv", 10, _gloffset_MultiTexCoord4iv },
181301e04c3fSmrg   { "glMultiTexCoord4s", 10, _gloffset_MultiTexCoord4s },
181401e04c3fSmrg   { "glMultiTexCoord4sv", 10, _gloffset_MultiTexCoord4sv },
181501e04c3fSmrg   { "glLoadTransposeMatrixf", 10, -1 },
181601e04c3fSmrg   { "glLoadTransposeMatrixd", 10, -1 },
181701e04c3fSmrg   { "glMultTransposeMatrixf", 10, -1 },
181801e04c3fSmrg   { "glMultTransposeMatrixd", 10, -1 },
181901e04c3fSmrg   { "glFogCoordf", 10, -1 },
182001e04c3fSmrg   { "glFogCoordfv", 10, -1 },
182101e04c3fSmrg   { "glFogCoordd", 10, -1 },
182201e04c3fSmrg   { "glFogCoorddv", 10, -1 },
182301e04c3fSmrg   { "glFogCoordPointer", 10, -1 },
182401e04c3fSmrg   { "glSecondaryColor3b", 10, -1 },
182501e04c3fSmrg   { "glSecondaryColor3bv", 10, -1 },
182601e04c3fSmrg   { "glSecondaryColor3d", 10, -1 },
182701e04c3fSmrg   { "glSecondaryColor3dv", 10, -1 },
182801e04c3fSmrg   { "glSecondaryColor3f", 10, -1 },
182901e04c3fSmrg   { "glSecondaryColor3fv", 10, -1 },
183001e04c3fSmrg   { "glSecondaryColor3i", 10, -1 },
183101e04c3fSmrg   { "glSecondaryColor3iv", 10, -1 },
183201e04c3fSmrg   { "glSecondaryColor3s", 10, -1 },
183301e04c3fSmrg   { "glSecondaryColor3sv", 10, -1 },
183401e04c3fSmrg   { "glSecondaryColor3ub", 10, -1 },
183501e04c3fSmrg   { "glSecondaryColor3ubv", 10, -1 },
183601e04c3fSmrg   { "glSecondaryColor3ui", 10, -1 },
183701e04c3fSmrg   { "glSecondaryColor3uiv", 10, -1 },
183801e04c3fSmrg   { "glSecondaryColor3us", 10, -1 },
183901e04c3fSmrg   { "glSecondaryColor3usv", 10, -1 },
184001e04c3fSmrg   { "glSecondaryColorPointer", 10, -1 },
184101e04c3fSmrg   { "glWindowPos2d", 10, -1 },
184201e04c3fSmrg   { "glWindowPos2dv", 10, -1 },
184301e04c3fSmrg   { "glWindowPos2f", 10, -1 },
184401e04c3fSmrg   { "glWindowPos2fv", 10, -1 },
184501e04c3fSmrg   { "glWindowPos2i", 10, -1 },
184601e04c3fSmrg   { "glWindowPos2iv", 10, -1 },
184701e04c3fSmrg   { "glWindowPos2s", 10, -1 },
184801e04c3fSmrg   { "glWindowPos2sv", 10, -1 },
184901e04c3fSmrg   { "glWindowPos3d", 10, -1 },
185001e04c3fSmrg   { "glWindowPos3dv", 10, -1 },
185101e04c3fSmrg   { "glWindowPos3f", 10, -1 },
185201e04c3fSmrg   { "glWindowPos3fv", 10, -1 },
185301e04c3fSmrg   { "glWindowPos3i", 10, -1 },
185401e04c3fSmrg   { "glWindowPos3iv", 10, -1 },
185501e04c3fSmrg   { "glWindowPos3s", 10, -1 },
185601e04c3fSmrg   { "glWindowPos3sv", 10, -1 },
185701e04c3fSmrg   { "glProgramStringARB", 10, -1 },
185801e04c3fSmrg   { "glProgramEnvParameter4dARB", 10, -1 },
185901e04c3fSmrg   { "glProgramEnvParameter4dvARB", 10, -1 },
186001e04c3fSmrg   { "glProgramEnvParameter4fARB", 10, -1 },
186101e04c3fSmrg   { "glProgramEnvParameter4fvARB", 10, -1 },
186201e04c3fSmrg   { "glProgramLocalParameter4dARB", 10, -1 },
186301e04c3fSmrg   { "glProgramLocalParameter4dvARB", 10, -1 },
186401e04c3fSmrg   { "glProgramLocalParameter4fARB", 10, -1 },
186501e04c3fSmrg   { "glProgramLocalParameter4fvARB", 10, -1 },
186601e04c3fSmrg   { "glGetProgramEnvParameterdvARB", 10, -1 },
186701e04c3fSmrg   { "glGetProgramEnvParameterfvARB", 10, -1 },
186801e04c3fSmrg   { "glGetProgramLocalParameterdvARB", 10, -1 },
186901e04c3fSmrg   { "glGetProgramLocalParameterfvARB", 10, -1 },
187001e04c3fSmrg   { "glGetProgramivARB", 10, -1 },
187101e04c3fSmrg   { "glGetProgramStringARB", 10, -1 },
187201e04c3fSmrg   { "glColorPointerEXT", 10, -1 },
187301e04c3fSmrg   { "glEdgeFlagPointerEXT", 10, -1 },
187401e04c3fSmrg   { "glIndexPointerEXT", 10, -1 },
187501e04c3fSmrg   { "glNormalPointerEXT", 10, -1 },
187601e04c3fSmrg   { "glTexCoordPointerEXT", 10, -1 },
187701e04c3fSmrg   { "glVertexPointerEXT", 10, -1 },
187801e04c3fSmrg   { "glLockArraysEXT", 10, -1 },
187901e04c3fSmrg   { "glUnlockArraysEXT", 10, -1 },
188001e04c3fSmrg   { "glWindowPos4dMESA", 10, -1 },
188101e04c3fSmrg   { "glWindowPos4dvMESA", 10, -1 },
188201e04c3fSmrg   { "glWindowPos4fMESA", 10, -1 },
188301e04c3fSmrg   { "glWindowPos4fvMESA", 10, -1 },
188401e04c3fSmrg   { "glWindowPos4iMESA", 10, -1 },
188501e04c3fSmrg   { "glWindowPos4ivMESA", 10, -1 },
188601e04c3fSmrg   { "glWindowPos4sMESA", 10, -1 },
188701e04c3fSmrg   { "glWindowPos4svMESA", 10, -1 },
188801e04c3fSmrg   { "glBindProgramNV", 10, -1 },
188901e04c3fSmrg   { "glDeleteProgramsNV", 10, -1 },
189001e04c3fSmrg   { "glGenProgramsNV", 10, -1 },
189101e04c3fSmrg   { "glIsProgramNV", 10, -1 },
189201e04c3fSmrg   { "glVertexAttrib1sNV", 10, -1 },
189301e04c3fSmrg   { "glVertexAttrib1svNV", 10, -1 },
189401e04c3fSmrg   { "glVertexAttrib2sNV", 10, -1 },
189501e04c3fSmrg   { "glVertexAttrib2svNV", 10, -1 },
189601e04c3fSmrg   { "glVertexAttrib3sNV", 10, -1 },
189701e04c3fSmrg   { "glVertexAttrib3svNV", 10, -1 },
189801e04c3fSmrg   { "glVertexAttrib4sNV", 10, -1 },
189901e04c3fSmrg   { "glVertexAttrib4svNV", 10, -1 },
190001e04c3fSmrg   { "glVertexAttrib1fNV", 10, -1 },
190101e04c3fSmrg   { "glVertexAttrib1fvNV", 10, -1 },
190201e04c3fSmrg   { "glVertexAttrib2fNV", 10, -1 },
190301e04c3fSmrg   { "glVertexAttrib2fvNV", 10, -1 },
190401e04c3fSmrg   { "glVertexAttrib3fNV", 10, -1 },
190501e04c3fSmrg   { "glVertexAttrib3fvNV", 10, -1 },
190601e04c3fSmrg   { "glVertexAttrib4fNV", 10, -1 },
190701e04c3fSmrg   { "glVertexAttrib4fvNV", 10, -1 },
190801e04c3fSmrg   { "glVertexAttrib1dNV", 10, -1 },
190901e04c3fSmrg   { "glVertexAttrib1dvNV", 10, -1 },
191001e04c3fSmrg   { "glVertexAttrib2dNV", 10, -1 },
191101e04c3fSmrg   { "glVertexAttrib2dvNV", 10, -1 },
191201e04c3fSmrg   { "glVertexAttrib3dNV", 10, -1 },
191301e04c3fSmrg   { "glVertexAttrib3dvNV", 10, -1 },
191401e04c3fSmrg   { "glVertexAttrib4dNV", 10, -1 },
191501e04c3fSmrg   { "glVertexAttrib4dvNV", 10, -1 },
191601e04c3fSmrg   { "glVertexAttrib4ubNV", 10, -1 },
191701e04c3fSmrg   { "glVertexAttrib4ubvNV", 10, -1 },
191801e04c3fSmrg   { "glVertexAttribs1svNV", 10, -1 },
191901e04c3fSmrg   { "glVertexAttribs2svNV", 10, -1 },
192001e04c3fSmrg   { "glVertexAttribs3svNV", 10, -1 },
192101e04c3fSmrg   { "glVertexAttribs4svNV", 10, -1 },
192201e04c3fSmrg   { "glVertexAttribs1fvNV", 10, -1 },
192301e04c3fSmrg   { "glVertexAttribs2fvNV", 10, -1 },
192401e04c3fSmrg   { "glVertexAttribs3fvNV", 10, -1 },
192501e04c3fSmrg   { "glVertexAttribs4fvNV", 10, -1 },
192601e04c3fSmrg   { "glVertexAttribs1dvNV", 10, -1 },
192701e04c3fSmrg   { "glVertexAttribs2dvNV", 10, -1 },
192801e04c3fSmrg   { "glVertexAttribs3dvNV", 10, -1 },
192901e04c3fSmrg   { "glVertexAttribs4dvNV", 10, -1 },
193001e04c3fSmrg   { "glVertexAttribs4ubvNV", 10, -1 },
193101e04c3fSmrg   { "glGenFragmentShadersATI", 10, -1 },
193201e04c3fSmrg   { "glBindFragmentShaderATI", 10, -1 },
193301e04c3fSmrg   { "glDeleteFragmentShaderATI", 10, -1 },
193401e04c3fSmrg   { "glBeginFragmentShaderATI", 10, -1 },
193501e04c3fSmrg   { "glEndFragmentShaderATI", 10, -1 },
193601e04c3fSmrg   { "glPassTexCoordATI", 10, -1 },
193701e04c3fSmrg   { "glSampleMapATI", 10, -1 },
193801e04c3fSmrg   { "glColorFragmentOp1ATI", 10, -1 },
193901e04c3fSmrg   { "glColorFragmentOp2ATI", 10, -1 },
194001e04c3fSmrg   { "glColorFragmentOp3ATI", 10, -1 },
194101e04c3fSmrg   { "glAlphaFragmentOp1ATI", 10, -1 },
194201e04c3fSmrg   { "glAlphaFragmentOp2ATI", 10, -1 },
194301e04c3fSmrg   { "glAlphaFragmentOp3ATI", 10, -1 },
194401e04c3fSmrg   { "glSetFragmentShaderConstantATI", 10, -1 },
194501e04c3fSmrg   { "glActiveStencilFaceEXT", 10, -1 },
194601e04c3fSmrg   { "glStencilFuncSeparateATI", 10, -1 },
194701e04c3fSmrg   { "glProgramEnvParameters4fvEXT", 10, -1 },
194801e04c3fSmrg   { "glProgramLocalParameters4fvEXT", 10, -1 },
194901e04c3fSmrg   { "glPrimitiveRestartNV", 10, -1 },
195001e04c3fSmrg
19517ec681f3Smrg   /* GL_NV_half_float */
19527ec681f3Smrg   { "glVertex2hNV", 13, -1 },
19537ec681f3Smrg   { "glVertex2hvNV", 13, -1 },
19547ec681f3Smrg   { "glVertex3hNV", 13, -1 },
19557ec681f3Smrg   { "glVertex3hvNV", 13, -1 },
19567ec681f3Smrg   { "glVertex4hNV", 13, -1 },
19577ec681f3Smrg   { "glVertex4hvNV", 13, -1 },
19587ec681f3Smrg   { "glNormal3hNV", 13, -1 },
19597ec681f3Smrg   { "glNormal3hvNV", 13, -1 },
19607ec681f3Smrg   { "glColor3hNV", 13, -1 },
19617ec681f3Smrg   { "glColor3hvNV", 13, -1 },
19627ec681f3Smrg   { "glColor4hNV", 13, -1 },
19637ec681f3Smrg   { "glColor4hvNV", 13, -1 },
19647ec681f3Smrg   { "glTexCoord1hNV", 13, -1 },
19657ec681f3Smrg   { "glTexCoord1hvNV", 13, -1 },
19667ec681f3Smrg   { "glTexCoord2hNV", 13, -1 },
19677ec681f3Smrg   { "glTexCoord2hvNV", 13, -1 },
19687ec681f3Smrg   { "glTexCoord3hNV", 13, -1 },
19697ec681f3Smrg   { "glTexCoord3hvNV", 13, -1 },
19707ec681f3Smrg   { "glTexCoord4hNV", 13, -1 },
19717ec681f3Smrg   { "glTexCoord4hvNV", 13, -1 },
19727ec681f3Smrg   { "glMultiTexCoord1hNV", 13, -1 },
19737ec681f3Smrg   { "glMultiTexCoord1hvNV", 13, -1 },
19747ec681f3Smrg   { "glMultiTexCoord2hNV", 13, -1 },
19757ec681f3Smrg   { "glMultiTexCoord2hvNV", 13, -1 },
19767ec681f3Smrg   { "glMultiTexCoord3hNV", 13, -1 },
19777ec681f3Smrg   { "glMultiTexCoord3hvNV", 13, -1 },
19787ec681f3Smrg   { "glMultiTexCoord4hNV", 13, -1 },
19797ec681f3Smrg   { "glMultiTexCoord4hvNV", 13, -1 },
19807ec681f3Smrg   { "glFogCoordhNV", 13, -1 },
19817ec681f3Smrg   { "glFogCoordhvNV", 13, -1 },
19827ec681f3Smrg   { "glSecondaryColor3hNV", 13, -1 },
19837ec681f3Smrg   { "glSecondaryColor3hvNV", 13, -1 },
19847ec681f3Smrg   { "glVertexAttrib1hNV", 13, -1 },
19857ec681f3Smrg   { "glVertexAttrib1hvNV", 13, -1 },
19867ec681f3Smrg   { "glVertexAttrib2hNV", 13, -1 },
19877ec681f3Smrg   { "glVertexAttrib2hvNV", 13, -1 },
19887ec681f3Smrg   { "glVertexAttrib3hNV", 13, -1 },
19897ec681f3Smrg   { "glVertexAttrib3hvNV", 13, -1 },
19907ec681f3Smrg   { "glVertexAttrib4hNV", 13, -1 },
19917ec681f3Smrg   { "glVertexAttrib4hvNV", 13, -1 },
19927ec681f3Smrg   { "glVertexAttribs1hvNV", 13, -1 },
19937ec681f3Smrg   { "glVertexAttribs2hvNV", 13, -1 },
19947ec681f3Smrg   { "glVertexAttribs3hvNV", 13, -1 },
19957ec681f3Smrg   { "glVertexAttribs4hvNV", 13, -1 },
19967ec681f3Smrg
199701e04c3fSmrg   { NULL, 0, -1 }
199801e04c3fSmrg};
199901e04c3fSmrg
200001e04c3fSmrgconst struct function gl_core_functions_possible[] = {
200101e04c3fSmrg   /* GL_ARB_gl_spirv */
200201e04c3fSmrg   { "glSpecializeShaderARB", 45, -1 },
200301e04c3fSmrg
2004af69d88dSmrg   { NULL, 0, -1 }
2005af69d88dSmrg};
2006af69d88dSmrg
2007af69d88dSmrgconst struct function gles11_functions_possible[] = {
2008af69d88dSmrg   { "glActiveTexture", 11, _gloffset_ActiveTexture },
2009af69d88dSmrg   { "glAlphaFunc", 11, _gloffset_AlphaFunc },
2010af69d88dSmrg   { "glAlphaFuncx", 11, -1 },
2011af69d88dSmrg   { "glBindBuffer", 11, -1 },
2012af69d88dSmrg   { "glBindFramebufferOES", 11, -1 },
2013af69d88dSmrg   { "glBindRenderbufferOES", 11, -1 },
2014af69d88dSmrg   { "glBindTexture", 11, _gloffset_BindTexture },
2015af69d88dSmrg   { "glBlendEquationOES", 11, _gloffset_BlendEquation },
2016af69d88dSmrg   { "glBlendEquationSeparateOES", 11, -1 },
2017af69d88dSmrg   { "glBlendFunc", 11, _gloffset_BlendFunc },
2018af69d88dSmrg   { "glBlendFuncSeparateOES", 11, -1 },
2019af69d88dSmrg   { "glBufferData", 11, -1 },
2020af69d88dSmrg   { "glBufferSubData", 11, -1 },
2021af69d88dSmrg   { "glCheckFramebufferStatusOES", 11, -1 },
2022af69d88dSmrg   { "glClear", 11, _gloffset_Clear },
2023af69d88dSmrg   { "glClearColor", 11, _gloffset_ClearColor },
2024af69d88dSmrg   { "glClearColorx", 11, -1 },
2025af69d88dSmrg   { "glClearDepthf", 11, -1 },
2026af69d88dSmrg   { "glClearDepthx", 11, -1 },
2027af69d88dSmrg   { "glClearStencil", 11, _gloffset_ClearStencil },
2028af69d88dSmrg   { "glClientActiveTexture", 11, _gloffset_ClientActiveTexture },
2029af69d88dSmrg   { "glClipPlanef", 11, -1 },
2030af69d88dSmrg   { "glClipPlanex", 11, -1 },
2031af69d88dSmrg   { "glColor4f", 11, _gloffset_Color4f },
2032af69d88dSmrg   { "glColor4ub", 11, _gloffset_Color4ub },
2033af69d88dSmrg   { "glColor4x", 11, -1 },
2034af69d88dSmrg   { "glColorMask", 11, _gloffset_ColorMask },
2035af69d88dSmrg   { "glColorPointer", 11, _gloffset_ColorPointer },
2036af69d88dSmrg   { "glCompressedTexImage2D", 11, -1 },
2037af69d88dSmrg   { "glCompressedTexSubImage2D", 11, -1 },
2038af69d88dSmrg   { "glCopyTexImage2D", 11, _gloffset_CopyTexImage2D },
2039af69d88dSmrg   { "glCopyTexSubImage2D", 11, _gloffset_CopyTexSubImage2D },
2040af69d88dSmrg   { "glCullFace", 11, _gloffset_CullFace },
2041af69d88dSmrg   { "glDeleteBuffers", 11, -1 },
2042af69d88dSmrg   { "glDeleteFramebuffersOES", 11, -1 },
2043af69d88dSmrg   { "glDeleteRenderbuffersOES", 11, -1 },
2044af69d88dSmrg   { "glDeleteTextures", 11, _gloffset_DeleteTextures },
2045af69d88dSmrg   { "glDepthFunc", 11, _gloffset_DepthFunc },
2046af69d88dSmrg   { "glDepthMask", 11, _gloffset_DepthMask },
2047af69d88dSmrg   { "glDepthRangef", 11, -1 },
2048af69d88dSmrg   { "glDepthRangex", 11, -1 },
2049af69d88dSmrg   { "glDisable", 11, _gloffset_Disable },
2050af69d88dSmrg   { "glDiscardFramebufferEXT", 11, -1 },
2051af69d88dSmrg   { "glDisableClientState", 11, _gloffset_DisableClientState },
2052af69d88dSmrg   { "glDrawArrays", 11, _gloffset_DrawArrays },
2053af69d88dSmrg   { "glDrawElements", 11, _gloffset_DrawElements },
2054af69d88dSmrg   { "glDrawTexfOES", 11, -1 },
2055af69d88dSmrg   { "glDrawTexfvOES", 11, -1 },
2056af69d88dSmrg   { "glDrawTexiOES", 11, -1 },
2057af69d88dSmrg   { "glDrawTexivOES", 11, -1 },
2058af69d88dSmrg   { "glDrawTexsOES", 11, -1 },
2059af69d88dSmrg   { "glDrawTexsvOES", 11, -1 },
2060af69d88dSmrg   { "glDrawTexxOES", 11, -1 },
2061af69d88dSmrg   { "glDrawTexxvOES", 11, -1 },
2062af69d88dSmrg   { "glEGLImageTargetRenderbufferStorageOES", 11, -1 },
2063af69d88dSmrg   { "glEGLImageTargetTexture2DOES", 11, -1 },
2064af69d88dSmrg   { "glEnable", 11, _gloffset_Enable },
2065af69d88dSmrg   { "glEnableClientState", 11, _gloffset_EnableClientState },
2066af69d88dSmrg   { "glFinish", 11, _gloffset_Finish },
2067af69d88dSmrg   { "glFlush", 11, _gloffset_Flush },
2068af69d88dSmrg   { "glFlushMappedBufferRangeEXT", 11, -1 },
2069af69d88dSmrg   { "glFogf", 11, _gloffset_Fogf },
2070af69d88dSmrg   { "glFogfv", 11, _gloffset_Fogfv },
2071af69d88dSmrg   { "glFogx", 11, -1 },
2072af69d88dSmrg   { "glFogxv", 11, -1 },
2073af69d88dSmrg   { "glFramebufferRenderbufferOES", 11, -1 },
2074af69d88dSmrg   { "glFramebufferTexture2DOES", 11, -1 },
2075af69d88dSmrg   { "glFrontFace", 11, _gloffset_FrontFace },
2076af69d88dSmrg   { "glFrustumf", 11, -1 },
2077af69d88dSmrg   { "glFrustumx", 11, -1 },
2078af69d88dSmrg   { "glGenBuffers", 11, -1 },
2079af69d88dSmrg   { "glGenFramebuffersOES", 11, -1 },
2080af69d88dSmrg   { "glGenRenderbuffersOES", 11, -1 },
2081af69d88dSmrg   { "glGenTextures", 11, _gloffset_GenTextures },
2082af69d88dSmrg   { "glGenerateMipmapOES", 11, -1 },
2083af69d88dSmrg   { "glGetBooleanv", 11, _gloffset_GetBooleanv },
2084af69d88dSmrg   { "glGetBufferParameteriv", 11, -1 },
2085af69d88dSmrg   { "glGetBufferPointervOES", 11, -1 },
2086af69d88dSmrg   { "glGetClipPlanef", 11, -1 },
2087af69d88dSmrg   { "glGetClipPlanex", 11, -1 },
2088af69d88dSmrg   { "glGetError", 11, _gloffset_GetError },
2089af69d88dSmrg   { "glGetFixedv", 11, -1 },
2090af69d88dSmrg   { "glGetFloatv", 11, _gloffset_GetFloatv },
2091af69d88dSmrg   { "glGetFramebufferAttachmentParameterivOES", 11, -1 },
2092af69d88dSmrg   { "glGetIntegerv", 11, _gloffset_GetIntegerv },
2093af69d88dSmrg   { "glGetLightfv", 11, _gloffset_GetLightfv },
2094af69d88dSmrg   { "glGetLightxv", 11, -1 },
2095af69d88dSmrg   { "glGetMaterialfv", 11, _gloffset_GetMaterialfv },
2096af69d88dSmrg   { "glGetMaterialxv", 11, -1 },
209701e04c3fSmrg   // We check for the aliased -KHR version in GLES 1.1
209801e04c3fSmrg// { "glGetPointerv", 11, _gloffset_GetPointerv },
2099af69d88dSmrg   { "glGetRenderbufferParameterivOES", 11, -1 },
2100af69d88dSmrg   { "glGetString", 11, _gloffset_GetString },
2101af69d88dSmrg   { "glGetTexEnvfv", 11, _gloffset_GetTexEnvfv },
2102af69d88dSmrg   { "glGetTexEnviv", 11, _gloffset_GetTexEnviv },
2103af69d88dSmrg   { "glGetTexEnvxv", 11, -1 },
2104af69d88dSmrg   { "glGetTexGenfvOES", 11, _gloffset_GetTexGenfv },
2105af69d88dSmrg   { "glGetTexGenivOES", 11, _gloffset_GetTexGeniv },
2106af69d88dSmrg   { "glGetTexGenxvOES", 11, -1 },
2107af69d88dSmrg   { "glGetTexParameterfv", 11, _gloffset_GetTexParameterfv },
2108af69d88dSmrg   { "glGetTexParameteriv", 11, _gloffset_GetTexParameteriv },
2109af69d88dSmrg   { "glGetTexParameterxv", 11, -1 },
2110af69d88dSmrg   { "glHint", 11, _gloffset_Hint },
2111af69d88dSmrg   { "glIsBuffer", 11, -1 },
2112af69d88dSmrg   { "glIsEnabled", 11, _gloffset_IsEnabled },
2113af69d88dSmrg   { "glIsFramebufferOES", 11, -1 },
2114af69d88dSmrg   { "glIsRenderbufferOES", 11, -1 },
2115af69d88dSmrg   { "glIsTexture", 11, _gloffset_IsTexture },
2116af69d88dSmrg   { "glLightModelf", 11, _gloffset_LightModelf },
2117af69d88dSmrg   { "glLightModelfv", 11, _gloffset_LightModelfv },
2118af69d88dSmrg   { "glLightModelx", 11, -1 },
2119af69d88dSmrg   { "glLightModelxv", 11, -1 },
2120af69d88dSmrg   { "glLightf", 11, _gloffset_Lightf },
2121af69d88dSmrg   { "glLightfv", 11, _gloffset_Lightfv },
2122af69d88dSmrg   { "glLightx", 11, -1 },
2123af69d88dSmrg   { "glLightxv", 11, -1 },
2124af69d88dSmrg   { "glLineWidth", 11, _gloffset_LineWidth },
2125af69d88dSmrg   { "glLineWidthx", 11, -1 },
2126af69d88dSmrg   { "glLoadIdentity", 11, _gloffset_LoadIdentity },
2127af69d88dSmrg   { "glLoadMatrixf", 11, _gloffset_LoadMatrixf },
2128af69d88dSmrg   { "glLoadMatrixx", 11, -1 },
2129af69d88dSmrg   { "glLogicOp", 11, _gloffset_LogicOp },
2130af69d88dSmrg   { "glMapBufferOES", 11, -1 },
2131af69d88dSmrg   { "glMapBufferRangeEXT", 11, -1 },
2132af69d88dSmrg   { "glMaterialf", 11, _gloffset_Materialf },
2133af69d88dSmrg   { "glMaterialfv", 11, _gloffset_Materialfv },
2134af69d88dSmrg   { "glMaterialx", 11, -1 },
2135af69d88dSmrg   { "glMaterialxv", 11, -1 },
2136af69d88dSmrg   { "glMatrixMode", 11, _gloffset_MatrixMode },
2137af69d88dSmrg   { "glMultMatrixf", 11, _gloffset_MultMatrixf },
2138af69d88dSmrg   { "glMultMatrixx", 11, -1 },
2139af69d88dSmrg   { "glMultiDrawArraysEXT", 11, -1 },
2140af69d88dSmrg   { "glMultiDrawElementsEXT", 11, -1 },
2141af69d88dSmrg   { "glMultiTexCoord4f", 11, _gloffset_MultiTexCoord4fARB },
2142af69d88dSmrg   { "glMultiTexCoord4x", 11, -1 },
2143af69d88dSmrg   { "glNormal3f", 11, _gloffset_Normal3f },
2144af69d88dSmrg   { "glNormal3x", 11, -1 },
2145af69d88dSmrg   { "glNormalPointer", 11, _gloffset_NormalPointer },
2146af69d88dSmrg   { "glOrthof", 11, -1 },
2147af69d88dSmrg   { "glOrthox", 11, -1 },
2148af69d88dSmrg   { "glPixelStorei", 11, _gloffset_PixelStorei },
2149af69d88dSmrg   { "glPointParameterf", 11, -1 },
2150af69d88dSmrg   { "glPointParameterfv", 11, -1 },
2151af69d88dSmrg   { "glPointParameterx", 11, -1 },
2152af69d88dSmrg   { "glPointParameterxv", 11, -1 },
2153af69d88dSmrg   { "glPointSize", 11, _gloffset_PointSize },
2154af69d88dSmrg   { "glPointSizePointerOES", 11, -1 },
2155af69d88dSmrg   { "glPointSizex", 11, -1 },
2156af69d88dSmrg   { "glPolygonOffset", 11, _gloffset_PolygonOffset },
2157af69d88dSmrg   { "glPolygonOffsetx", 11, -1 },
2158af69d88dSmrg   { "glPopMatrix", 11, _gloffset_PopMatrix },
2159af69d88dSmrg   { "glPushMatrix", 11, _gloffset_PushMatrix },
2160af69d88dSmrg   { "glQueryMatrixxOES", 11, -1 },
2161af69d88dSmrg   { "glReadPixels", 11, _gloffset_ReadPixels },
2162af69d88dSmrg   { "glRenderbufferStorageOES", 11, -1 },
2163af69d88dSmrg   { "glRotatef", 11, _gloffset_Rotatef },
2164af69d88dSmrg   { "glRotatex", 11, -1 },
2165af69d88dSmrg   { "glSampleCoverage", 11, -1 },
2166af69d88dSmrg   { "glSampleCoveragex", 11, -1 },
2167af69d88dSmrg   { "glScalef", 11, _gloffset_Scalef },
2168af69d88dSmrg   { "glScalex", 11, -1 },
2169af69d88dSmrg   { "glScissor", 11, _gloffset_Scissor },
2170af69d88dSmrg   { "glShadeModel", 11, _gloffset_ShadeModel },
2171af69d88dSmrg   { "glStencilFunc", 11, _gloffset_StencilFunc },
2172af69d88dSmrg   { "glStencilMask", 11, _gloffset_StencilMask },
2173af69d88dSmrg   { "glStencilOp", 11, _gloffset_StencilOp },
2174af69d88dSmrg   { "glTexCoordPointer", 11, _gloffset_TexCoordPointer },
2175af69d88dSmrg   { "glTexEnvf", 11, _gloffset_TexEnvf },
2176af69d88dSmrg   { "glTexEnvfv", 11, _gloffset_TexEnvfv },
2177af69d88dSmrg   { "glTexEnvi", 11, _gloffset_TexEnvi },
2178af69d88dSmrg   { "glTexEnviv", 11, _gloffset_TexEnviv },
2179af69d88dSmrg   { "glTexEnvx", 11, -1 },
2180af69d88dSmrg   { "glTexEnvxv", 11, -1 },
2181af69d88dSmrg   { "glTexGenfOES", 11, _gloffset_TexGenf },
2182af69d88dSmrg   { "glTexGenfvOES", 11, _gloffset_TexGenfv },
2183af69d88dSmrg   { "glTexGeniOES", 11, _gloffset_TexGeni },
2184af69d88dSmrg   { "glTexGenivOES", 11, _gloffset_TexGeniv },
2185af69d88dSmrg   { "glTexGenxOES", 11, -1 },
2186af69d88dSmrg   { "glTexGenxvOES", 11, -1 },
2187af69d88dSmrg   { "glTexImage2D", 11, _gloffset_TexImage2D },
2188af69d88dSmrg   { "glTexParameterf", 11, _gloffset_TexParameterf },
2189af69d88dSmrg   { "glTexParameterfv", 11, _gloffset_TexParameterfv },
2190af69d88dSmrg   { "glTexParameteri", 11, _gloffset_TexParameteri },
2191af69d88dSmrg   { "glTexParameteriv", 11, _gloffset_TexParameteriv },
2192af69d88dSmrg   { "glTexParameterx", 11, -1 },
2193af69d88dSmrg   { "glTexParameterxv", 11, -1 },
2194af69d88dSmrg   { "glTexSubImage2D", 11, _gloffset_TexSubImage2D },
2195af69d88dSmrg   { "glTranslatef", 11, _gloffset_Translatef },
2196af69d88dSmrg   { "glTranslatex", 11, -1 },
2197af69d88dSmrg   { "glUnmapBufferOES", 11, -1 },
2198af69d88dSmrg   { "glVertexPointer", 11, _gloffset_VertexPointer },
2199af69d88dSmrg   { "glViewport", 11, _gloffset_Viewport },
220001e04c3fSmrg
220101e04c3fSmrg   /* GL_KHR_debug */
220201e04c3fSmrg   { "glPushDebugGroupKHR", 11, -1 },
220301e04c3fSmrg   { "glPopDebugGroupKHR", 11, -1 },
220401e04c3fSmrg   { "glDebugMessageCallbackKHR", 11, -1 },
220501e04c3fSmrg   { "glDebugMessageControlKHR", 11, -1 },
220601e04c3fSmrg   { "glDebugMessageInsertKHR", 11, -1 },
220701e04c3fSmrg   { "glGetDebugMessageLogKHR", 11, -1 },
220801e04c3fSmrg   { "glGetObjectLabelKHR", 11, -1 },
220901e04c3fSmrg   { "glGetObjectPtrLabelKHR", 11, -1 },
221001e04c3fSmrg   { "glGetPointervKHR", 11, _gloffset_GetPointerv },
221101e04c3fSmrg   { "glObjectLabelKHR", 11, -1 },
221201e04c3fSmrg   { "glObjectPtrLabelKHR", 11, -1 },
221301e04c3fSmrg
221401e04c3fSmrg   /* GL_EXT_polygon_offset_clamp */
221501e04c3fSmrg   { "glPolygonOffsetClampEXT", 11, -1 },
221601e04c3fSmrg
221701e04c3fSmrg   /* GL_NV_conservative_raster */
221801e04c3fSmrg   { "glSubpixelPrecisionBiasNV", 20, -1 },
221901e04c3fSmrg
222001e04c3fSmrg   /* GL_NV_conservative_raster_dilate */
222101e04c3fSmrg   { "glConservativeRasterParameterfNV", 20, -1 },
222201e04c3fSmrg
222301e04c3fSmrg   /* GL_NV_conservative_raster_pre_snap_triangles */
222401e04c3fSmrg   { "glConservativeRasterParameteriNV", 20, -1 },
222501e04c3fSmrg
2226af69d88dSmrg   { NULL, 0, -1 }
2227af69d88dSmrg};
2228af69d88dSmrg
2229af69d88dSmrgconst struct function gles2_functions_possible[] = {
2230af69d88dSmrg   { "glActiveTexture", 20, _gloffset_ActiveTexture },
2231af69d88dSmrg   { "glAttachShader", 20, -1 },
2232af69d88dSmrg   { "glBindAttribLocation", 20, -1 },
2233af69d88dSmrg   { "glBindBuffer", 20, -1 },
2234af69d88dSmrg   { "glBindFramebuffer", 20, -1 },
2235af69d88dSmrg   { "glBindRenderbuffer", 20, -1 },
2236af69d88dSmrg   { "glBindTexture", 20, _gloffset_BindTexture },
2237af69d88dSmrg   { "glBindVertexArrayOES", 20, -1 },
2238af69d88dSmrg   { "glBlendColor", 20, _gloffset_BlendColor },
2239af69d88dSmrg   { "glBlendEquation", 20, _gloffset_BlendEquation },
2240af69d88dSmrg   { "glBlendEquationSeparate", 20, -1 },
2241af69d88dSmrg   { "glBlendFunc", 20, _gloffset_BlendFunc },
2242af69d88dSmrg   { "glBlendFuncSeparate", 20, -1 },
2243af69d88dSmrg   { "glBufferData", 20, -1 },
2244af69d88dSmrg   { "glBufferSubData", 20, -1 },
2245af69d88dSmrg   { "glCheckFramebufferStatus", 20, -1 },
2246af69d88dSmrg   { "glClear", 20, _gloffset_Clear },
2247af69d88dSmrg   { "glClearColor", 20, _gloffset_ClearColor },
2248af69d88dSmrg   { "glClearDepthf", 20, -1 },
2249af69d88dSmrg   { "glClearStencil", 20, _gloffset_ClearStencil },
2250af69d88dSmrg   { "glColorMask", 20, _gloffset_ColorMask },
2251af69d88dSmrg   { "glCompileShader", 20, -1 },
2252af69d88dSmrg   { "glCompressedTexImage2D", 20, -1 },
2253af69d88dSmrg   { "glCompressedTexImage3DOES", 20, -1 },
2254af69d88dSmrg   { "glCompressedTexSubImage2D", 20, -1 },
2255af69d88dSmrg   { "glCompressedTexSubImage3DOES", 20, -1 },
2256af69d88dSmrg   { "glCopyTexImage2D", 20, _gloffset_CopyTexImage2D },
2257af69d88dSmrg   { "glCopyTexSubImage2D", 20, _gloffset_CopyTexSubImage2D },
2258af69d88dSmrg   { "glCopyTexSubImage3DOES", 20, _gloffset_CopyTexSubImage3D },
2259af69d88dSmrg   { "glCreateProgram", 20, -1 },
2260af69d88dSmrg   { "glCreateShader", 20, -1 },
2261af69d88dSmrg   { "glCullFace", 20, _gloffset_CullFace },
2262af69d88dSmrg   { "glDeleteBuffers", 20, -1 },
2263af69d88dSmrg   { "glDeleteFramebuffers", 20, -1 },
2264af69d88dSmrg   { "glDeleteProgram", 20, -1 },
2265af69d88dSmrg   { "glDeleteRenderbuffers", 20, -1 },
2266af69d88dSmrg   { "glDeleteShader", 20, -1 },
2267af69d88dSmrg   { "glDeleteTextures", 20, _gloffset_DeleteTextures },
2268af69d88dSmrg   { "glDeleteVertexArraysOES", 20, -1 },
2269af69d88dSmrg   { "glDepthFunc", 20, _gloffset_DepthFunc },
2270af69d88dSmrg   { "glDepthMask", 20, _gloffset_DepthMask },
2271af69d88dSmrg   { "glDepthRangef", 20, -1 },
2272af69d88dSmrg   { "glDetachShader", 20, -1 },
2273af69d88dSmrg   { "glDisable", 20, _gloffset_Disable },
2274af69d88dSmrg   { "glDiscardFramebufferEXT", 20, -1 },
2275af69d88dSmrg   { "glDisableVertexAttribArray", 20, -1 },
2276af69d88dSmrg   { "glDrawArrays", 20, _gloffset_DrawArrays },
2277af69d88dSmrg   { "glDrawBuffersNV", 20, -1 },
2278af69d88dSmrg   { "glDrawElements", 20, _gloffset_DrawElements },
22797ec681f3Smrg   { "glDrawElementsBaseVertex", 20, -1 },
2280af69d88dSmrg   { "glEGLImageTargetRenderbufferStorageOES", 20, -1 },
2281af69d88dSmrg   { "glEGLImageTargetTexture2DOES", 20, -1 },
2282af69d88dSmrg   { "glEnable", 20, _gloffset_Enable },
2283af69d88dSmrg   { "glEnableVertexAttribArray", 20, -1 },
2284af69d88dSmrg   { "glFinish", 20, _gloffset_Finish },
2285af69d88dSmrg   { "glFlush", 20, _gloffset_Flush },
2286af69d88dSmrg   { "glFlushMappedBufferRangeEXT", 20, -1 },
2287af69d88dSmrg   { "glFramebufferRenderbuffer", 20, -1 },
2288af69d88dSmrg   { "glFramebufferTexture2D", 20, -1 },
2289af69d88dSmrg   { "glFramebufferTexture3DOES", 20, -1 },
2290af69d88dSmrg   { "glFrontFace", 20, _gloffset_FrontFace },
2291af69d88dSmrg   { "glGenBuffers", 20, -1 },
2292af69d88dSmrg   { "glGenFramebuffers", 20, -1 },
2293af69d88dSmrg   { "glGenRenderbuffers", 20, -1 },
2294af69d88dSmrg   { "glGenTextures", 20, _gloffset_GenTextures },
2295af69d88dSmrg   { "glGenVertexArraysOES", 20, -1 },
2296af69d88dSmrg   { "glGenerateMipmap", 20, -1 },
2297af69d88dSmrg   { "glGetActiveAttrib", 20, -1 },
2298af69d88dSmrg   { "glGetActiveUniform", 20, -1 },
2299af69d88dSmrg   { "glGetAttachedShaders", 20, -1 },
2300af69d88dSmrg   { "glGetAttribLocation", 20, -1 },
2301af69d88dSmrg   { "glGetBooleanv", 20, _gloffset_GetBooleanv },
2302af69d88dSmrg   { "glGetBufferParameteriv", 20, -1 },
2303af69d88dSmrg   { "glGetBufferPointervOES", 20, -1 },
2304af69d88dSmrg   { "glGetError", 20, _gloffset_GetError },
2305af69d88dSmrg   { "glGetFloatv", 20, _gloffset_GetFloatv },
2306af69d88dSmrg   { "glGetFramebufferAttachmentParameteriv", 20, -1 },
2307af69d88dSmrg   { "glGetIntegerv", 20, _gloffset_GetIntegerv },
2308af69d88dSmrg   { "glGetProgramInfoLog", 20, -1 },
2309af69d88dSmrg   { "glGetProgramiv", 20, -1 },
2310af69d88dSmrg   { "glGetRenderbufferParameteriv", 20, -1 },
2311af69d88dSmrg   { "glGetShaderInfoLog", 20, -1 },
2312af69d88dSmrg   { "glGetShaderPrecisionFormat", 20, -1 },
2313af69d88dSmrg   { "glGetShaderSource", 20, -1 },
2314af69d88dSmrg   { "glGetShaderiv", 20, -1 },
2315af69d88dSmrg   { "glGetString", 20, _gloffset_GetString },
2316af69d88dSmrg   { "glGetTexParameterfv", 20, _gloffset_GetTexParameterfv },
2317af69d88dSmrg   { "glGetTexParameteriv", 20, _gloffset_GetTexParameteriv },
2318af69d88dSmrg   { "glGetUniformLocation", 20, -1 },
2319af69d88dSmrg   { "glGetUniformfv", 20, -1 },
2320af69d88dSmrg   { "glGetUniformiv", 20, -1 },
2321af69d88dSmrg   { "glGetVertexAttribPointerv", 20, -1 },
2322af69d88dSmrg   { "glGetVertexAttribfv", 20, -1 },
2323af69d88dSmrg   { "glGetVertexAttribiv", 20, -1 },
2324af69d88dSmrg   { "glHint", 20, _gloffset_Hint },
2325af69d88dSmrg   { "glIsBuffer", 20, -1 },
2326af69d88dSmrg   { "glIsEnabled", 20, _gloffset_IsEnabled },
2327af69d88dSmrg   { "glIsFramebuffer", 20, -1 },
2328af69d88dSmrg   { "glIsProgram", 20, -1 },
2329af69d88dSmrg   { "glIsRenderbuffer", 20, -1 },
2330af69d88dSmrg   { "glIsShader", 20, -1 },
2331af69d88dSmrg   { "glIsTexture", 20, _gloffset_IsTexture },
2332af69d88dSmrg   { "glIsVertexArrayOES", 20, -1 },
2333af69d88dSmrg   { "glLineWidth", 20, _gloffset_LineWidth },
2334af69d88dSmrg   { "glLinkProgram", 20, -1 },
2335af69d88dSmrg   { "glMapBufferOES", 20, -1 },
2336af69d88dSmrg   { "glMapBufferRangeEXT", 20, -1 },
2337af69d88dSmrg   { "glMultiDrawArraysEXT", 20, -1 },
2338af69d88dSmrg   { "glMultiDrawElementsEXT", 20, -1 },
23397ec681f3Smrg   { "glMultiDrawElementsBaseVertex", 20, -1 },
2340af69d88dSmrg   { "glPixelStorei", 20, _gloffset_PixelStorei },
2341af69d88dSmrg   { "glPolygonOffset", 20, _gloffset_PolygonOffset },
2342af69d88dSmrg   { "glReadBufferNV", 20, _gloffset_ReadBuffer },
2343af69d88dSmrg   { "glReadPixels", 20, _gloffset_ReadPixels },
2344af69d88dSmrg   { "glReleaseShaderCompiler", 20, -1 },
2345af69d88dSmrg   { "glRenderbufferStorage", 20, -1 },
2346af69d88dSmrg   { "glSampleCoverage", 20, -1 },
2347af69d88dSmrg   { "glScissor", 20, _gloffset_Scissor },
2348af69d88dSmrg   { "glShaderBinary", 20, -1 },
2349af69d88dSmrg   { "glShaderSource", 20, -1 },
2350af69d88dSmrg   { "glStencilFunc", 20, _gloffset_StencilFunc },
2351af69d88dSmrg   { "glStencilFuncSeparate", 20, -1 },
2352af69d88dSmrg   { "glStencilMask", 20, _gloffset_StencilMask },
2353af69d88dSmrg   { "glStencilMaskSeparate", 20, -1 },
2354af69d88dSmrg   { "glStencilOp", 20, _gloffset_StencilOp },
2355af69d88dSmrg   { "glStencilOpSeparate", 20, -1 },
2356af69d88dSmrg   { "glTexImage2D", 20, _gloffset_TexImage2D },
2357af69d88dSmrg   { "glTexImage3DOES", 20, _gloffset_TexImage3D },
2358af69d88dSmrg   { "glTexParameterf", 20, _gloffset_TexParameterf },
2359af69d88dSmrg   { "glTexParameterfv", 20, _gloffset_TexParameterfv },
2360af69d88dSmrg   { "glTexParameteri", 20, _gloffset_TexParameteri },
2361af69d88dSmrg   { "glTexParameteriv", 20, _gloffset_TexParameteriv },
2362af69d88dSmrg   { "glTexSubImage2D", 20, _gloffset_TexSubImage2D },
2363af69d88dSmrg   { "glTexSubImage3DOES", 20, _gloffset_TexSubImage3D },
2364af69d88dSmrg   { "glUniform1f", 20, -1 },
2365af69d88dSmrg   { "glUniform1fv", 20, -1 },
2366af69d88dSmrg   { "glUniform1i", 20, -1 },
2367af69d88dSmrg   { "glUniform1iv", 20, -1 },
2368af69d88dSmrg   { "glUniform2f", 20, -1 },
2369af69d88dSmrg   { "glUniform2fv", 20, -1 },
2370af69d88dSmrg   { "glUniform2i", 20, -1 },
2371af69d88dSmrg   { "glUniform2iv", 20, -1 },
2372af69d88dSmrg   { "glUniform3f", 20, -1 },
2373af69d88dSmrg   { "glUniform3fv", 20, -1 },
2374af69d88dSmrg   { "glUniform3i", 20, -1 },
2375af69d88dSmrg   { "glUniform3iv", 20, -1 },
2376af69d88dSmrg   { "glUniform4f", 20, -1 },
2377af69d88dSmrg   { "glUniform4fv", 20, -1 },
2378af69d88dSmrg   { "glUniform4i", 20, -1 },
2379af69d88dSmrg   { "glUniform4iv", 20, -1 },
2380af69d88dSmrg   { "glUniformMatrix2fv", 20, -1 },
2381af69d88dSmrg   { "glUniformMatrix3fv", 20, -1 },
2382af69d88dSmrg   { "glUniformMatrix4fv", 20, -1 },
2383af69d88dSmrg   { "glUnmapBufferOES", 20, -1 },
2384af69d88dSmrg   { "glUseProgram", 20, -1 },
2385af69d88dSmrg   { "glValidateProgram", 20, -1 },
2386af69d88dSmrg   { "glVertexAttrib1f", 20, -1 },
2387af69d88dSmrg   { "glVertexAttrib1fv", 20, -1 },
2388af69d88dSmrg   { "glVertexAttrib2f", 20, -1 },
2389af69d88dSmrg   { "glVertexAttrib2fv", 20, -1 },
2390af69d88dSmrg   { "glVertexAttrib3f", 20, -1 },
2391af69d88dSmrg   { "glVertexAttrib3fv", 20, -1 },
2392af69d88dSmrg   { "glVertexAttrib4f", 20, -1 },
2393af69d88dSmrg   { "glVertexAttrib4fv", 20, -1 },
2394af69d88dSmrg   { "glVertexAttribPointer", 20, -1 },
2395af69d88dSmrg   { "glViewport", 20, _gloffset_Viewport },
2396af69d88dSmrg
2397af69d88dSmrg   /* GL_OES_get_program_binary - Also part of OpenGL ES 3.0. */
2398af69d88dSmrg   { "glGetProgramBinaryOES", 20, -1 },
2399af69d88dSmrg   { "glProgramBinaryOES", 20, -1 },
2400af69d88dSmrg
2401af69d88dSmrg   /* GL_EXT_separate_shader_objects - Also part of OpenGL ES 3.1. */
2402af69d88dSmrg   { "glProgramParameteriEXT", 20, -1 },
2403af69d88dSmrg   { "glUseProgramStagesEXT", 20, -1 },
2404af69d88dSmrg   { "glActiveShaderProgramEXT", 20, -1 },
2405af69d88dSmrg   { "glCreateShaderProgramvEXT", 20, -1 },
2406af69d88dSmrg   { "glBindProgramPipelineEXT", 20, -1 },
2407af69d88dSmrg   { "glDeleteProgramPipelinesEXT", 20, -1 },
2408af69d88dSmrg   { "glGenProgramPipelinesEXT", 20, -1 },
2409af69d88dSmrg   { "glIsProgramPipelineEXT", 20, -1 },
2410af69d88dSmrg   { "glGetProgramPipelineivEXT", 20, -1 },
2411af69d88dSmrg   { "glProgramUniform1iEXT", 20, -1 },
2412af69d88dSmrg   { "glProgramUniform1ivEXT", 20, -1 },
2413af69d88dSmrg   { "glProgramUniform1fEXT", 20, -1 },
2414af69d88dSmrg   { "glProgramUniform1fvEXT", 20, -1 },
2415af69d88dSmrg   { "glProgramUniform2iEXT", 20, -1 },
2416af69d88dSmrg   { "glProgramUniform2ivEXT", 20, -1 },
2417af69d88dSmrg   { "glProgramUniform2fEXT", 20, -1 },
2418af69d88dSmrg   { "glProgramUniform2fvEXT", 20, -1 },
2419af69d88dSmrg   { "glProgramUniform3iEXT", 20, -1 },
2420af69d88dSmrg   { "glProgramUniform3ivEXT", 20, -1 },
2421af69d88dSmrg   { "glProgramUniform3fEXT", 20, -1 },
2422af69d88dSmrg   { "glProgramUniform3fvEXT", 20, -1 },
2423af69d88dSmrg   { "glProgramUniform4iEXT", 20, -1 },
2424af69d88dSmrg   { "glProgramUniform4ivEXT", 20, -1 },
2425af69d88dSmrg   { "glProgramUniform4fEXT", 20, -1 },
2426af69d88dSmrg   { "glProgramUniform4fvEXT", 20, -1 },
2427af69d88dSmrg   { "glProgramUniformMatrix2fvEXT", 20, -1 },
2428af69d88dSmrg   { "glProgramUniformMatrix3fvEXT", 20, -1 },
2429af69d88dSmrg   { "glProgramUniformMatrix4fvEXT", 20, -1 },
2430af69d88dSmrg   { "glProgramUniformMatrix2x3fvEXT", 20, -1 },
2431af69d88dSmrg   { "glProgramUniformMatrix3x2fvEXT", 20, -1 },
2432af69d88dSmrg   { "glProgramUniformMatrix2x4fvEXT", 20, -1 },
2433af69d88dSmrg   { "glProgramUniformMatrix4x2fvEXT", 20, -1 },
2434af69d88dSmrg   { "glProgramUniformMatrix3x4fvEXT", 20, -1 },
2435af69d88dSmrg   { "glProgramUniformMatrix4x3fvEXT", 20, -1 },
2436af69d88dSmrg   { "glValidateProgramPipelineEXT", 20, -1 },
2437af69d88dSmrg   { "glGetProgramPipelineInfoLogEXT", 20, -1 },
2438af69d88dSmrg
243901e04c3fSmrg   /* GL_AMD_performance_monitor */
244001e04c3fSmrg   { "glGetPerfMonitorGroupsAMD", 20, -1 },
244101e04c3fSmrg   { "glGetPerfMonitorCountersAMD", 20, -1 },
244201e04c3fSmrg   { "glGetPerfMonitorGroupStringAMD", 20, -1 },
244301e04c3fSmrg   { "glGetPerfMonitorCounterStringAMD", 20, -1 },
244401e04c3fSmrg   { "glGetPerfMonitorCounterInfoAMD", 20, -1 },
244501e04c3fSmrg   { "glGenPerfMonitorsAMD", 20, -1 },
244601e04c3fSmrg   { "glDeletePerfMonitorsAMD", 20, -1 },
244701e04c3fSmrg   { "glSelectPerfMonitorCountersAMD", 20, -1 },
244801e04c3fSmrg   { "glBeginPerfMonitorAMD", 20, -1 },
244901e04c3fSmrg   { "glEndPerfMonitorAMD", 20, -1 },
245001e04c3fSmrg   { "glGetPerfMonitorCounterDataAMD", 20, -1 },
245101e04c3fSmrg
2452af69d88dSmrg   /* GL_INTEL_performance_query */
2453af69d88dSmrg   { "glGetFirstPerfQueryIdINTEL", 20, -1 },
2454af69d88dSmrg   { "glGetNextPerfQueryIdINTEL", 20, -1 },
2455af69d88dSmrg   { "glGetPerfQueryIdByNameINTEL", 20, -1 },
2456af69d88dSmrg   { "glGetPerfQueryInfoINTEL", 20, -1 },
2457af69d88dSmrg   { "glGetPerfCounterInfoINTEL", 20, -1 },
2458af69d88dSmrg   { "glCreatePerfQueryINTEL", 20, -1 },
2459af69d88dSmrg   { "glDeletePerfQueryINTEL", 20, -1 },
2460af69d88dSmrg   { "glBeginPerfQueryINTEL", 20, -1 },
2461af69d88dSmrg   { "glEndPerfQueryINTEL", 20, -1 },
2462af69d88dSmrg   { "glGetPerfQueryDataINTEL", 20, -1 },
2463af69d88dSmrg
246401e04c3fSmrg   /* GL_KHR_debug */
246501e04c3fSmrg   { "glPushDebugGroupKHR", 20, -1 },
246601e04c3fSmrg   { "glPopDebugGroupKHR", 20, -1 },
246701e04c3fSmrg   { "glDebugMessageCallbackKHR", 20, -1 },
246801e04c3fSmrg   { "glDebugMessageControlKHR", 20, -1 },
246901e04c3fSmrg   { "glDebugMessageInsertKHR", 20, -1 },
247001e04c3fSmrg   { "glGetDebugMessageLogKHR", 20, -1 },
247101e04c3fSmrg   { "glGetObjectLabelKHR", 20, -1 },
247201e04c3fSmrg   { "glGetObjectPtrLabelKHR", 20, -1 },
247301e04c3fSmrg   { "glGetPointervKHR", 20, -1 },
247401e04c3fSmrg   { "glObjectLabelKHR", 20, -1 },
247501e04c3fSmrg   { "glObjectPtrLabelKHR", 20, -1 },
247601e04c3fSmrg
247701e04c3fSmrg   /* GL_EXT_polygon_offset_clamp */
247801e04c3fSmrg   { "glPolygonOffsetClampEXT", 11, -1 },
247901e04c3fSmrg
248001e04c3fSmrg   /* GL_KHR_robustness */
248101e04c3fSmrg   { "glGetGraphicsResetStatusKHR", 20, -1 },
248201e04c3fSmrg   { "glReadnPixelsKHR", 20, -1 },
248301e04c3fSmrg   { "glGetnUniformfvKHR", 20, -1 },
248401e04c3fSmrg   { "glGetnUniformivKHR", 20, -1 },
248501e04c3fSmrg   { "glGetnUniformuivKHR", 20, -1 },
248601e04c3fSmrg
248701e04c3fSmrg   /* GL_KHR_blend_equation_advanced */
248801e04c3fSmrg   { "glBlendBarrierKHR", 20, -1 },
248901e04c3fSmrg
249001e04c3fSmrg   /* GL_EXT_occlusion_query_boolean */
249101e04c3fSmrg   { "glGenQueriesEXT", 20, -1 },
249201e04c3fSmrg   { "glDeleteQueriesEXT", 20, -1 },
249301e04c3fSmrg   { "glIsQueryEXT", 20, -1 },
249401e04c3fSmrg   { "glBeginQueryEXT", 20, -1 },
249501e04c3fSmrg   { "glEndQueryEXT", 20, -1 },
249601e04c3fSmrg   { "glGetQueryivEXT", 20, -1 },
249701e04c3fSmrg   { "glGetQueryObjectivEXT", 20, -1 },
249801e04c3fSmrg   { "glGetQueryObjectuivEXT", 20, -1 },
249901e04c3fSmrg
25007ec681f3Smrg   /* GL_EXT_clear_texture */
25017ec681f3Smrg   { "glClearTexImageEXT", 31, -1 },
25027ec681f3Smrg   { "glClearTexSubImageEXT", 31, -1 },
25037ec681f3Smrg
25047ec681f3Smrg   /* GL_EXT_clip_control */
25057ec681f3Smrg   { "glClipControlEXT", 20, -1 },
25067ec681f3Smrg
250701e04c3fSmrg   /* GL_EXT_disjoint_timer_query */
250801e04c3fSmrg   { "glGetQueryObjecti64vEXT", 20, -1 },
250901e04c3fSmrg   { "glGetQueryObjectui64vEXT", 20, -1 },
251001e04c3fSmrg   { "glQueryCounterEXT", 20, -1 },
25117ec681f3Smrg   { "glGetInteger64vEXT", 20, -1 },
251201e04c3fSmrg
251301e04c3fSmrg   /* GL_EXT_shader_framebuffer_fetch_non_coherent */
251401e04c3fSmrg   { "glFramebufferFetchBarrierEXT", 20, -1 },
251501e04c3fSmrg
2516b9abf16eSmaya   /* GL_NV_conditional_render */
2517b9abf16eSmaya   { "glBeginConditionalRenderNV", 20, -1 },
2518b9abf16eSmaya   { "glEndConditionalRenderNV", 20, -1 },
2519b9abf16eSmaya
252001e04c3fSmrg   /* GL_NV_conservative_raster */
252101e04c3fSmrg   { "glSubpixelPrecisionBiasNV", 20, -1 },
252201e04c3fSmrg
252301e04c3fSmrg   /* GL_NV_conservative_raster_dilate */
252401e04c3fSmrg   { "glConservativeRasterParameterfNV", 20, -1 },
252501e04c3fSmrg
252601e04c3fSmrg   /* GL_NV_conservative_raster_pre_snap_triangles */
252701e04c3fSmrg   { "glConservativeRasterParameteriNV", 20, -1 },
252801e04c3fSmrg
2529b9abf16eSmaya   /* GL_EXT_multisampled_render_to_texture */
2530b9abf16eSmaya   { "glRenderbufferStorageMultisampleEXT", 20, -1 },
2531b9abf16eSmaya   { "glFramebufferTexture2DMultisampleEXT", 20, -1 },
2532b9abf16eSmaya
2533b9abf16eSmaya   /* GL_KHR_parallel_shader_compile */
2534b9abf16eSmaya   { "glMaxShaderCompilerThreadsKHR", 20, -1 },
2535b9abf16eSmaya
25367ec681f3Smrg   { "glInternalBufferSubDataCopyMESA", 20, -1 },
25377ec681f3Smrg   { "glInternalSetError", 20, -1 },
25387ec681f3Smrg
2539af69d88dSmrg   { NULL, 0, -1 }
2540af69d88dSmrg};
2541af69d88dSmrg
2542af69d88dSmrgconst struct function gles3_functions_possible[] = {
254301e04c3fSmrg   // We check for the aliased -EXT version in GLES 2
254401e04c3fSmrg   // { "glBeginQuery", 30, -1 },
2545af69d88dSmrg   { "glBeginTransformFeedback", 30, -1 },
2546af69d88dSmrg   { "glBindBufferBase", 30, -1 },
2547af69d88dSmrg   { "glBindBufferRange", 30, -1 },
2548af69d88dSmrg   { "glBindSampler", 30, -1 },
2549af69d88dSmrg   { "glBindTransformFeedback", 30, -1 },
2550af69d88dSmrg   // We check for the aliased -OES version in GLES 2
2551af69d88dSmrg   // { "glBindVertexArray", 30, -1 },
2552af69d88dSmrg   { "glBlitFramebuffer", 30, -1 },
2553af69d88dSmrg   { "glClearBufferfi", 30, -1 },
2554af69d88dSmrg   { "glClearBufferfv", 30, -1 },
2555af69d88dSmrg   { "glClearBufferiv", 30, -1 },
2556af69d88dSmrg   { "glClearBufferuiv", 30, -1 },
2557af69d88dSmrg   { "glClientWaitSync", 30, -1 },
2558af69d88dSmrg   // We check for the aliased -OES version in GLES 2
2559af69d88dSmrg   // { "glCompressedTexImage3D", 30, -1 },
2560af69d88dSmrg   // We check for the aliased -OES version in GLES 2
2561af69d88dSmrg   // { "glCompressedTexSubImage3D", 30, -1 },
2562af69d88dSmrg   { "glCopyBufferSubData", 30, -1 },
2563af69d88dSmrg   // We check for the aliased -OES version in GLES 2
2564af69d88dSmrg   // { "glCopyTexSubImage3D", 30, -1 },
256501e04c3fSmrg   // We check for the aliased -EXT version in GLES 2
256601e04c3fSmrg   // { "glDeleteQueries", 30, -1 },
2567af69d88dSmrg   { "glDeleteSamplers", 30, -1 },
2568af69d88dSmrg   { "glDeleteSync", 30, -1 },
2569af69d88dSmrg   { "glDeleteTransformFeedbacks", 30, -1 },
2570af69d88dSmrg   // We check for the aliased -OES version in GLES 2
2571af69d88dSmrg   // { "glDeleteVertexArrays", 30, -1 },
2572af69d88dSmrg   { "glDrawArraysInstanced", 30, -1 },
2573af69d88dSmrg   // We check for the aliased -NV version in GLES 2
2574af69d88dSmrg   // { "glDrawBuffers", 30, -1 },
2575af69d88dSmrg   { "glDrawElementsInstanced", 30, -1 },
2576af69d88dSmrg   { "glDrawRangeElements", 30, -1 },
25777ec681f3Smrg   { "glDrawRangeElementsBaseVertex", 30, -1 },
257801e04c3fSmrg   // We check for the aliased -EXT version in GLES 2
257901e04c3fSmrg   // { "glEndQuery", 30, -1 },
2580af69d88dSmrg   { "glEndTransformFeedback", 30, -1 },
2581af69d88dSmrg   { "glFenceSync", 30, -1 },
2582af69d88dSmrg   // We check for the aliased -EXT version in GLES 2
2583af69d88dSmrg   // { "glFlushMappedBufferRange", 30, -1 },
2584af69d88dSmrg   { "glFramebufferTextureLayer", 30, -1 },
258501e04c3fSmrg   // We check for the aliased -EXT version in GLES 2
258601e04c3fSmrg   // { "glGenQueries", 30, -1 },
2587af69d88dSmrg   { "glGenSamplers", 30, -1 },
2588af69d88dSmrg   { "glGenTransformFeedbacks", 30, -1 },
2589af69d88dSmrg   // We check for the aliased -OES version in GLES 2
2590af69d88dSmrg   // { "glGenVertexArrays", 30, -1 },
2591af69d88dSmrg   { "glGetActiveUniformBlockiv", 30, -1 },
2592af69d88dSmrg   { "glGetActiveUniformBlockName", 30, -1 },
2593af69d88dSmrg   { "glGetActiveUniformsiv", 30, -1 },
2594af69d88dSmrg   { "glGetBufferParameteri64v", 30, -1 },
2595af69d88dSmrg   // We check for the aliased -OES version in GLES 2
2596af69d88dSmrg   // { "glGetBufferPointerv", 30, -1 },
2597af69d88dSmrg   { "glGetFragDataLocation", 30, -1 },
2598af69d88dSmrg   { "glGetInteger64i_v", 30, -1 },
25997ec681f3Smrg   // We check for the aliased -EXT version in GLES 2
26007ec681f3Smrg   //{ "glGetInteger64v", 30, -1 },
2601af69d88dSmrg   { "glGetIntegeri_v", 30, -1 },
2602af69d88dSmrg   { "glGetInternalformativ", 30, -1 },
260301e04c3fSmrg   { "glGetInternalformati64v", 30, -1 },
2604af69d88dSmrg   // glGetProgramBinary aliases glGetProgramBinaryOES in GLES 2
260501e04c3fSmrg   // We check for the aliased -EXT version in GLES 2
260601e04c3fSmrg   // { "glGetQueryiv", 30, -1 },
260701e04c3fSmrg   // We check for the aliased -EXT version in GLES 2
260801e04c3fSmrg   // { "glGetQueryObjectuiv", 30, -1 },
2609af69d88dSmrg   { "glGetSamplerParameterfv", 30, -1 },
2610af69d88dSmrg   { "glGetSamplerParameteriv", 30, -1 },
2611af69d88dSmrg   { "glGetStringi", 30, -1 },
2612af69d88dSmrg   { "glGetSynciv", 30, -1 },
2613af69d88dSmrg   { "glGetTransformFeedbackVarying", 30, -1 },
2614af69d88dSmrg   { "glGetUniformBlockIndex", 30, -1 },
2615af69d88dSmrg   { "glGetUniformIndices", 30, -1 },
2616af69d88dSmrg   { "glGetUniformuiv", 30, -1 },
2617af69d88dSmrg   { "glGetVertexAttribIiv", 30, -1 },
2618af69d88dSmrg   { "glGetVertexAttribIuiv", 30, -1 },
2619af69d88dSmrg   { "glInvalidateFramebuffer", 30, -1 },
2620af69d88dSmrg   { "glInvalidateSubFramebuffer", 30, -1 },
262101e04c3fSmrg   // We check for the aliased -EXT version in GLES 2
262201e04c3fSmrg   // { "glIsQuery", 30, -1 },
2623af69d88dSmrg   { "glIsSampler", 30, -1 },
2624af69d88dSmrg   { "glIsSync", 30, -1 },
2625af69d88dSmrg   { "glIsTransformFeedback", 30, -1 },
2626af69d88dSmrg   // We check for the aliased -OES version in GLES 2
2627af69d88dSmrg   // { "glIsVertexArray", 30, -1 },
2628af69d88dSmrg   // We check for the aliased -EXT version in GLES 2
2629af69d88dSmrg   // { "glMapBufferRange", 30, -1 },
2630af69d88dSmrg   { "glPauseTransformFeedback", 30, -1 },
2631af69d88dSmrg   // glProgramBinary aliases glProgramBinaryOES in GLES 2
2632af69d88dSmrg   // glProgramParameteri aliases glProgramParameteriEXT in GLES 2
2633af69d88dSmrg   // We check for the aliased -NV version in GLES 2
2634af69d88dSmrg   // { "glReadBuffer", 30, -1 },
2635b9abf16eSmaya   // glRenderbufferStorageMultisample aliases glRenderbufferStorageMultisampleEXT in GLES 2
2636af69d88dSmrg   { "glResumeTransformFeedback", 30, -1 },
2637af69d88dSmrg   { "glSamplerParameterf", 30, -1 },
2638af69d88dSmrg   { "glSamplerParameterfv", 30, -1 },
2639af69d88dSmrg   { "glSamplerParameteri", 30, -1 },
2640af69d88dSmrg   { "glSamplerParameteriv", 30, -1 },
2641af69d88dSmrg   // We check for the aliased -OES version in GLES 2
2642af69d88dSmrg   // { "glTexImage3D", 30, -1 },
2643af69d88dSmrg   { "glTexStorage2D", 30, -1 },
2644af69d88dSmrg   { "glTexStorage3D", 30, -1 },
2645af69d88dSmrg   // We check for the aliased -OES version in GLES 2
2646af69d88dSmrg   // { "glTexSubImage3D", 30, -1 },
2647af69d88dSmrg   { "glTransformFeedbackVaryings", 30, -1 },
2648af69d88dSmrg   { "glUniform1ui", 30, -1 },
2649af69d88dSmrg   { "glUniform1uiv", 30, -1 },
2650af69d88dSmrg   { "glUniform2ui", 30, -1 },
2651af69d88dSmrg   { "glUniform2uiv", 30, -1 },
2652af69d88dSmrg   { "glUniform3ui", 30, -1 },
2653af69d88dSmrg   { "glUniform3uiv", 30, -1 },
2654af69d88dSmrg   { "glUniform4ui", 30, -1 },
2655af69d88dSmrg   { "glUniform4uiv", 30, -1 },
2656af69d88dSmrg   { "glUniformBlockBinding", 30, -1 },
2657af69d88dSmrg   { "glUniformMatrix2x3fv", 30, -1 },
2658af69d88dSmrg   { "glUniformMatrix2x4fv", 30, -1 },
2659af69d88dSmrg   { "glUniformMatrix3x2fv", 30, -1 },
2660af69d88dSmrg   { "glUniformMatrix3x4fv", 30, -1 },
2661af69d88dSmrg   { "glUniformMatrix4x2fv", 30, -1 },
2662af69d88dSmrg   { "glUniformMatrix4x3fv", 30, -1 },
2663af69d88dSmrg   // We check for the aliased -OES version in GLES 2
2664af69d88dSmrg   // { "glUnmapBuffer", 30, -1 },
2665af69d88dSmrg   { "glVertexAttribDivisor", 30, -1 },
2666af69d88dSmrg   { "glVertexAttribI4i", 30, -1 },
2667af69d88dSmrg   { "glVertexAttribI4iv", 30, -1 },
2668af69d88dSmrg   { "glVertexAttribI4ui", 30, -1 },
2669af69d88dSmrg   { "glVertexAttribI4uiv", 30, -1 },
2670af69d88dSmrg   { "glVertexAttribIPointer", 30, -1 },
2671af69d88dSmrg   { "glWaitSync", 30, -1 },
2672af69d88dSmrg
2673af69d88dSmrg   /* GL_EXT_separate_shader_objects - Also part of OpenGL ES 3.1. */
2674af69d88dSmrg   { "glProgramUniform1uiEXT", 30, -1 },
2675af69d88dSmrg   { "glProgramUniform1uivEXT", 30, -1 },
2676af69d88dSmrg   { "glProgramUniform2uiEXT", 30, -1 },
2677af69d88dSmrg   { "glProgramUniform2uivEXT", 30, -1 },
2678af69d88dSmrg   { "glProgramUniform3uiEXT", 30, -1 },
2679af69d88dSmrg   { "glProgramUniform3uivEXT", 30, -1 },
2680af69d88dSmrg   { "glProgramUniform4uiEXT", 30, -1 },
2681af69d88dSmrg   { "glProgramUniform4uivEXT", 30, -1 },
2682af69d88dSmrg
268301e04c3fSmrg   /* GL_EXT_blend_func_extended */
268401e04c3fSmrg   { "glBindFragDataLocationIndexedEXT", 30, -1 },
268501e04c3fSmrg   { "glGetFragDataIndexEXT", 30, -1 },
268601e04c3fSmrg   { "glBindFragDataLocationEXT", 30, -1 },
268701e04c3fSmrg
268801e04c3fSmrg   /* GL_OES_texture_border_clamp */
268901e04c3fSmrg   { "glTexParameterIivOES", 30, -1 },
269001e04c3fSmrg   { "glTexParameterIuivOES", 30, -1 },
269101e04c3fSmrg   { "glGetTexParameterIivOES", 30, -1 },
269201e04c3fSmrg   { "glGetTexParameterIuivOES", 30, -1 },
269301e04c3fSmrg   { "glSamplerParameterIivOES", 30, -1 },
269401e04c3fSmrg   { "glSamplerParameterIuivOES", 30, -1 },
269501e04c3fSmrg   { "glGetSamplerParameterIivOES", 30, -1 },
269601e04c3fSmrg   { "glGetSamplerParameterIuivOES", 30, -1 },
269701e04c3fSmrg
269801e04c3fSmrg   /* GL_OES_texture_buffer */
269901e04c3fSmrg   { "glTexBufferOES", 31, -1 },
270001e04c3fSmrg   { "glTexBufferRangeOES", 31, -1 },
270101e04c3fSmrg
270201e04c3fSmrg   /* GL_OES_sample_shading */
270301e04c3fSmrg   { "glMinSampleShadingOES", 30, -1 },
270401e04c3fSmrg
270501e04c3fSmrg   /* GL_OES_copy_image */
270601e04c3fSmrg   { "glCopyImageSubDataOES", 30, -1 },
270701e04c3fSmrg
270801e04c3fSmrg   /* GL_OES_draw_buffers_indexed */
270901e04c3fSmrg   { "glBlendFunciOES", 30, -1 },
271001e04c3fSmrg   { "glBlendFuncSeparateiOES", 30, -1 },
271101e04c3fSmrg   { "glBlendEquationiOES", 30, -1 },
271201e04c3fSmrg   { "glBlendEquationSeparateiOES", 30, -1 },
271301e04c3fSmrg   { "glColorMaskiOES", 30, -1 },
271401e04c3fSmrg   { "glEnableiOES", 30, -1 },
271501e04c3fSmrg   { "glDisableiOES", 30, -1 },
271601e04c3fSmrg   { "glIsEnablediOES", 30, -1 },
271701e04c3fSmrg
271801e04c3fSmrg   /* GL_EXT_base_instance */
271901e04c3fSmrg   { "glDrawArraysInstancedBaseInstanceEXT", 30, -1 },
272001e04c3fSmrg   { "glDrawElementsInstancedBaseInstanceEXT", 30, -1 },
272101e04c3fSmrg   { "glDrawElementsInstancedBaseVertexBaseInstanceEXT", 30, -1 },
272201e04c3fSmrg
272301e04c3fSmrg   /* GL_EXT_window_rectangles */
272401e04c3fSmrg   { "glWindowRectanglesEXT", 30, -1 },
272501e04c3fSmrg
272601e04c3fSmrg   /* GL_AMD_framebuffer_multisample_advanced */
272701e04c3fSmrg   { "glRenderbufferStorageMultisampleAdvancedAMD", 11, -1 },
272801e04c3fSmrg   { "glNamedRenderbufferStorageMultisampleAdvancedAMD", 11, -1 },
272901e04c3fSmrg
27307ec681f3Smrg   /* GL_MESA_framebuffer_flip_y */
27317ec681f3Smrg   { "glFramebufferParameteriMESA", 30, -1 },
27327ec681f3Smrg   { "glGetFramebufferParameterivMESA", 30, -1 },
27337ec681f3Smrg
27347ec681f3Smrg   /* EXT_EGL_image_storage */
27357ec681f3Smrg   { "glEGLImageTargetTexStorageEXT", 30, -1 },
27367ec681f3Smrg
27377ec681f3Smrg   { "glDrawElementsInstancedBaseVertex", 30, -1 },
27387ec681f3Smrg
2739af69d88dSmrg   { NULL, 0, -1 }
2740af69d88dSmrg};
274101e04c3fSmrg
274201e04c3fSmrgconst struct function gles31_functions_possible[] = {
274301e04c3fSmrg   { "glDispatchCompute", 31, -1 },
274401e04c3fSmrg   { "glDispatchComputeIndirect", 31, -1 },
274501e04c3fSmrg   { "glDrawArraysIndirect", 31, -1 },
274601e04c3fSmrg   { "glDrawElementsIndirect", 31, -1 },
274701e04c3fSmrg
274801e04c3fSmrg   { "glFramebufferParameteri", 31, -1 },
274901e04c3fSmrg   { "glGetFramebufferParameteriv", 31, -1 },
275001e04c3fSmrg
275101e04c3fSmrg   { "glGetProgramInterfaceiv", 31, -1 },
275201e04c3fSmrg   { "glGetProgramResourceIndex", 31, -1 },
275301e04c3fSmrg   { "glGetProgramResourceName", 31, -1 },
275401e04c3fSmrg   { "glGetProgramResourceiv", 31, -1 },
275501e04c3fSmrg   { "glGetProgramResourceLocation", 31, -1 },
275601e04c3fSmrg
275701e04c3fSmrg   // We check for the aliased EXT versions in GLES 2
275801e04c3fSmrg   // { "glUseProgramStages", 31, -1 },
275901e04c3fSmrg   // { "glActiveShaderProgram", 31, -1 },
276001e04c3fSmrg   // { "glCreateShaderProgramv", 31, -1 },
276101e04c3fSmrg   // { "glBindProgramPipeline", 31, -1 },
276201e04c3fSmrg   // { "glDeleteProgramPipelines", 31, -1 },
276301e04c3fSmrg   // { "glGenProgramPipelines", 31, -1 },
276401e04c3fSmrg   // { "glIsProgramPipeline", 31, -1 },
276501e04c3fSmrg   // { "glGetProgramPipelineiv", 31, -1 },
276601e04c3fSmrg   // { "glProgramUniform1i", 31, -1 },
276701e04c3fSmrg   // { "glProgramUniform2i", 31, -1 },
276801e04c3fSmrg   // { "glProgramUniform3i", 31, -1 },
276901e04c3fSmrg   // { "glProgramUniform4i", 31, -1 },
277001e04c3fSmrg   // { "glProgramUniform1f", 31, -1 },
277101e04c3fSmrg   // { "glProgramUniform2f", 31, -1 },
277201e04c3fSmrg   // { "glProgramUniform3f", 31, -1 },
277301e04c3fSmrg   // { "glProgramUniform4f", 31, -1 },
277401e04c3fSmrg   // { "glProgramUniform1iv", 31, -1 },
277501e04c3fSmrg   // { "glProgramUniform2iv", 31, -1 },
277601e04c3fSmrg   // { "glProgramUniform3iv", 31, -1 },
277701e04c3fSmrg   // { "glProgramUniform4iv", 31, -1 },
277801e04c3fSmrg   // { "glProgramUniform1fv", 31, -1 },
277901e04c3fSmrg   // { "glProgramUniform2fv", 31, -1 },
278001e04c3fSmrg   // { "glProgramUniform3fv", 31, -1 },
278101e04c3fSmrg   // { "glProgramUniform4fv", 31, -1 },
278201e04c3fSmrg   // { "glProgramUniformMatrix2fv", 31, -1 },
278301e04c3fSmrg   // { "glProgramUniformMatrix3fv", 31, -1 },
278401e04c3fSmrg   // { "glProgramUniformMatrix4fv", 31, -1 },
278501e04c3fSmrg   // { "glProgramUniformMatrix2x3fv", 31, -1 },
278601e04c3fSmrg   // { "glProgramUniformMatrix3x2fv", 31, -1 },
278701e04c3fSmrg   // { "glProgramUniformMatrix2x4fv", 31, -1 },
278801e04c3fSmrg   // { "glProgramUniformMatrix4x2fv", 31, -1 },
278901e04c3fSmrg   // { "glProgramUniformMatrix3x4fv", 31, -1 },
279001e04c3fSmrg   // { "glProgramUniformMatrix4x3fv", 31, -1 },
279101e04c3fSmrg   // { "glValidateProgramPipeline", 31, -1 },
279201e04c3fSmrg   // { "glGetProgramPipelineInfoLog", 31, -1 },
279301e04c3fSmrg
279401e04c3fSmrg   // We check for the aliased EXT versions in GLES 3
279501e04c3fSmrg   // { "glProgramUniform1ui", 31, -1 },
279601e04c3fSmrg   // { "glProgramUniform2ui", 31, -1 },
279701e04c3fSmrg   // { "glProgramUniform3ui", 31, -1 },
279801e04c3fSmrg   // { "glProgramUniform4ui", 31, -1 },
279901e04c3fSmrg   // { "glProgramUniform1uiv", 31, -1 },
280001e04c3fSmrg   // { "glProgramUniform2uiv", 31, -1 },
280101e04c3fSmrg   // { "glProgramUniform3uiv", 31, -1 },
280201e04c3fSmrg   // { "glProgramUniform4uiv", 31, -1 },
280301e04c3fSmrg
280401e04c3fSmrg   { "glBindImageTexture", 31, -1 },
280501e04c3fSmrg   { "glGetBooleani_v", 31, -1 },
280601e04c3fSmrg   { "glMemoryBarrier", 31, -1 },
280701e04c3fSmrg
280801e04c3fSmrg   { "glMemoryBarrierByRegion", 31, -1 },
280901e04c3fSmrg
281001e04c3fSmrg   { "glTexStorage2DMultisample", 31, -1 },
281101e04c3fSmrg   { "glGetMultisamplefv", 31, -1 },
281201e04c3fSmrg   { "glSampleMaski", 31, -1 },
281301e04c3fSmrg   { "glGetTexLevelParameteriv", 31, -1 },
281401e04c3fSmrg   { "glGetTexLevelParameterfv", 31, -1 },
281501e04c3fSmrg   { "glBindVertexBuffer", 31, -1 },
281601e04c3fSmrg   { "glVertexAttribFormat", 31, -1 },
281701e04c3fSmrg   { "glVertexAttribIFormat", 31, -1 },
281801e04c3fSmrg   { "glVertexAttribBinding", 31, -1 },
281901e04c3fSmrg   { "glVertexBindingDivisor", 31, -1 },
282001e04c3fSmrg
282101e04c3fSmrg   /* GL_OES_texture_storage_multisample_2d_array */
282201e04c3fSmrg   { "glTexStorage3DMultisampleOES", 31, -1 },
282301e04c3fSmrg
282401e04c3fSmrg   /* GL_OES_texture_view */
282501e04c3fSmrg   { "glTextureViewOES", 31, -1 },
282601e04c3fSmrg
282701e04c3fSmrg   /* GL_EXT_buffer_storage */
282801e04c3fSmrg   { "glBufferStorageEXT", 31, -1 },
282901e04c3fSmrg
283001e04c3fSmrg   /* GL_EXT_blend_func_extended */
283101e04c3fSmrg   { "glGetProgramResourceLocationIndexEXT", 31, -1 },
283201e04c3fSmrg
283301e04c3fSmrg   /* GL_OES_geometry_shader */
283401e04c3fSmrg   { "glFramebufferTextureOES", 31, -1},
283501e04c3fSmrg
283601e04c3fSmrg   /* GL_EXT_geometry_shader */
283701e04c3fSmrg   // We check for the aliased OES version above
283801e04c3fSmrg   // { "glFramebufferTextureEXT", 31, -1},
283901e04c3fSmrg
284001e04c3fSmrg   /* GL_OES_tessellation_shader */
284101e04c3fSmrg   { "glPatchParameteriOES", 31, -1 },
284201e04c3fSmrg
284301e04c3fSmrg   /* GL_OES_primitive_bound_box */
284401e04c3fSmrg   { "glPrimitiveBoundingBoxOES", 31, -1 },
284501e04c3fSmrg
284601e04c3fSmrg   /* GL_OES_viewport_array */
284701e04c3fSmrg   { "glViewportArrayvOES", 31, -1 },
284801e04c3fSmrg   { "glViewportIndexedfOES", 31, -1 },
284901e04c3fSmrg   { "glViewportIndexedfvOES", 31, -1 },
285001e04c3fSmrg   { "glScissorArrayvOES", 31, -1 },
285101e04c3fSmrg   { "glScissorIndexedOES", 31, -1 },
285201e04c3fSmrg   { "glScissorIndexedvOES", 31, -1 },
285301e04c3fSmrg   { "glDepthRangeArrayfvOES", 31, -1 },
285401e04c3fSmrg   { "glDepthRangeIndexedfOES", 31, -1 },
285501e04c3fSmrg   { "glGetFloati_vOES", 31, -1 },
285601e04c3fSmrg
285701e04c3fSmrg   /* GL_ARB_sample_locations */
285801e04c3fSmrg   { "glFramebufferSampleLocationsfvARB", 31, -1 },
285901e04c3fSmrg   { "glNamedFramebufferSampleLocationsfvARB", 31, -1 },
286001e04c3fSmrg   { "glEvaluateDepthValuesARB", 31, -1 },
286101e04c3fSmrg
28627ec681f3Smrg   /* GL_NV_viewport_swizzle */
28637ec681f3Smrg   { "glViewportSwizzleNV", 31, -1 },
28647ec681f3Smrg
286501e04c3fSmrg   { NULL, 0, -1 },
286601e04c3fSmrg };
2867