1 // GENERATED FILE - DO NOT EDIT.
2 // Generated by generate_gl_dispatch_table.py using data from gl_bindings_data.json and gl.xml.
3 //
4 // Copyright 2017 The ANGLE Project Authors. All rights reserved.
5 // Use of this source code is governed by a BSD-style license that can be
6 // found in the LICENSE file.
7 //
8 // DispatchTableGL_autogen.h:
9 //   Defines the native binding interface for ANGLE's OpenGL back-end.
10 
11 #ifndef LIBGLESV2_RENDERER_GL_DISPATCH_TABLE_GL_AUTOGEN_H_
12 #define LIBGLESV2_RENDERER_GL_DISPATCH_TABLE_GL_AUTOGEN_H_
13 
14 #include "common/angleutils.h"
15 #include "libANGLE/renderer/gl/functionsgl_typedefs.h"
16 
17 #include <set>
18 
19 namespace gl
20 {
21 struct Version;
22 }  // namespace gl
23 
24 namespace rx
25 {
26 class DispatchTableGL : angle::NonCopyable
27 {
28   public:
29     // clang-format off
30     // 1.0
31     PFNGLBLENDFUNCPROC blendFunc = nullptr;
32     PFNGLCLEARPROC clear = nullptr;
33     PFNGLCLEARCOLORPROC clearColor = nullptr;
34     PFNGLCLEARDEPTHPROC clearDepth = nullptr;
35     PFNGLCLEARSTENCILPROC clearStencil = nullptr;
36     PFNGLCOLORMASKPROC colorMask = nullptr;
37     PFNGLCULLFACEPROC cullFace = nullptr;
38     PFNGLDEPTHFUNCPROC depthFunc = nullptr;
39     PFNGLDEPTHMASKPROC depthMask = nullptr;
40     PFNGLDEPTHRANGEPROC depthRange = nullptr;
41     PFNGLDISABLEPROC disable = nullptr;
42     PFNGLDRAWBUFFERPROC drawBuffer = nullptr;
43     PFNGLENABLEPROC enable = nullptr;
44     PFNGLFINISHPROC finish = nullptr;
45     PFNGLFLUSHPROC flush = nullptr;
46     PFNGLFRONTFACEPROC frontFace = nullptr;
47     PFNGLGETBOOLEANVPROC getBooleanv = nullptr;
48     PFNGLGETDOUBLEVPROC getDoublev = nullptr;
49     PFNGLGETERRORPROC getError = nullptr;
50     PFNGLGETFLOATVPROC getFloatv = nullptr;
51     PFNGLGETINTEGERVPROC getIntegerv = nullptr;
52     PFNGLGETSTRINGPROC getString = nullptr;
53     PFNGLGETTEXIMAGEPROC getTexImage = nullptr;
54     PFNGLGETTEXLEVELPARAMETERFVPROC getTexLevelParameterfv = nullptr;
55     PFNGLGETTEXLEVELPARAMETERIVPROC getTexLevelParameteriv = nullptr;
56     PFNGLGETTEXPARAMETERFVPROC getTexParameterfv = nullptr;
57     PFNGLGETTEXPARAMETERIVPROC getTexParameteriv = nullptr;
58     PFNGLHINTPROC hint = nullptr;
59     PFNGLISENABLEDPROC isEnabled = nullptr;
60     PFNGLLINEWIDTHPROC lineWidth = nullptr;
61     PFNGLLOGICOPPROC logicOp = nullptr;
62     PFNGLPIXELSTOREFPROC pixelStoref = nullptr;
63     PFNGLPIXELSTOREIPROC pixelStorei = nullptr;
64     PFNGLPOINTSIZEPROC pointSize = nullptr;
65     PFNGLPOLYGONMODEPROC polygonMode = nullptr;
66     PFNGLREADBUFFERPROC readBuffer = nullptr;
67     PFNGLREADPIXELSPROC readPixels = nullptr;
68     PFNGLSCISSORPROC scissor = nullptr;
69     PFNGLSTENCILFUNCPROC stencilFunc = nullptr;
70     PFNGLSTENCILMASKPROC stencilMask = nullptr;
71     PFNGLSTENCILOPPROC stencilOp = nullptr;
72     PFNGLTEXIMAGE1DPROC texImage1D = nullptr;
73     PFNGLTEXIMAGE2DPROC texImage2D = nullptr;
74     PFNGLTEXPARAMETERFPROC texParameterf = nullptr;
75     PFNGLTEXPARAMETERFVPROC texParameterfv = nullptr;
76     PFNGLTEXPARAMETERIPROC texParameteri = nullptr;
77     PFNGLTEXPARAMETERIVPROC texParameteriv = nullptr;
78     PFNGLVIEWPORTPROC viewport = nullptr;
79 
80     // 1.1
81     PFNGLBINDTEXTUREPROC bindTexture = nullptr;
82     PFNGLCOPYTEXIMAGE1DPROC copyTexImage1D = nullptr;
83     PFNGLCOPYTEXIMAGE2DPROC copyTexImage2D = nullptr;
84     PFNGLCOPYTEXSUBIMAGE1DPROC copyTexSubImage1D = nullptr;
85     PFNGLCOPYTEXSUBIMAGE2DPROC copyTexSubImage2D = nullptr;
86     PFNGLDELETETEXTURESPROC deleteTextures = nullptr;
87     PFNGLDRAWARRAYSPROC drawArrays = nullptr;
88     PFNGLDRAWELEMENTSPROC drawElements = nullptr;
89     PFNGLGENTEXTURESPROC genTextures = nullptr;
90     PFNGLISTEXTUREPROC isTexture = nullptr;
91     PFNGLPOLYGONOFFSETPROC polygonOffset = nullptr;
92     PFNGLTEXSUBIMAGE1DPROC texSubImage1D = nullptr;
93     PFNGLTEXSUBIMAGE2DPROC texSubImage2D = nullptr;
94 
95     // 1.2
96     PFNGLBLENDCOLORPROC blendColor = nullptr;
97     PFNGLBLENDEQUATIONPROC blendEquation = nullptr;
98     PFNGLCOPYTEXSUBIMAGE3DPROC copyTexSubImage3D = nullptr;
99     PFNGLDRAWRANGEELEMENTSPROC drawRangeElements = nullptr;
100     PFNGLTEXIMAGE3DPROC texImage3D = nullptr;
101     PFNGLTEXSUBIMAGE3DPROC texSubImage3D = nullptr;
102 
103     // 1.2 Extensions
104     PFNGLDELETEFENCESNVPROC deleteFencesNV = nullptr;
105     PFNGLFINISHFENCENVPROC finishFenceNV = nullptr;
106     PFNGLGENFENCESNVPROC genFencesNV = nullptr;
107     PFNGLGETFENCEIVNVPROC getFenceivNV = nullptr;
108     PFNGLISFENCENVPROC isFenceNV = nullptr;
109     PFNGLSETFENCENVPROC setFenceNV = nullptr;
110     PFNGLTESTFENCENVPROC testFenceNV = nullptr;
111 
112     // 1.3
113     PFNGLACTIVETEXTUREPROC activeTexture = nullptr;
114     PFNGLCOMPRESSEDTEXIMAGE1DPROC compressedTexImage1D = nullptr;
115     PFNGLCOMPRESSEDTEXIMAGE2DPROC compressedTexImage2D = nullptr;
116     PFNGLCOMPRESSEDTEXIMAGE3DPROC compressedTexImage3D = nullptr;
117     PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC compressedTexSubImage1D = nullptr;
118     PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC compressedTexSubImage2D = nullptr;
119     PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC compressedTexSubImage3D = nullptr;
120     PFNGLGETCOMPRESSEDTEXIMAGEPROC getCompressedTexImage = nullptr;
121     PFNGLSAMPLECOVERAGEPROC sampleCoverage = nullptr;
122 
123     // 1.4
124     PFNGLBLENDFUNCSEPARATEPROC blendFuncSeparate = nullptr;
125     PFNGLMULTIDRAWARRAYSPROC multiDrawArrays = nullptr;
126     PFNGLMULTIDRAWELEMENTSPROC multiDrawElements = nullptr;
127     PFNGLPOINTPARAMETERFPROC pointParameterf = nullptr;
128     PFNGLPOINTPARAMETERFVPROC pointParameterfv = nullptr;
129     PFNGLPOINTPARAMETERIPROC pointParameteri = nullptr;
130     PFNGLPOINTPARAMETERIVPROC pointParameteriv = nullptr;
131 
132     // 1.5
133     PFNGLBEGINQUERYPROC beginQuery = nullptr;
134     PFNGLBINDBUFFERPROC bindBuffer = nullptr;
135     PFNGLBUFFERDATAPROC bufferData = nullptr;
136     PFNGLBUFFERSUBDATAPROC bufferSubData = nullptr;
137     PFNGLDELETEBUFFERSPROC deleteBuffers = nullptr;
138     PFNGLDELETEQUERIESPROC deleteQueries = nullptr;
139     PFNGLENDQUERYPROC endQuery = nullptr;
140     PFNGLGENBUFFERSPROC genBuffers = nullptr;
141     PFNGLGENQUERIESPROC genQueries = nullptr;
142     PFNGLGETBUFFERPARAMETERIVPROC getBufferParameteriv = nullptr;
143     PFNGLGETBUFFERPOINTERVPROC getBufferPointerv = nullptr;
144     PFNGLGETBUFFERSUBDATAPROC getBufferSubData = nullptr;
145     PFNGLGETQUERYOBJECTIVPROC getQueryObjectiv = nullptr;
146     PFNGLGETQUERYOBJECTUIVPROC getQueryObjectuiv = nullptr;
147     PFNGLGETQUERYIVPROC getQueryiv = nullptr;
148     PFNGLISBUFFERPROC isBuffer = nullptr;
149     PFNGLISQUERYPROC isQuery = nullptr;
150     PFNGLMAPBUFFERPROC mapBuffer = nullptr;
151     PFNGLUNMAPBUFFERPROC unmapBuffer = nullptr;
152 
153     // 2.0
154     PFNGLATTACHSHADERPROC attachShader = nullptr;
155     PFNGLBINDATTRIBLOCATIONPROC bindAttribLocation = nullptr;
156     PFNGLBLENDEQUATIONSEPARATEPROC blendEquationSeparate = nullptr;
157     PFNGLCOMPILESHADERPROC compileShader = nullptr;
158     PFNGLCREATEPROGRAMPROC createProgram = nullptr;
159     PFNGLCREATESHADERPROC createShader = nullptr;
160     PFNGLDELETEPROGRAMPROC deleteProgram = nullptr;
161     PFNGLDELETESHADERPROC deleteShader = nullptr;
162     PFNGLDETACHSHADERPROC detachShader = nullptr;
163     PFNGLDISABLEVERTEXATTRIBARRAYPROC disableVertexAttribArray = nullptr;
164     PFNGLDRAWBUFFERSPROC drawBuffers = nullptr;
165     PFNGLENABLEVERTEXATTRIBARRAYPROC enableVertexAttribArray = nullptr;
166     PFNGLGETACTIVEATTRIBPROC getActiveAttrib = nullptr;
167     PFNGLGETACTIVEUNIFORMPROC getActiveUniform = nullptr;
168     PFNGLGETATTACHEDSHADERSPROC getAttachedShaders = nullptr;
169     PFNGLGETATTRIBLOCATIONPROC getAttribLocation = nullptr;
170     PFNGLGETPROGRAMINFOLOGPROC getProgramInfoLog = nullptr;
171     PFNGLGETPROGRAMIVPROC getProgramiv = nullptr;
172     PFNGLGETSHADERINFOLOGPROC getShaderInfoLog = nullptr;
173     PFNGLGETSHADERSOURCEPROC getShaderSource = nullptr;
174     PFNGLGETSHADERIVPROC getShaderiv = nullptr;
175     PFNGLGETUNIFORMLOCATIONPROC getUniformLocation = nullptr;
176     PFNGLGETUNIFORMFVPROC getUniformfv = nullptr;
177     PFNGLGETUNIFORMIVPROC getUniformiv = nullptr;
178     PFNGLGETVERTEXATTRIBPOINTERVPROC getVertexAttribPointerv = nullptr;
179     PFNGLGETVERTEXATTRIBDVPROC getVertexAttribdv = nullptr;
180     PFNGLGETVERTEXATTRIBFVPROC getVertexAttribfv = nullptr;
181     PFNGLGETVERTEXATTRIBIVPROC getVertexAttribiv = nullptr;
182     PFNGLISPROGRAMPROC isProgram = nullptr;
183     PFNGLISSHADERPROC isShader = nullptr;
184     PFNGLLINKPROGRAMPROC linkProgram = nullptr;
185     PFNGLSHADERSOURCEPROC shaderSource = nullptr;
186     PFNGLSTENCILFUNCSEPARATEPROC stencilFuncSeparate = nullptr;
187     PFNGLSTENCILMASKSEPARATEPROC stencilMaskSeparate = nullptr;
188     PFNGLSTENCILOPSEPARATEPROC stencilOpSeparate = nullptr;
189     PFNGLUNIFORM1FPROC uniform1f = nullptr;
190     PFNGLUNIFORM1FVPROC uniform1fv = nullptr;
191     PFNGLUNIFORM1IPROC uniform1i = nullptr;
192     PFNGLUNIFORM1IVPROC uniform1iv = nullptr;
193     PFNGLUNIFORM2FPROC uniform2f = nullptr;
194     PFNGLUNIFORM2FVPROC uniform2fv = nullptr;
195     PFNGLUNIFORM2IPROC uniform2i = nullptr;
196     PFNGLUNIFORM2IVPROC uniform2iv = nullptr;
197     PFNGLUNIFORM3FPROC uniform3f = nullptr;
198     PFNGLUNIFORM3FVPROC uniform3fv = nullptr;
199     PFNGLUNIFORM3IPROC uniform3i = nullptr;
200     PFNGLUNIFORM3IVPROC uniform3iv = nullptr;
201     PFNGLUNIFORM4FPROC uniform4f = nullptr;
202     PFNGLUNIFORM4FVPROC uniform4fv = nullptr;
203     PFNGLUNIFORM4IPROC uniform4i = nullptr;
204     PFNGLUNIFORM4IVPROC uniform4iv = nullptr;
205     PFNGLUNIFORMMATRIX2FVPROC uniformMatrix2fv = nullptr;
206     PFNGLUNIFORMMATRIX3FVPROC uniformMatrix3fv = nullptr;
207     PFNGLUNIFORMMATRIX4FVPROC uniformMatrix4fv = nullptr;
208     PFNGLUSEPROGRAMPROC useProgram = nullptr;
209     PFNGLVALIDATEPROGRAMPROC validateProgram = nullptr;
210     PFNGLVERTEXATTRIB1DPROC vertexAttrib1d = nullptr;
211     PFNGLVERTEXATTRIB1DVPROC vertexAttrib1dv = nullptr;
212     PFNGLVERTEXATTRIB1FPROC vertexAttrib1f = nullptr;
213     PFNGLVERTEXATTRIB1FVPROC vertexAttrib1fv = nullptr;
214     PFNGLVERTEXATTRIB1SPROC vertexAttrib1s = nullptr;
215     PFNGLVERTEXATTRIB1SVPROC vertexAttrib1sv = nullptr;
216     PFNGLVERTEXATTRIB2DPROC vertexAttrib2d = nullptr;
217     PFNGLVERTEXATTRIB2DVPROC vertexAttrib2dv = nullptr;
218     PFNGLVERTEXATTRIB2FPROC vertexAttrib2f = nullptr;
219     PFNGLVERTEXATTRIB2FVPROC vertexAttrib2fv = nullptr;
220     PFNGLVERTEXATTRIB2SPROC vertexAttrib2s = nullptr;
221     PFNGLVERTEXATTRIB2SVPROC vertexAttrib2sv = nullptr;
222     PFNGLVERTEXATTRIB3DPROC vertexAttrib3d = nullptr;
223     PFNGLVERTEXATTRIB3DVPROC vertexAttrib3dv = nullptr;
224     PFNGLVERTEXATTRIB3FPROC vertexAttrib3f = nullptr;
225     PFNGLVERTEXATTRIB3FVPROC vertexAttrib3fv = nullptr;
226     PFNGLVERTEXATTRIB3SPROC vertexAttrib3s = nullptr;
227     PFNGLVERTEXATTRIB3SVPROC vertexAttrib3sv = nullptr;
228     PFNGLVERTEXATTRIB4NBVPROC vertexAttrib4Nbv = nullptr;
229     PFNGLVERTEXATTRIB4NIVPROC vertexAttrib4Niv = nullptr;
230     PFNGLVERTEXATTRIB4NSVPROC vertexAttrib4Nsv = nullptr;
231     PFNGLVERTEXATTRIB4NUBPROC vertexAttrib4Nub = nullptr;
232     PFNGLVERTEXATTRIB4NUBVPROC vertexAttrib4Nubv = nullptr;
233     PFNGLVERTEXATTRIB4NUIVPROC vertexAttrib4Nuiv = nullptr;
234     PFNGLVERTEXATTRIB4NUSVPROC vertexAttrib4Nusv = nullptr;
235     PFNGLVERTEXATTRIB4BVPROC vertexAttrib4bv = nullptr;
236     PFNGLVERTEXATTRIB4DPROC vertexAttrib4d = nullptr;
237     PFNGLVERTEXATTRIB4DVPROC vertexAttrib4dv = nullptr;
238     PFNGLVERTEXATTRIB4FPROC vertexAttrib4f = nullptr;
239     PFNGLVERTEXATTRIB4FVPROC vertexAttrib4fv = nullptr;
240     PFNGLVERTEXATTRIB4IVPROC vertexAttrib4iv = nullptr;
241     PFNGLVERTEXATTRIB4SPROC vertexAttrib4s = nullptr;
242     PFNGLVERTEXATTRIB4SVPROC vertexAttrib4sv = nullptr;
243     PFNGLVERTEXATTRIB4UBVPROC vertexAttrib4ubv = nullptr;
244     PFNGLVERTEXATTRIB4UIVPROC vertexAttrib4uiv = nullptr;
245     PFNGLVERTEXATTRIB4USVPROC vertexAttrib4usv = nullptr;
246     PFNGLVERTEXATTRIBPOINTERPROC vertexAttribPointer = nullptr;
247 
248     // 2.1
249     PFNGLUNIFORMMATRIX2X3FVPROC uniformMatrix2x3fv = nullptr;
250     PFNGLUNIFORMMATRIX2X4FVPROC uniformMatrix2x4fv = nullptr;
251     PFNGLUNIFORMMATRIX3X2FVPROC uniformMatrix3x2fv = nullptr;
252     PFNGLUNIFORMMATRIX3X4FVPROC uniformMatrix3x4fv = nullptr;
253     PFNGLUNIFORMMATRIX4X2FVPROC uniformMatrix4x2fv = nullptr;
254     PFNGLUNIFORMMATRIX4X3FVPROC uniformMatrix4x3fv = nullptr;
255 
256     // 3.0
257     PFNGLBEGINCONDITIONALRENDERPROC beginConditionalRender = nullptr;
258     PFNGLBEGINTRANSFORMFEEDBACKPROC beginTransformFeedback = nullptr;
259     PFNGLBINDBUFFERBASEPROC bindBufferBase = nullptr;
260     PFNGLBINDBUFFERRANGEPROC bindBufferRange = nullptr;
261     PFNGLBINDFRAGDATALOCATIONPROC bindFragDataLocation = nullptr;
262     PFNGLBINDFRAMEBUFFERPROC bindFramebuffer = nullptr;
263     PFNGLBINDRENDERBUFFERPROC bindRenderbuffer = nullptr;
264     PFNGLBINDVERTEXARRAYPROC bindVertexArray = nullptr;
265     PFNGLBLITFRAMEBUFFERPROC blitFramebuffer = nullptr;
266     PFNGLCHECKFRAMEBUFFERSTATUSPROC checkFramebufferStatus = nullptr;
267     PFNGLCLAMPCOLORPROC clampColor = nullptr;
268     PFNGLCLEARBUFFERFIPROC clearBufferfi = nullptr;
269     PFNGLCLEARBUFFERFVPROC clearBufferfv = nullptr;
270     PFNGLCLEARBUFFERIVPROC clearBufferiv = nullptr;
271     PFNGLCLEARBUFFERUIVPROC clearBufferuiv = nullptr;
272     PFNGLCOLORMASKIPROC colorMaski = nullptr;
273     PFNGLDELETEFRAMEBUFFERSPROC deleteFramebuffers = nullptr;
274     PFNGLDELETERENDERBUFFERSPROC deleteRenderbuffers = nullptr;
275     PFNGLDELETEVERTEXARRAYSPROC deleteVertexArrays = nullptr;
276     PFNGLDISABLEIPROC disablei = nullptr;
277     PFNGLENABLEIPROC enablei = nullptr;
278     PFNGLENDCONDITIONALRENDERPROC endConditionalRender = nullptr;
279     PFNGLENDTRANSFORMFEEDBACKPROC endTransformFeedback = nullptr;
280     PFNGLFLUSHMAPPEDBUFFERRANGEPROC flushMappedBufferRange = nullptr;
281     PFNGLFRAMEBUFFERRENDERBUFFERPROC framebufferRenderbuffer = nullptr;
282     PFNGLFRAMEBUFFERTEXTURE1DPROC framebufferTexture1D = nullptr;
283     PFNGLFRAMEBUFFERTEXTURE2DPROC framebufferTexture2D = nullptr;
284     PFNGLFRAMEBUFFERTEXTURE3DPROC framebufferTexture3D = nullptr;
285     PFNGLFRAMEBUFFERTEXTURELAYERPROC framebufferTextureLayer = nullptr;
286     PFNGLGENFRAMEBUFFERSPROC genFramebuffers = nullptr;
287     PFNGLGENRENDERBUFFERSPROC genRenderbuffers = nullptr;
288     PFNGLGENVERTEXARRAYSPROC genVertexArrays = nullptr;
289     PFNGLGENERATEMIPMAPPROC generateMipmap = nullptr;
290     PFNGLGETBOOLEANI_VPROC getBooleani_v = nullptr;
291     PFNGLGETFRAGDATALOCATIONPROC getFragDataLocation = nullptr;
292     PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC getFramebufferAttachmentParameteriv = nullptr;
293     PFNGLGETINTEGERI_VPROC getIntegeri_v = nullptr;
294     PFNGLGETRENDERBUFFERPARAMETERIVPROC getRenderbufferParameteriv = nullptr;
295     PFNGLGETSTRINGIPROC getStringi = nullptr;
296     PFNGLGETTEXPARAMETERIIVPROC getTexParameterIiv = nullptr;
297     PFNGLGETTEXPARAMETERIUIVPROC getTexParameterIuiv = nullptr;
298     PFNGLGETTRANSFORMFEEDBACKVARYINGPROC getTransformFeedbackVarying = nullptr;
299     PFNGLGETUNIFORMUIVPROC getUniformuiv = nullptr;
300     PFNGLGETVERTEXATTRIBIIVPROC getVertexAttribIiv = nullptr;
301     PFNGLGETVERTEXATTRIBIUIVPROC getVertexAttribIuiv = nullptr;
302     PFNGLISENABLEDIPROC isEnabledi = nullptr;
303     PFNGLISFRAMEBUFFERPROC isFramebuffer = nullptr;
304     PFNGLISRENDERBUFFERPROC isRenderbuffer = nullptr;
305     PFNGLISVERTEXARRAYPROC isVertexArray = nullptr;
306     PFNGLMAPBUFFERRANGEPROC mapBufferRange = nullptr;
307     PFNGLRENDERBUFFERSTORAGEPROC renderbufferStorage = nullptr;
308     PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC renderbufferStorageMultisample = nullptr;
309     PFNGLTEXPARAMETERIIVPROC texParameterIiv = nullptr;
310     PFNGLTEXPARAMETERIUIVPROC texParameterIuiv = nullptr;
311     PFNGLTRANSFORMFEEDBACKVARYINGSPROC transformFeedbackVaryings = nullptr;
312     PFNGLUNIFORM1UIPROC uniform1ui = nullptr;
313     PFNGLUNIFORM1UIVPROC uniform1uiv = nullptr;
314     PFNGLUNIFORM2UIPROC uniform2ui = nullptr;
315     PFNGLUNIFORM2UIVPROC uniform2uiv = nullptr;
316     PFNGLUNIFORM3UIPROC uniform3ui = nullptr;
317     PFNGLUNIFORM3UIVPROC uniform3uiv = nullptr;
318     PFNGLUNIFORM4UIPROC uniform4ui = nullptr;
319     PFNGLUNIFORM4UIVPROC uniform4uiv = nullptr;
320     PFNGLVERTEXATTRIBI1IPROC vertexAttribI1i = nullptr;
321     PFNGLVERTEXATTRIBI1IVPROC vertexAttribI1iv = nullptr;
322     PFNGLVERTEXATTRIBI1UIPROC vertexAttribI1ui = nullptr;
323     PFNGLVERTEXATTRIBI1UIVPROC vertexAttribI1uiv = nullptr;
324     PFNGLVERTEXATTRIBI2IPROC vertexAttribI2i = nullptr;
325     PFNGLVERTEXATTRIBI2IVPROC vertexAttribI2iv = nullptr;
326     PFNGLVERTEXATTRIBI2UIPROC vertexAttribI2ui = nullptr;
327     PFNGLVERTEXATTRIBI2UIVPROC vertexAttribI2uiv = nullptr;
328     PFNGLVERTEXATTRIBI3IPROC vertexAttribI3i = nullptr;
329     PFNGLVERTEXATTRIBI3IVPROC vertexAttribI3iv = nullptr;
330     PFNGLVERTEXATTRIBI3UIPROC vertexAttribI3ui = nullptr;
331     PFNGLVERTEXATTRIBI3UIVPROC vertexAttribI3uiv = nullptr;
332     PFNGLVERTEXATTRIBI4BVPROC vertexAttribI4bv = nullptr;
333     PFNGLVERTEXATTRIBI4IPROC vertexAttribI4i = nullptr;
334     PFNGLVERTEXATTRIBI4IVPROC vertexAttribI4iv = nullptr;
335     PFNGLVERTEXATTRIBI4SVPROC vertexAttribI4sv = nullptr;
336     PFNGLVERTEXATTRIBI4UBVPROC vertexAttribI4ubv = nullptr;
337     PFNGLVERTEXATTRIBI4UIPROC vertexAttribI4ui = nullptr;
338     PFNGLVERTEXATTRIBI4UIVPROC vertexAttribI4uiv = nullptr;
339     PFNGLVERTEXATTRIBI4USVPROC vertexAttribI4usv = nullptr;
340     PFNGLVERTEXATTRIBIPOINTERPROC vertexAttribIPointer = nullptr;
341 
342     // 3.1
343     PFNGLCOPYBUFFERSUBDATAPROC copyBufferSubData = nullptr;
344     PFNGLDRAWARRAYSINSTANCEDPROC drawArraysInstanced = nullptr;
345     PFNGLDRAWELEMENTSINSTANCEDPROC drawElementsInstanced = nullptr;
346     PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC getActiveUniformBlockName = nullptr;
347     PFNGLGETACTIVEUNIFORMBLOCKIVPROC getActiveUniformBlockiv = nullptr;
348     PFNGLGETACTIVEUNIFORMNAMEPROC getActiveUniformName = nullptr;
349     PFNGLGETACTIVEUNIFORMSIVPROC getActiveUniformsiv = nullptr;
350     PFNGLGETUNIFORMBLOCKINDEXPROC getUniformBlockIndex = nullptr;
351     PFNGLGETUNIFORMINDICESPROC getUniformIndices = nullptr;
352     PFNGLPRIMITIVERESTARTINDEXPROC primitiveRestartIndex = nullptr;
353     PFNGLTEXBUFFERPROC texBuffer = nullptr;
354     PFNGLUNIFORMBLOCKBINDINGPROC uniformBlockBinding = nullptr;
355 
356     // 3.2
357     PFNGLCLIENTWAITSYNCPROC clientWaitSync = nullptr;
358     PFNGLDELETESYNCPROC deleteSync = nullptr;
359     PFNGLDRAWELEMENTSBASEVERTEXPROC drawElementsBaseVertex = nullptr;
360     PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC drawElementsInstancedBaseVertex = nullptr;
361     PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC drawRangeElementsBaseVertex = nullptr;
362     PFNGLFENCESYNCPROC fenceSync = nullptr;
363     PFNGLFRAMEBUFFERTEXTUREPROC framebufferTexture = nullptr;
364     PFNGLGETBUFFERPARAMETERI64VPROC getBufferParameteri64v = nullptr;
365     PFNGLGETINTEGER64I_VPROC getInteger64i_v = nullptr;
366     PFNGLGETINTEGER64VPROC getInteger64v = nullptr;
367     PFNGLGETMULTISAMPLEFVPROC getMultisamplefv = nullptr;
368     PFNGLGETSYNCIVPROC getSynciv = nullptr;
369     PFNGLISSYNCPROC isSync = nullptr;
370     PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC multiDrawElementsBaseVertex = nullptr;
371     PFNGLPROVOKINGVERTEXPROC provokingVertex = nullptr;
372     PFNGLSAMPLEMASKIPROC sampleMaski = nullptr;
373     PFNGLTEXIMAGE2DMULTISAMPLEPROC texImage2DMultisample = nullptr;
374     PFNGLTEXIMAGE3DMULTISAMPLEPROC texImage3DMultisample = nullptr;
375     PFNGLWAITSYNCPROC waitSync = nullptr;
376 
377     // 3.3
378     PFNGLBINDFRAGDATALOCATIONINDEXEDPROC bindFragDataLocationIndexed = nullptr;
379     PFNGLBINDSAMPLERPROC bindSampler = nullptr;
380     PFNGLDELETESAMPLERSPROC deleteSamplers = nullptr;
381     PFNGLGENSAMPLERSPROC genSamplers = nullptr;
382     PFNGLGETFRAGDATAINDEXPROC getFragDataIndex = nullptr;
383     PFNGLGETQUERYOBJECTI64VPROC getQueryObjecti64v = nullptr;
384     PFNGLGETQUERYOBJECTUI64VPROC getQueryObjectui64v = nullptr;
385     PFNGLGETSAMPLERPARAMETERIIVPROC getSamplerParameterIiv = nullptr;
386     PFNGLGETSAMPLERPARAMETERIUIVPROC getSamplerParameterIuiv = nullptr;
387     PFNGLGETSAMPLERPARAMETERFVPROC getSamplerParameterfv = nullptr;
388     PFNGLGETSAMPLERPARAMETERIVPROC getSamplerParameteriv = nullptr;
389     PFNGLISSAMPLERPROC isSampler = nullptr;
390     PFNGLQUERYCOUNTERPROC queryCounter = nullptr;
391     PFNGLSAMPLERPARAMETERIIVPROC samplerParameterIiv = nullptr;
392     PFNGLSAMPLERPARAMETERIUIVPROC samplerParameterIuiv = nullptr;
393     PFNGLSAMPLERPARAMETERFPROC samplerParameterf = nullptr;
394     PFNGLSAMPLERPARAMETERFVPROC samplerParameterfv = nullptr;
395     PFNGLSAMPLERPARAMETERIPROC samplerParameteri = nullptr;
396     PFNGLSAMPLERPARAMETERIVPROC samplerParameteriv = nullptr;
397     PFNGLVERTEXATTRIBDIVISORPROC vertexAttribDivisor = nullptr;
398     PFNGLVERTEXATTRIBP1UIPROC vertexAttribP1ui = nullptr;
399     PFNGLVERTEXATTRIBP1UIVPROC vertexAttribP1uiv = nullptr;
400     PFNGLVERTEXATTRIBP2UIPROC vertexAttribP2ui = nullptr;
401     PFNGLVERTEXATTRIBP2UIVPROC vertexAttribP2uiv = nullptr;
402     PFNGLVERTEXATTRIBP3UIPROC vertexAttribP3ui = nullptr;
403     PFNGLVERTEXATTRIBP3UIVPROC vertexAttribP3uiv = nullptr;
404     PFNGLVERTEXATTRIBP4UIPROC vertexAttribP4ui = nullptr;
405     PFNGLVERTEXATTRIBP4UIVPROC vertexAttribP4uiv = nullptr;
406 
407     // 4.0
408     PFNGLBEGINQUERYINDEXEDPROC beginQueryIndexed = nullptr;
409     PFNGLBINDTRANSFORMFEEDBACKPROC bindTransformFeedback = nullptr;
410     PFNGLBLENDEQUATIONSEPARATEIPROC blendEquationSeparatei = nullptr;
411     PFNGLBLENDEQUATIONIPROC blendEquationi = nullptr;
412     PFNGLBLENDFUNCSEPARATEIPROC blendFuncSeparatei = nullptr;
413     PFNGLBLENDFUNCIPROC blendFunci = nullptr;
414     PFNGLDELETETRANSFORMFEEDBACKSPROC deleteTransformFeedbacks = nullptr;
415     PFNGLDRAWARRAYSINDIRECTPROC drawArraysIndirect = nullptr;
416     PFNGLDRAWELEMENTSINDIRECTPROC drawElementsIndirect = nullptr;
417     PFNGLDRAWTRANSFORMFEEDBACKPROC drawTransformFeedback = nullptr;
418     PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC drawTransformFeedbackStream = nullptr;
419     PFNGLENDQUERYINDEXEDPROC endQueryIndexed = nullptr;
420     PFNGLGENTRANSFORMFEEDBACKSPROC genTransformFeedbacks = nullptr;
421     PFNGLGETACTIVESUBROUTINENAMEPROC getActiveSubroutineName = nullptr;
422     PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC getActiveSubroutineUniformName = nullptr;
423     PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC getActiveSubroutineUniformiv = nullptr;
424     PFNGLGETPROGRAMSTAGEIVPROC getProgramStageiv = nullptr;
425     PFNGLGETQUERYINDEXEDIVPROC getQueryIndexediv = nullptr;
426     PFNGLGETSUBROUTINEINDEXPROC getSubroutineIndex = nullptr;
427     PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC getSubroutineUniformLocation = nullptr;
428     PFNGLGETUNIFORMSUBROUTINEUIVPROC getUniformSubroutineuiv = nullptr;
429     PFNGLGETUNIFORMDVPROC getUniformdv = nullptr;
430     PFNGLISTRANSFORMFEEDBACKPROC isTransformFeedback = nullptr;
431     PFNGLMINSAMPLESHADINGPROC minSampleShading = nullptr;
432     PFNGLPATCHPARAMETERFVPROC patchParameterfv = nullptr;
433     PFNGLPATCHPARAMETERIPROC patchParameteri = nullptr;
434     PFNGLPAUSETRANSFORMFEEDBACKPROC pauseTransformFeedback = nullptr;
435     PFNGLRESUMETRANSFORMFEEDBACKPROC resumeTransformFeedback = nullptr;
436     PFNGLUNIFORM1DPROC uniform1d = nullptr;
437     PFNGLUNIFORM1DVPROC uniform1dv = nullptr;
438     PFNGLUNIFORM2DPROC uniform2d = nullptr;
439     PFNGLUNIFORM2DVPROC uniform2dv = nullptr;
440     PFNGLUNIFORM3DPROC uniform3d = nullptr;
441     PFNGLUNIFORM3DVPROC uniform3dv = nullptr;
442     PFNGLUNIFORM4DPROC uniform4d = nullptr;
443     PFNGLUNIFORM4DVPROC uniform4dv = nullptr;
444     PFNGLUNIFORMMATRIX2DVPROC uniformMatrix2dv = nullptr;
445     PFNGLUNIFORMMATRIX2X3DVPROC uniformMatrix2x3dv = nullptr;
446     PFNGLUNIFORMMATRIX2X4DVPROC uniformMatrix2x4dv = nullptr;
447     PFNGLUNIFORMMATRIX3DVPROC uniformMatrix3dv = nullptr;
448     PFNGLUNIFORMMATRIX3X2DVPROC uniformMatrix3x2dv = nullptr;
449     PFNGLUNIFORMMATRIX3X4DVPROC uniformMatrix3x4dv = nullptr;
450     PFNGLUNIFORMMATRIX4DVPROC uniformMatrix4dv = nullptr;
451     PFNGLUNIFORMMATRIX4X2DVPROC uniformMatrix4x2dv = nullptr;
452     PFNGLUNIFORMMATRIX4X3DVPROC uniformMatrix4x3dv = nullptr;
453     PFNGLUNIFORMSUBROUTINESUIVPROC uniformSubroutinesuiv = nullptr;
454 
455     // 4.1
456     PFNGLACTIVESHADERPROGRAMPROC activeShaderProgram = nullptr;
457     PFNGLBINDPROGRAMPIPELINEPROC bindProgramPipeline = nullptr;
458     PFNGLCLEARDEPTHFPROC clearDepthf = nullptr;
459     PFNGLCREATESHADERPROGRAMVPROC createShaderProgramv = nullptr;
460     PFNGLDELETEPROGRAMPIPELINESPROC deleteProgramPipelines = nullptr;
461     PFNGLDEPTHRANGEARRAYVPROC depthRangeArrayv = nullptr;
462     PFNGLDEPTHRANGEINDEXEDPROC depthRangeIndexed = nullptr;
463     PFNGLDEPTHRANGEFPROC depthRangef = nullptr;
464     PFNGLGENPROGRAMPIPELINESPROC genProgramPipelines = nullptr;
465     PFNGLGETDOUBLEI_VPROC getDoublei_v = nullptr;
466     PFNGLGETFLOATI_VPROC getFloati_v = nullptr;
467     PFNGLGETPROGRAMBINARYPROC getProgramBinary = nullptr;
468     PFNGLGETPROGRAMPIPELINEINFOLOGPROC getProgramPipelineInfoLog = nullptr;
469     PFNGLGETPROGRAMPIPELINEIVPROC getProgramPipelineiv = nullptr;
470     PFNGLGETSHADERPRECISIONFORMATPROC getShaderPrecisionFormat = nullptr;
471     PFNGLGETVERTEXATTRIBLDVPROC getVertexAttribLdv = nullptr;
472     PFNGLISPROGRAMPIPELINEPROC isProgramPipeline = nullptr;
473     PFNGLPROGRAMBINARYPROC programBinary = nullptr;
474     PFNGLPROGRAMPARAMETERIPROC programParameteri = nullptr;
475     PFNGLPROGRAMUNIFORM1DPROC programUniform1d = nullptr;
476     PFNGLPROGRAMUNIFORM1DVPROC programUniform1dv = nullptr;
477     PFNGLPROGRAMUNIFORM1FPROC programUniform1f = nullptr;
478     PFNGLPROGRAMUNIFORM1FVPROC programUniform1fv = nullptr;
479     PFNGLPROGRAMUNIFORM1IPROC programUniform1i = nullptr;
480     PFNGLPROGRAMUNIFORM1IVPROC programUniform1iv = nullptr;
481     PFNGLPROGRAMUNIFORM1UIPROC programUniform1ui = nullptr;
482     PFNGLPROGRAMUNIFORM1UIVPROC programUniform1uiv = nullptr;
483     PFNGLPROGRAMUNIFORM2DPROC programUniform2d = nullptr;
484     PFNGLPROGRAMUNIFORM2DVPROC programUniform2dv = nullptr;
485     PFNGLPROGRAMUNIFORM2FPROC programUniform2f = nullptr;
486     PFNGLPROGRAMUNIFORM2FVPROC programUniform2fv = nullptr;
487     PFNGLPROGRAMUNIFORM2IPROC programUniform2i = nullptr;
488     PFNGLPROGRAMUNIFORM2IVPROC programUniform2iv = nullptr;
489     PFNGLPROGRAMUNIFORM2UIPROC programUniform2ui = nullptr;
490     PFNGLPROGRAMUNIFORM2UIVPROC programUniform2uiv = nullptr;
491     PFNGLPROGRAMUNIFORM3DPROC programUniform3d = nullptr;
492     PFNGLPROGRAMUNIFORM3DVPROC programUniform3dv = nullptr;
493     PFNGLPROGRAMUNIFORM3FPROC programUniform3f = nullptr;
494     PFNGLPROGRAMUNIFORM3FVPROC programUniform3fv = nullptr;
495     PFNGLPROGRAMUNIFORM3IPROC programUniform3i = nullptr;
496     PFNGLPROGRAMUNIFORM3IVPROC programUniform3iv = nullptr;
497     PFNGLPROGRAMUNIFORM3UIPROC programUniform3ui = nullptr;
498     PFNGLPROGRAMUNIFORM3UIVPROC programUniform3uiv = nullptr;
499     PFNGLPROGRAMUNIFORM4DPROC programUniform4d = nullptr;
500     PFNGLPROGRAMUNIFORM4DVPROC programUniform4dv = nullptr;
501     PFNGLPROGRAMUNIFORM4FPROC programUniform4f = nullptr;
502     PFNGLPROGRAMUNIFORM4FVPROC programUniform4fv = nullptr;
503     PFNGLPROGRAMUNIFORM4IPROC programUniform4i = nullptr;
504     PFNGLPROGRAMUNIFORM4IVPROC programUniform4iv = nullptr;
505     PFNGLPROGRAMUNIFORM4UIPROC programUniform4ui = nullptr;
506     PFNGLPROGRAMUNIFORM4UIVPROC programUniform4uiv = nullptr;
507     PFNGLPROGRAMUNIFORMMATRIX2DVPROC programUniformMatrix2dv = nullptr;
508     PFNGLPROGRAMUNIFORMMATRIX2FVPROC programUniformMatrix2fv = nullptr;
509     PFNGLPROGRAMUNIFORMMATRIX2X3DVPROC programUniformMatrix2x3dv = nullptr;
510     PFNGLPROGRAMUNIFORMMATRIX2X3FVPROC programUniformMatrix2x3fv = nullptr;
511     PFNGLPROGRAMUNIFORMMATRIX2X4DVPROC programUniformMatrix2x4dv = nullptr;
512     PFNGLPROGRAMUNIFORMMATRIX2X4FVPROC programUniformMatrix2x4fv = nullptr;
513     PFNGLPROGRAMUNIFORMMATRIX3DVPROC programUniformMatrix3dv = nullptr;
514     PFNGLPROGRAMUNIFORMMATRIX3FVPROC programUniformMatrix3fv = nullptr;
515     PFNGLPROGRAMUNIFORMMATRIX3X2DVPROC programUniformMatrix3x2dv = nullptr;
516     PFNGLPROGRAMUNIFORMMATRIX3X2FVPROC programUniformMatrix3x2fv = nullptr;
517     PFNGLPROGRAMUNIFORMMATRIX3X4DVPROC programUniformMatrix3x4dv = nullptr;
518     PFNGLPROGRAMUNIFORMMATRIX3X4FVPROC programUniformMatrix3x4fv = nullptr;
519     PFNGLPROGRAMUNIFORMMATRIX4DVPROC programUniformMatrix4dv = nullptr;
520     PFNGLPROGRAMUNIFORMMATRIX4FVPROC programUniformMatrix4fv = nullptr;
521     PFNGLPROGRAMUNIFORMMATRIX4X2DVPROC programUniformMatrix4x2dv = nullptr;
522     PFNGLPROGRAMUNIFORMMATRIX4X2FVPROC programUniformMatrix4x2fv = nullptr;
523     PFNGLPROGRAMUNIFORMMATRIX4X3DVPROC programUniformMatrix4x3dv = nullptr;
524     PFNGLPROGRAMUNIFORMMATRIX4X3FVPROC programUniformMatrix4x3fv = nullptr;
525     PFNGLRELEASESHADERCOMPILERPROC releaseShaderCompiler = nullptr;
526     PFNGLSCISSORARRAYVPROC scissorArrayv = nullptr;
527     PFNGLSCISSORINDEXEDPROC scissorIndexed = nullptr;
528     PFNGLSCISSORINDEXEDVPROC scissorIndexedv = nullptr;
529     PFNGLSHADERBINARYPROC shaderBinary = nullptr;
530     PFNGLUSEPROGRAMSTAGESPROC useProgramStages = nullptr;
531     PFNGLVALIDATEPROGRAMPIPELINEPROC validateProgramPipeline = nullptr;
532     PFNGLVERTEXATTRIBL1DPROC vertexAttribL1d = nullptr;
533     PFNGLVERTEXATTRIBL1DVPROC vertexAttribL1dv = nullptr;
534     PFNGLVERTEXATTRIBL2DPROC vertexAttribL2d = nullptr;
535     PFNGLVERTEXATTRIBL2DVPROC vertexAttribL2dv = nullptr;
536     PFNGLVERTEXATTRIBL3DPROC vertexAttribL3d = nullptr;
537     PFNGLVERTEXATTRIBL3DVPROC vertexAttribL3dv = nullptr;
538     PFNGLVERTEXATTRIBL4DPROC vertexAttribL4d = nullptr;
539     PFNGLVERTEXATTRIBL4DVPROC vertexAttribL4dv = nullptr;
540     PFNGLVERTEXATTRIBLPOINTERPROC vertexAttribLPointer = nullptr;
541     PFNGLVIEWPORTARRAYVPROC viewportArrayv = nullptr;
542     PFNGLVIEWPORTINDEXEDFPROC viewportIndexedf = nullptr;
543     PFNGLVIEWPORTINDEXEDFVPROC viewportIndexedfv = nullptr;
544 
545     // 4.2
546     PFNGLBINDIMAGETEXTUREPROC bindImageTexture = nullptr;
547     PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC drawArraysInstancedBaseInstance = nullptr;
548     PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC drawElementsInstancedBaseInstance = nullptr;
549     PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEPROC drawElementsInstancedBaseVertexBaseInstance = nullptr;
550     PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDPROC drawTransformFeedbackInstanced = nullptr;
551     PFNGLDRAWTRANSFORMFEEDBACKSTREAMINSTANCEDPROC drawTransformFeedbackStreamInstanced = nullptr;
552     PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC getActiveAtomicCounterBufferiv = nullptr;
553     PFNGLGETINTERNALFORMATIVPROC getInternalformativ = nullptr;
554     PFNGLMEMORYBARRIERPROC memoryBarrier = nullptr;
555     PFNGLTEXSTORAGE1DPROC texStorage1D = nullptr;
556     PFNGLTEXSTORAGE2DPROC texStorage2D = nullptr;
557     PFNGLTEXSTORAGE3DPROC texStorage3D = nullptr;
558 
559     // 4.3
560     PFNGLBINDVERTEXBUFFERPROC bindVertexBuffer = nullptr;
561     PFNGLCLEARBUFFERDATAPROC clearBufferData = nullptr;
562     PFNGLCLEARBUFFERSUBDATAPROC clearBufferSubData = nullptr;
563     PFNGLCOPYIMAGESUBDATAPROC copyImageSubData = nullptr;
564     PFNGLCOVERAGEMODULATIONNVPROC coverageModulationNV = nullptr;
565     PFNGLDEBUGMESSAGECALLBACKPROC debugMessageCallback = nullptr;
566     PFNGLDEBUGMESSAGECONTROLPROC debugMessageControl = nullptr;
567     PFNGLDEBUGMESSAGEINSERTPROC debugMessageInsert = nullptr;
568     PFNGLDISPATCHCOMPUTEPROC dispatchCompute = nullptr;
569     PFNGLDISPATCHCOMPUTEINDIRECTPROC dispatchComputeIndirect = nullptr;
570     PFNGLFRAMEBUFFERPARAMETERIPROC framebufferParameteri = nullptr;
571     PFNGLGETDEBUGMESSAGELOGPROC getDebugMessageLog = nullptr;
572     PFNGLGETFRAMEBUFFERPARAMETERIVPROC getFramebufferParameteriv = nullptr;
573     PFNGLGETINTERNALFORMATI64VPROC getInternalformati64v = nullptr;
574     PFNGLGETOBJECTLABELPROC getObjectLabel = nullptr;
575     PFNGLGETOBJECTPTRLABELPROC getObjectPtrLabel = nullptr;
576     PFNGLGETPOINTERVPROC getPointerv = nullptr;
577     PFNGLGETPROGRAMINTERFACEIVPROC getProgramInterfaceiv = nullptr;
578     PFNGLGETPROGRAMRESOURCEINDEXPROC getProgramResourceIndex = nullptr;
579     PFNGLGETPROGRAMRESOURCELOCATIONPROC getProgramResourceLocation = nullptr;
580     PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC getProgramResourceLocationIndex = nullptr;
581     PFNGLGETPROGRAMRESOURCENAMEPROC getProgramResourceName = nullptr;
582     PFNGLGETPROGRAMRESOURCEIVPROC getProgramResourceiv = nullptr;
583     PFNGLINVALIDATEBUFFERDATAPROC invalidateBufferData = nullptr;
584     PFNGLINVALIDATEBUFFERSUBDATAPROC invalidateBufferSubData = nullptr;
585     PFNGLINVALIDATEFRAMEBUFFERPROC invalidateFramebuffer = nullptr;
586     PFNGLINVALIDATESUBFRAMEBUFFERPROC invalidateSubFramebuffer = nullptr;
587     PFNGLINVALIDATETEXIMAGEPROC invalidateTexImage = nullptr;
588     PFNGLINVALIDATETEXSUBIMAGEPROC invalidateTexSubImage = nullptr;
589     PFNGLMULTIDRAWARRAYSINDIRECTPROC multiDrawArraysIndirect = nullptr;
590     PFNGLMULTIDRAWELEMENTSINDIRECTPROC multiDrawElementsIndirect = nullptr;
591     PFNGLOBJECTLABELPROC objectLabel = nullptr;
592     PFNGLOBJECTPTRLABELPROC objectPtrLabel = nullptr;
593     PFNGLPOPDEBUGGROUPPROC popDebugGroup = nullptr;
594     PFNGLPUSHDEBUGGROUPPROC pushDebugGroup = nullptr;
595     PFNGLSHADERSTORAGEBLOCKBINDINGPROC shaderStorageBlockBinding = nullptr;
596     PFNGLTEXBUFFERRANGEPROC texBufferRange = nullptr;
597     PFNGLTEXSTORAGE2DMULTISAMPLEPROC texStorage2DMultisample = nullptr;
598     PFNGLTEXSTORAGE3DMULTISAMPLEPROC texStorage3DMultisample = nullptr;
599     PFNGLTEXTUREVIEWPROC textureView = nullptr;
600     PFNGLVERTEXATTRIBBINDINGPROC vertexAttribBinding = nullptr;
601     PFNGLVERTEXATTRIBFORMATPROC vertexAttribFormat = nullptr;
602     PFNGLVERTEXATTRIBIFORMATPROC vertexAttribIFormat = nullptr;
603     PFNGLVERTEXATTRIBLFORMATPROC vertexAttribLFormat = nullptr;
604     PFNGLVERTEXBINDINGDIVISORPROC vertexBindingDivisor = nullptr;
605 
606     // 4.4
607     PFNGLBINDBUFFERSBASEPROC bindBuffersBase = nullptr;
608     PFNGLBINDBUFFERSRANGEPROC bindBuffersRange = nullptr;
609     PFNGLBINDIMAGETEXTURESPROC bindImageTextures = nullptr;
610     PFNGLBINDSAMPLERSPROC bindSamplers = nullptr;
611     PFNGLBINDTEXTURESPROC bindTextures = nullptr;
612     PFNGLBINDVERTEXBUFFERSPROC bindVertexBuffers = nullptr;
613     PFNGLBUFFERSTORAGEPROC bufferStorage = nullptr;
614     PFNGLCLEARTEXIMAGEPROC clearTexImage = nullptr;
615     PFNGLCLEARTEXSUBIMAGEPROC clearTexSubImage = nullptr;
616 
617     // 4.5
618     PFNGLBINDTEXTUREUNITPROC bindTextureUnit = nullptr;
619     PFNGLBLITNAMEDFRAMEBUFFERPROC blitNamedFramebuffer = nullptr;
620     PFNGLCHECKNAMEDFRAMEBUFFERSTATUSPROC checkNamedFramebufferStatus = nullptr;
621     PFNGLCLEARNAMEDBUFFERDATAPROC clearNamedBufferData = nullptr;
622     PFNGLCLEARNAMEDBUFFERSUBDATAPROC clearNamedBufferSubData = nullptr;
623     PFNGLCLEARNAMEDFRAMEBUFFERFIPROC clearNamedFramebufferfi = nullptr;
624     PFNGLCLEARNAMEDFRAMEBUFFERFVPROC clearNamedFramebufferfv = nullptr;
625     PFNGLCLEARNAMEDFRAMEBUFFERIVPROC clearNamedFramebufferiv = nullptr;
626     PFNGLCLEARNAMEDFRAMEBUFFERUIVPROC clearNamedFramebufferuiv = nullptr;
627     PFNGLCLIPCONTROLPROC clipControl = nullptr;
628     PFNGLCOMPRESSEDTEXTURESUBIMAGE1DPROC compressedTextureSubImage1D = nullptr;
629     PFNGLCOMPRESSEDTEXTURESUBIMAGE2DPROC compressedTextureSubImage2D = nullptr;
630     PFNGLCOMPRESSEDTEXTURESUBIMAGE3DPROC compressedTextureSubImage3D = nullptr;
631     PFNGLCOPYNAMEDBUFFERSUBDATAPROC copyNamedBufferSubData = nullptr;
632     PFNGLCOPYTEXTURESUBIMAGE1DPROC copyTextureSubImage1D = nullptr;
633     PFNGLCOPYTEXTURESUBIMAGE2DPROC copyTextureSubImage2D = nullptr;
634     PFNGLCOPYTEXTURESUBIMAGE3DPROC copyTextureSubImage3D = nullptr;
635     PFNGLCREATEBUFFERSPROC createBuffers = nullptr;
636     PFNGLCREATEFRAMEBUFFERSPROC createFramebuffers = nullptr;
637     PFNGLCREATEPROGRAMPIPELINESPROC createProgramPipelines = nullptr;
638     PFNGLCREATEQUERIESPROC createQueries = nullptr;
639     PFNGLCREATERENDERBUFFERSPROC createRenderbuffers = nullptr;
640     PFNGLCREATESAMPLERSPROC createSamplers = nullptr;
641     PFNGLCREATETEXTURESPROC createTextures = nullptr;
642     PFNGLCREATETRANSFORMFEEDBACKSPROC createTransformFeedbacks = nullptr;
643     PFNGLCREATEVERTEXARRAYSPROC createVertexArrays = nullptr;
644     PFNGLDISABLEVERTEXARRAYATTRIBPROC disableVertexArrayAttrib = nullptr;
645     PFNGLENABLEVERTEXARRAYATTRIBPROC enableVertexArrayAttrib = nullptr;
646     PFNGLFLUSHMAPPEDNAMEDBUFFERRANGEPROC flushMappedNamedBufferRange = nullptr;
647     PFNGLGENERATETEXTUREMIPMAPPROC generateTextureMipmap = nullptr;
648     PFNGLGETCOMPRESSEDTEXTUREIMAGEPROC getCompressedTextureImage = nullptr;
649     PFNGLGETCOMPRESSEDTEXTURESUBIMAGEPROC getCompressedTextureSubImage = nullptr;
650     PFNGLGETGRAPHICSRESETSTATUSPROC getGraphicsResetStatus = nullptr;
651     PFNGLGETNAMEDBUFFERPARAMETERI64VPROC getNamedBufferParameteri64v = nullptr;
652     PFNGLGETNAMEDBUFFERPARAMETERIVPROC getNamedBufferParameteriv = nullptr;
653     PFNGLGETNAMEDBUFFERPOINTERVPROC getNamedBufferPointerv = nullptr;
654     PFNGLGETNAMEDBUFFERSUBDATAPROC getNamedBufferSubData = nullptr;
655     PFNGLGETNAMEDFRAMEBUFFERATTACHMENTPARAMETERIVPROC getNamedFramebufferAttachmentParameteriv = nullptr;
656     PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVPROC getNamedFramebufferParameteriv = nullptr;
657     PFNGLGETNAMEDRENDERBUFFERPARAMETERIVPROC getNamedRenderbufferParameteriv = nullptr;
658     PFNGLGETQUERYBUFFEROBJECTI64VPROC getQueryBufferObjecti64v = nullptr;
659     PFNGLGETQUERYBUFFEROBJECTIVPROC getQueryBufferObjectiv = nullptr;
660     PFNGLGETQUERYBUFFEROBJECTUI64VPROC getQueryBufferObjectui64v = nullptr;
661     PFNGLGETQUERYBUFFEROBJECTUIVPROC getQueryBufferObjectuiv = nullptr;
662     PFNGLGETTEXTUREIMAGEPROC getTextureImage = nullptr;
663     PFNGLGETTEXTURELEVELPARAMETERFVPROC getTextureLevelParameterfv = nullptr;
664     PFNGLGETTEXTURELEVELPARAMETERIVPROC getTextureLevelParameteriv = nullptr;
665     PFNGLGETTEXTUREPARAMETERIIVPROC getTextureParameterIiv = nullptr;
666     PFNGLGETTEXTUREPARAMETERIUIVPROC getTextureParameterIuiv = nullptr;
667     PFNGLGETTEXTUREPARAMETERFVPROC getTextureParameterfv = nullptr;
668     PFNGLGETTEXTUREPARAMETERIVPROC getTextureParameteriv = nullptr;
669     PFNGLGETTEXTURESUBIMAGEPROC getTextureSubImage = nullptr;
670     PFNGLGETTRANSFORMFEEDBACKI64_VPROC getTransformFeedbacki64_v = nullptr;
671     PFNGLGETTRANSFORMFEEDBACKI_VPROC getTransformFeedbacki_v = nullptr;
672     PFNGLGETTRANSFORMFEEDBACKIVPROC getTransformFeedbackiv = nullptr;
673     PFNGLGETVERTEXARRAYINDEXED64IVPROC getVertexArrayIndexed64iv = nullptr;
674     PFNGLGETVERTEXARRAYINDEXEDIVPROC getVertexArrayIndexediv = nullptr;
675     PFNGLGETVERTEXARRAYIVPROC getVertexArrayiv = nullptr;
676     PFNGLGETNCOMPRESSEDTEXIMAGEPROC getnCompressedTexImage = nullptr;
677     PFNGLGETNTEXIMAGEPROC getnTexImage = nullptr;
678     PFNGLGETNUNIFORMDVPROC getnUniformdv = nullptr;
679     PFNGLGETNUNIFORMFVPROC getnUniformfv = nullptr;
680     PFNGLGETNUNIFORMIVPROC getnUniformiv = nullptr;
681     PFNGLGETNUNIFORMUIVPROC getnUniformuiv = nullptr;
682     PFNGLINVALIDATENAMEDFRAMEBUFFERDATAPROC invalidateNamedFramebufferData = nullptr;
683     PFNGLINVALIDATENAMEDFRAMEBUFFERSUBDATAPROC invalidateNamedFramebufferSubData = nullptr;
684     PFNGLMAPNAMEDBUFFERPROC mapNamedBuffer = nullptr;
685     PFNGLMAPNAMEDBUFFERRANGEPROC mapNamedBufferRange = nullptr;
686     PFNGLMEMORYBARRIERBYREGIONPROC memoryBarrierByRegion = nullptr;
687     PFNGLNAMEDBUFFERDATAPROC namedBufferData = nullptr;
688     PFNGLNAMEDBUFFERSTORAGEPROC namedBufferStorage = nullptr;
689     PFNGLNAMEDBUFFERSUBDATAPROC namedBufferSubData = nullptr;
690     PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC namedFramebufferDrawBuffer = nullptr;
691     PFNGLNAMEDFRAMEBUFFERDRAWBUFFERSPROC namedFramebufferDrawBuffers = nullptr;
692     PFNGLNAMEDFRAMEBUFFERPARAMETERIPROC namedFramebufferParameteri = nullptr;
693     PFNGLNAMEDFRAMEBUFFERREADBUFFERPROC namedFramebufferReadBuffer = nullptr;
694     PFNGLNAMEDFRAMEBUFFERRENDERBUFFERPROC namedFramebufferRenderbuffer = nullptr;
695     PFNGLNAMEDFRAMEBUFFERTEXTUREPROC namedFramebufferTexture = nullptr;
696     PFNGLNAMEDFRAMEBUFFERTEXTURELAYERPROC namedFramebufferTextureLayer = nullptr;
697     PFNGLNAMEDRENDERBUFFERSTORAGEPROC namedRenderbufferStorage = nullptr;
698     PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEPROC namedRenderbufferStorageMultisample = nullptr;
699     PFNGLREADNPIXELSPROC readnPixels = nullptr;
700     PFNGLTEXTUREBARRIERPROC textureBarrier = nullptr;
701     PFNGLTEXTUREBUFFERPROC textureBuffer = nullptr;
702     PFNGLTEXTUREBUFFERRANGEPROC textureBufferRange = nullptr;
703     PFNGLTEXTUREPARAMETERIIVPROC textureParameterIiv = nullptr;
704     PFNGLTEXTUREPARAMETERIUIVPROC textureParameterIuiv = nullptr;
705     PFNGLTEXTUREPARAMETERFPROC textureParameterf = nullptr;
706     PFNGLTEXTUREPARAMETERFVPROC textureParameterfv = nullptr;
707     PFNGLTEXTUREPARAMETERIPROC textureParameteri = nullptr;
708     PFNGLTEXTUREPARAMETERIVPROC textureParameteriv = nullptr;
709     PFNGLTEXTURESTORAGE1DPROC textureStorage1D = nullptr;
710     PFNGLTEXTURESTORAGE2DPROC textureStorage2D = nullptr;
711     PFNGLTEXTURESTORAGE2DMULTISAMPLEPROC textureStorage2DMultisample = nullptr;
712     PFNGLTEXTURESTORAGE3DPROC textureStorage3D = nullptr;
713     PFNGLTEXTURESTORAGE3DMULTISAMPLEPROC textureStorage3DMultisample = nullptr;
714     PFNGLTEXTURESUBIMAGE1DPROC textureSubImage1D = nullptr;
715     PFNGLTEXTURESUBIMAGE2DPROC textureSubImage2D = nullptr;
716     PFNGLTEXTURESUBIMAGE3DPROC textureSubImage3D = nullptr;
717     PFNGLTRANSFORMFEEDBACKBUFFERBASEPROC transformFeedbackBufferBase = nullptr;
718     PFNGLTRANSFORMFEEDBACKBUFFERRANGEPROC transformFeedbackBufferRange = nullptr;
719     PFNGLUNMAPNAMEDBUFFERPROC unmapNamedBuffer = nullptr;
720     PFNGLVERTEXARRAYATTRIBBINDINGPROC vertexArrayAttribBinding = nullptr;
721     PFNGLVERTEXARRAYATTRIBFORMATPROC vertexArrayAttribFormat = nullptr;
722     PFNGLVERTEXARRAYATTRIBIFORMATPROC vertexArrayAttribIFormat = nullptr;
723     PFNGLVERTEXARRAYATTRIBLFORMATPROC vertexArrayAttribLFormat = nullptr;
724     PFNGLVERTEXARRAYBINDINGDIVISORPROC vertexArrayBindingDivisor = nullptr;
725     PFNGLVERTEXARRAYELEMENTBUFFERPROC vertexArrayElementBuffer = nullptr;
726     PFNGLVERTEXARRAYVERTEXBUFFERPROC vertexArrayVertexBuffer = nullptr;
727     PFNGLVERTEXARRAYVERTEXBUFFERSPROC vertexArrayVertexBuffers = nullptr;
728 
729     // ES 3.2
730     PFNGLBLENDBARRIERPROC blendBarrier = nullptr;
731     PFNGLPRIMITIVEBOUNDINGBOXPROC primitiveBoundingBox = nullptr;
732 
733     // GL_ARB_parallel_shader_compile
734     PFNGLMAXSHADERCOMPILERTHREADSARBPROC maxShaderCompilerThreadsARB = nullptr;
735 
736     // GL_EXT_debug_marker
737     PFNGLINSERTEVENTMARKEREXTPROC insertEventMarkerEXT = nullptr;
738     PFNGLPOPGROUPMARKEREXTPROC popGroupMarkerEXT = nullptr;
739     PFNGLPUSHGROUPMARKEREXTPROC pushGroupMarkerEXT = nullptr;
740 
741     // GL_EXT_discard_framebuffer
742     PFNGLDISCARDFRAMEBUFFEREXTPROC discardFramebufferEXT = nullptr;
743 
744     // GL_EXT_framebuffer_blit
745     PFNGLBLITFRAMEBUFFEREXTPROC blitFramebufferEXT = nullptr;
746 
747     // GL_EXT_memory_object
748     PFNGLBUFFERSTORAGEMEMEXTPROC bufferStorageMemEXT = nullptr;
749     PFNGLCREATEMEMORYOBJECTSEXTPROC createMemoryObjectsEXT = nullptr;
750     PFNGLDELETEMEMORYOBJECTSEXTPROC deleteMemoryObjectsEXT = nullptr;
751     PFNGLGETMEMORYOBJECTPARAMETERIVEXTPROC getMemoryObjectParameterivEXT = nullptr;
752     PFNGLGETUNSIGNEDBYTEI_VEXTPROC getUnsignedBytei_vEXT = nullptr;
753     PFNGLGETUNSIGNEDBYTEVEXTPROC getUnsignedBytevEXT = nullptr;
754     PFNGLISMEMORYOBJECTEXTPROC isMemoryObjectEXT = nullptr;
755     PFNGLMEMORYOBJECTPARAMETERIVEXTPROC memoryObjectParameterivEXT = nullptr;
756     PFNGLNAMEDBUFFERSTORAGEMEMEXTPROC namedBufferStorageMemEXT = nullptr;
757     PFNGLTEXSTORAGEMEM2DEXTPROC texStorageMem2DEXT = nullptr;
758     PFNGLTEXSTORAGEMEM2DMULTISAMPLEEXTPROC texStorageMem2DMultisampleEXT = nullptr;
759     PFNGLTEXSTORAGEMEM3DEXTPROC texStorageMem3DEXT = nullptr;
760     PFNGLTEXSTORAGEMEM3DMULTISAMPLEEXTPROC texStorageMem3DMultisampleEXT = nullptr;
761     PFNGLTEXTURESTORAGEMEM2DEXTPROC textureStorageMem2DEXT = nullptr;
762     PFNGLTEXTURESTORAGEMEM2DMULTISAMPLEEXTPROC textureStorageMem2DMultisampleEXT = nullptr;
763     PFNGLTEXTURESTORAGEMEM3DEXTPROC textureStorageMem3DEXT = nullptr;
764     PFNGLTEXTURESTORAGEMEM3DMULTISAMPLEEXTPROC textureStorageMem3DMultisampleEXT = nullptr;
765 
766     // GL_EXT_memory_object_fd
767     PFNGLIMPORTMEMORYFDEXTPROC importMemoryFdEXT = nullptr;
768 
769     // GL_EXT_memory_object_win32
770     PFNGLIMPORTMEMORYWIN32HANDLEEXTPROC importMemoryWin32HandleEXT = nullptr;
771     PFNGLIMPORTMEMORYWIN32NAMEEXTPROC importMemoryWin32NameEXT = nullptr;
772 
773     // GL_EXT_multisampled_render_to_texture
774     PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEEXTPROC framebufferTexture2DMultisampleEXT = nullptr;
775     PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC renderbufferStorageMultisampleEXT = nullptr;
776 
777     // GL_EXT_semaphore
778     PFNGLDELETESEMAPHORESEXTPROC deleteSemaphoresEXT = nullptr;
779     PFNGLGENSEMAPHORESEXTPROC genSemaphoresEXT = nullptr;
780     PFNGLGETSEMAPHOREPARAMETERUI64VEXTPROC getSemaphoreParameterui64vEXT = nullptr;
781     PFNGLISSEMAPHOREEXTPROC isSemaphoreEXT = nullptr;
782     PFNGLSEMAPHOREPARAMETERUI64VEXTPROC semaphoreParameterui64vEXT = nullptr;
783     PFNGLSIGNALSEMAPHOREEXTPROC signalSemaphoreEXT = nullptr;
784     PFNGLWAITSEMAPHOREEXTPROC waitSemaphoreEXT = nullptr;
785 
786     // GL_EXT_semaphore_fd
787     PFNGLIMPORTSEMAPHOREFDEXTPROC importSemaphoreFdEXT = nullptr;
788 
789     // GL_EXT_semaphore_win32
790     PFNGLIMPORTSEMAPHOREWIN32HANDLEEXTPROC importSemaphoreWin32HandleEXT = nullptr;
791     PFNGLIMPORTSEMAPHOREWIN32NAMEEXTPROC importSemaphoreWin32NameEXT = nullptr;
792 
793     // GL_EXT_texture_buffer
794     PFNGLTEXBUFFEREXTPROC texBufferEXT = nullptr;
795     PFNGLTEXBUFFERRANGEEXTPROC texBufferRangeEXT = nullptr;
796 
797     // GL_IMG_multisampled_render_to_texture
798     PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEIMGPROC framebufferTexture2DMultisampleIMG = nullptr;
799     PFNGLRENDERBUFFERSTORAGEMULTISAMPLEIMGPROC renderbufferStorageMultisampleIMG = nullptr;
800 
801     // GL_KHR_parallel_shader_compile
802     PFNGLMAXSHADERCOMPILERTHREADSKHRPROC maxShaderCompilerThreadsKHR = nullptr;
803 
804     // GL_NV_framebuffer_blit
805     PFNGLBLITFRAMEBUFFERNVPROC blitFramebufferNV = nullptr;
806 
807     // GL_NV_internalformat_sample_query
808     PFNGLGETINTERNALFORMATSAMPLEIVNVPROC getInternalformatSampleivNV = nullptr;
809 
810     // GL_OES_EGL_image
811     PFNGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC eGLImageTargetRenderbufferStorageOES = nullptr;
812     PFNGLEGLIMAGETARGETTEXTURE2DOESPROC eGLImageTargetTexture2DOES = nullptr;
813 
814     // GL_OES_texture_buffer
815     PFNGLTEXBUFFEROESPROC texBufferOES = nullptr;
816     PFNGLTEXBUFFERRANGEOESPROC texBufferRangeOES = nullptr;
817 
818     // GL_OVR_multiview2
819     PFNGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC framebufferTextureMultiviewOVR = nullptr;
820     // clang-format on
821 
822     DispatchTableGL();
823     virtual ~DispatchTableGL() = default;
824 
825   protected:
826     virtual void *loadProcAddress(const std::string &function) const = 0;
827 
828     void initProcsDesktopGL(const gl::Version &version, const std::set<std::string> &extensions);
829     void initProcsGLES(const gl::Version &version, const std::set<std::string> &extensions);
830     void initProcsSharedExtensions(const std::set<std::string> &extensions);
831 
832 #if defined(ANGLE_ENABLE_OPENGL_NULL)
833     void initProcsDesktopGLNULL(const gl::Version &version,
834                                 const std::set<std::string> &extensions);
835     void initProcsGLESNULL(const gl::Version &version, const std::set<std::string> &extensions);
836     void initProcsSharedExtensionsNULL(const std::set<std::string> &extensions);
837 #endif  // defined(ANGLE_ENABLE_OPENGL_NULL)
838 };
839 
840 }  // namespace rx
841 
842 #endif  // LIBGLESV2_RENDERER_GL_DISPATCH_TABLE_GL_AUTOGEN_H_
843