1 /* -*- Mode: c++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40; -*- */
2 /* This Source Code Form is subject to the terms of the Mozilla Public
3  * License, v. 2.0. If a copy of the MPL was not distributed with this
4  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
5 
6 #ifndef GLCONTEXTSYMBOLS_H_
7 #define GLCONTEXTSYMBOLS_H_
8 
9 #include "GLDefs.h"
10 
11 /*
12  * This file should only be included by GLContext.h, and should be
13  * autogenerated in the future.
14  */
15 
16 #ifndef GLAPIENTRY
17 #ifdef XP_WIN
18 #define GLAPIENTRY __stdcall
19 #else
20 #define GLAPIENTRY
21 #endif
22 #define GLAPI
23 #endif
24 
25 namespace mozilla {
26 namespace gl {
27 
28 struct GLContextSymbols
29 {
GLContextSymbolsGLContextSymbols30     GLContextSymbols() {
31         Zero();
32     }
33 
ZeroGLContextSymbols34     void Zero() {
35         memset(this, 0, sizeof(GLContextSymbols));
36     }
37 
38     typedef void (GLAPIENTRY * PFNGLACTIVETEXTUREPROC) (GLenum texture);
39     PFNGLACTIVETEXTUREPROC fActiveTexture;
40     typedef void (GLAPIENTRY * PFNGLATTACHSHADERPROC) (GLuint program, GLuint shader);
41     PFNGLATTACHSHADERPROC fAttachShader;
42     typedef void (GLAPIENTRY * PFNGLBEGINQUERYPROC) (GLenum target, GLuint id);
43     PFNGLBEGINQUERYPROC fBeginQuery;
44     typedef void (GLAPIENTRY * PFNGLBINDATTRIBLOCATIONPROC) (GLuint program, GLuint index, const GLchar* name);
45     PFNGLBINDATTRIBLOCATIONPROC fBindAttribLocation;
46     typedef void (GLAPIENTRY * PFNGLBINDBUFFERPROC) (GLenum target, GLuint buffer);
47     PFNGLBINDBUFFERPROC fBindBuffer;
48     typedef void (GLAPIENTRY * PFNGLBINDTEXTUREPROC) (GLenum target, GLuint texture);
49     PFNGLBINDTEXTUREPROC fBindTexture;
50     typedef void (GLAPIENTRY * PFNGLBINDVERTEXARRAYPROC) (GLuint array);
51     PFNGLBINDVERTEXARRAYPROC fBindVertexArray;
52     typedef void (GLAPIENTRY * PFNGLBLENDCOLORPROC) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
53     PFNGLBLENDCOLORPROC fBlendColor;
54     typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONPROC) (GLenum mode);
55     PFNGLBLENDEQUATIONPROC fBlendEquation;
56     typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONSEPARATEPROC) (GLenum, GLenum);
57     PFNGLBLENDEQUATIONSEPARATEPROC fBlendEquationSeparate;
58     typedef void (GLAPIENTRY * PFNGLBLENDFUNCPROC) (GLenum, GLenum);
59     PFNGLBLENDFUNCPROC fBlendFunc;
60     typedef void (GLAPIENTRY * PFNGLBLENDFUNCSEPARATEPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
61     PFNGLBLENDFUNCSEPARATEPROC fBlendFuncSeparate;
62     typedef void (GLAPIENTRY * PFNGLBUFFERDATAPROC) (GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage);
63     PFNGLBUFFERDATAPROC fBufferData;
64     typedef void (GLAPIENTRY * PFNGLBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid* data);
65     PFNGLBUFFERSUBDATAPROC fBufferSubData;
66     typedef void (GLAPIENTRY * PFNGLCLEARPROC) (GLbitfield);
67     PFNGLCLEARPROC fClear;
68     typedef void (GLAPIENTRY * PFNGLCLEARBUFFERFIPROC) (GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);
69     PFNGLCLEARBUFFERFIPROC fClearBufferfi;
70     typedef void (GLAPIENTRY * PFNGLCLEARBUFFERFVPROC) (GLenum buffer, GLint drawbuffer, const GLfloat* value);
71     PFNGLCLEARBUFFERFVPROC fClearBufferfv;
72     typedef void (GLAPIENTRY * PFNGLCLEARBUFFERIVPROC) (GLenum buffer, GLint drawbuffer, const GLint* value);
73     PFNGLCLEARBUFFERIVPROC fClearBufferiv;
74     typedef void (GLAPIENTRY * PFNGLCLEARBUFFERUIVPROC) (GLenum buffer, GLint drawbuffer, const GLuint* value);
75     PFNGLCLEARBUFFERUIVPROC fClearBufferuiv;
76     typedef void (GLAPIENTRY * PFNGLCLEARCOLORPROC) (GLfloat, GLfloat, GLfloat, GLfloat);
77     PFNGLCLEARCOLORPROC fClearColor;
78     typedef void (GLAPIENTRY * PFNGLCLEARSTENCILPROC) (GLint);
79     PFNGLCLEARSTENCILPROC fClearStencil;
80     typedef void (GLAPIENTRY * PFNGLCOLORMASKPROC) (realGLboolean red, realGLboolean green, realGLboolean blue, realGLboolean alpha);
81     PFNGLCOLORMASKPROC fColorMask;
82     typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXIMAGE2D) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid* pixels);
83     PFNGLCOMPRESSEDTEXIMAGE2D fCompressedTexImage2D;
84     typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE2D) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid* pixels);
85     PFNGLCOMPRESSEDTEXSUBIMAGE2D fCompressedTexSubImage2D;
86     typedef void (GLAPIENTRY * PFNGLCULLFACEPROC) (GLenum mode);
87     PFNGLCULLFACEPROC fCullFace;
88     typedef void (GLAPIENTRY * PFNGLDETACHSHADERPROC) (GLuint program, GLuint shader);
89     PFNGLDETACHSHADERPROC fDetachShader;
90     typedef void (GLAPIENTRY * PFNGLDEPTHFUNCPROC) (GLenum);
91     PFNGLDEPTHFUNCPROC fDepthFunc;
92     typedef void (GLAPIENTRY * PFNGLDEPTHMASKPROC) (realGLboolean);
93     PFNGLDEPTHMASKPROC fDepthMask;
94     typedef void (GLAPIENTRY * PFNGLDISABLEPROC) (GLenum);
95     PFNGLDISABLEPROC fDisable;
96     typedef void (GLAPIENTRY * PFNGLDISABLEVERTEXATTRIBARRAYPROC) (GLuint);
97     PFNGLDISABLEVERTEXATTRIBARRAYPROC fDisableVertexAttribArray;
98     typedef void (GLAPIENTRY * PFNGLDRAWARRAYSPROC) (GLenum mode, GLint first, GLsizei count);
99     PFNGLDRAWARRAYSPROC fDrawArrays;
100     typedef void (GLAPIENTRY * PFNGLDRAWBUFFERPROC) (GLenum mode);
101     PFNGLDRAWBUFFERPROC fDrawBuffer;
102     typedef void (GLAPIENTRY * PFNGLDRAWBUFFERSPROC) (GLsizei n, const GLenum* bufs);
103     PFNGLDRAWBUFFERSPROC fDrawBuffers;
104     typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid* indices);
105     PFNGLDRAWELEMENTSPROC fDrawElements;
106     typedef void (GLAPIENTRY * PFNGLENABLEPROC) (GLenum);
107     PFNGLENABLEPROC fEnable;
108     typedef void (GLAPIENTRY * PFNGLENABLEVERTEXATTRIBARRAYPROC) (GLuint);
109     PFNGLENABLEVERTEXATTRIBARRAYPROC fEnableVertexAttribArray;
110     typedef void (GLAPIENTRY * PFNGLFINISHPROC) (void);
111     PFNGLFINISHPROC fFinish;
112     typedef void (GLAPIENTRY * PFNGLENDQUERYPROC) (GLenum target);
113     PFNGLENDQUERYPROC fEndQuery;
114     typedef void (GLAPIENTRY * PFNGLFLUSHPROC) (void);
115     PFNGLFLUSHPROC fFlush;
116     typedef void (GLAPIENTRY * PFNGLFRONTFACEPROC) (GLenum);
117     PFNGLFRONTFACEPROC fFrontFace;
118     typedef void (GLAPIENTRY * PFNGLGETACTIVEATTRIBPROC) (GLuint program, GLuint index, GLsizei maxLength, GLsizei* length, GLint* size, GLenum* type, GLchar* name);
119     PFNGLGETACTIVEATTRIBPROC fGetActiveAttrib;
120     typedef void (GLAPIENTRY * PFNGLGETACTIVEUNIFORMPROC) (GLuint program, GLuint index, GLsizei maxLength, GLsizei* length, GLint* size, GLenum* type, GLchar* name);
121     PFNGLGETACTIVEUNIFORMPROC fGetActiveUniform;
122     typedef void (GLAPIENTRY * PFNGLGETATTACHEDSHADERSPROC) (GLuint program, GLsizei maxCount, GLsizei* count, GLuint* shaders);
123     PFNGLGETATTACHEDSHADERSPROC fGetAttachedShaders;
124     typedef GLint (GLAPIENTRY * PFNGLGETATTRIBLOCATIONPROC) (GLuint program, const GLchar* name);
125     PFNGLGETATTRIBLOCATIONPROC fGetAttribLocation;
126     typedef void (GLAPIENTRY * PFNGLGETINTEGERVPROC) (GLenum pname, GLint* params);
127     PFNGLGETINTEGERVPROC fGetIntegerv;
128     typedef void (GLAPIENTRY * PFNGLGETFLOATVPROC) (GLenum pname, GLfloat* params);
129     PFNGLGETFLOATVPROC fGetFloatv;
130     typedef void (GLAPIENTRY * PFNGLGETBOOLEANBPROC) (GLenum pname, realGLboolean* params);
131     PFNGLGETBOOLEANBPROC fGetBooleanv;
132     typedef void (GLAPIENTRY * PFNGLGETBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint* params);
133     PFNGLGETBUFFERPARAMETERIVPROC fGetBufferParameteriv;
134     typedef void (GLAPIENTRY * PFNGLGENERATEMIPMAPPROC) (GLenum target);
135     PFNGLGENERATEMIPMAPPROC fGenerateMipmap;
136     typedef GLenum (GLAPIENTRY * PFNGLGETERRORPROC) (void);
137     PFNGLGETERRORPROC fGetError;
138     typedef void (GLAPIENTRY * PFNGLGETPROGRAMIVPROC) (GLuint program, GLenum pname, GLint* param);
139     PFNGLGETPROGRAMIVPROC fGetProgramiv;
140     typedef void (GLAPIENTRY * PFNGLGETPROGRAMINFOLOGPROC) (GLuint program, GLsizei bufSize, GLsizei* length, GLchar* infoLog);
141     PFNGLGETPROGRAMINFOLOGPROC fGetProgramInfoLog;
142     typedef void (GLAPIENTRY * PFNGLGETQUERYIVPROC) (GLenum target, GLenum pname, GLint* params);
143     PFNGLGETQUERYIVPROC fGetQueryiv;
144     typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTIVPROC) (GLuint id, GLenum pname, GLint* params);
145     PFNGLGETQUERYOBJECTIVPROC fGetQueryObjectiv;
146     typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTUIVPROC) (GLuint id, GLenum pname, GLuint* params);
147     PFNGLGETQUERYOBJECTUIVPROC fGetQueryObjectuiv;
148     typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTI64VPROC) (GLuint id, GLenum pname, GLint64* params);
149     PFNGLGETQUERYOBJECTI64VPROC fGetQueryObjecti64v;
150     typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTUI64VPROC) (GLuint id, GLenum pname, GLuint64* params);
151     PFNGLGETQUERYOBJECTUI64VPROC fGetQueryObjectui64v;
152     typedef void (GLAPIENTRY * PFNGLQUERYCOUNTERPROC) (GLuint id, GLenum target);
153     PFNGLQUERYCOUNTERPROC fQueryCounter;
154     typedef void (GLAPIENTRY * PFNGLTEXPARAMETERIPROC) (GLenum target, GLenum pname, GLint param);
155     PFNGLTEXPARAMETERIPROC fTexParameteri;
156     typedef void (GLAPIENTRY * PFNGLTEXPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint* param);
157     PFNGLTEXPARAMETERIVPROC fTexParameteriv;
158     typedef void (GLAPIENTRY * PFNGLTEXPARAMETERFPROC) (GLenum target, GLenum pname, GLfloat param);
159     PFNGLTEXPARAMETERFPROC fTexParameterf;
160     typedef GLubyte* (GLAPIENTRY * PFNGLGETSTRINGPROC) (GLenum);
161     PFNGLGETSTRINGPROC fGetString;
162     typedef void (GLAPIENTRY * PFNGLGETTEXIMAGEPROC) (GLenum target, GLint level, GLenum format, GLenum type, GLvoid* image);
163     PFNGLGETTEXIMAGEPROC fGetTexImage;
164     typedef void (GLAPIENTRY * PFNGLGETTEXLEVELPARAMETERIVPROC) (GLenum target, GLint level, GLenum pname, GLint* params);
165     PFNGLGETTEXLEVELPARAMETERIVPROC fGetTexLevelParameteriv;
166     typedef void (GLAPIENTRY * PFNGLGETTEXPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat* params);
167     PFNGLGETTEXPARAMETERFVPROC fGetTexParameterfv;
168     typedef void (GLAPIENTRY * PFNGLGETTEXPARAMETERIVPROC) (GLenum target, GLenum pname, GLint* params);
169     PFNGLGETTEXPARAMETERIVPROC fGetTexParameteriv;
170     typedef void (GLAPIENTRY * PFNGLGETUNIFORMFVPROC) (GLuint program, GLint location, GLfloat* params);
171     PFNGLGETUNIFORMFVPROC fGetUniformfv;
172     typedef void (GLAPIENTRY * PFNGLGETUNIFORMIVPROC) (GLuint program, GLint location, GLint* params);
173     PFNGLGETUNIFORMIVPROC fGetUniformiv;
174     typedef void (GLAPIENTRY * PFNGLGETUNIFORMUIVPROC) (GLuint program, GLint location, GLuint* params);
175     PFNGLGETUNIFORMUIVPROC fGetUniformuiv;
176     typedef GLint (GLAPIENTRY * PFNGLGETUNIFORMLOCATIONPROC) (GLint programObj, const GLchar* name);
177     PFNGLGETUNIFORMLOCATIONPROC fGetUniformLocation;
178     typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBFVPROC) (GLuint, GLenum, GLfloat*);
179     PFNGLGETVERTEXATTRIBFVPROC fGetVertexAttribfv;
180     typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIVPROC) (GLuint, GLenum, GLint*);
181     PFNGLGETVERTEXATTRIBIVPROC fGetVertexAttribiv;
182     typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBPOINTERVPROC) (GLuint, GLenum, GLvoid**);
183     PFNGLGETVERTEXATTRIBPOINTERVPROC fGetVertexAttribPointerv;
184     typedef void (GLAPIENTRY * PFNGLHINTPROC) (GLenum target, GLenum mode);
185     PFNGLHINTPROC fHint;
186     typedef realGLboolean (GLAPIENTRY * PFNGLISBUFFERPROC) (GLuint buffer);
187     PFNGLISBUFFERPROC fIsBuffer;
188     typedef realGLboolean (GLAPIENTRY * PFNGLISENABLEDPROC) (GLenum cap);
189     PFNGLISENABLEDPROC fIsEnabled;
190     typedef realGLboolean (GLAPIENTRY * PFNGLISPROGRAMPROC) (GLuint program);
191     PFNGLISPROGRAMPROC fIsProgram;
192     typedef realGLboolean (GLAPIENTRY * PFNGLISQUERYPROC) (GLuint id);
193     PFNGLISQUERYPROC fIsQuery;
194     typedef realGLboolean (GLAPIENTRY * PFNGLISSHADERPROC) (GLuint shader);
195     PFNGLISSHADERPROC fIsShader;
196     typedef realGLboolean (GLAPIENTRY * PFNGLISTEXTUREPROC) (GLuint texture);
197     PFNGLISTEXTUREPROC fIsTexture;
198     typedef void (GLAPIENTRY * PFNGLLINEWIDTHPROC) (GLfloat width);
199     PFNGLLINEWIDTHPROC fLineWidth;
200     typedef void (GLAPIENTRY * PFNGLLINKPROGRAMPROC) (GLuint program);
201     PFNGLLINKPROGRAMPROC fLinkProgram;
202     typedef void (GLAPIENTRY * PFNGLPIXELSTOREIPROC) (GLenum pname, GLint param);
203     PFNGLPIXELSTOREIPROC fPixelStorei;
204     typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERFPROC) (GLenum pname, GLfloat param);
205     PFNGLPOINTPARAMETERFPROC fPointParameterf;
206     typedef void (GLAPIENTRY * PFNGLPOLYGONOFFSETPROC) (GLfloat factor, GLfloat bias);
207     PFNGLPOLYGONOFFSETPROC fPolygonOffset;
208     typedef void (GLAPIENTRY * PFNGLREADBUFFERPROC) (GLenum);
209     PFNGLREADBUFFERPROC fReadBuffer;
210     typedef void (GLAPIENTRY * PFNGLREADPIXELSPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid* pixels);
211     PFNGLREADPIXELSPROC fReadPixels;
212     typedef void (GLAPIENTRY * PFNGLSAMPLECOVERAGEPROC) (GLclampf value, realGLboolean invert);
213     PFNGLSAMPLECOVERAGEPROC fSampleCoverage;
214     typedef void (GLAPIENTRY * PFNGLSTENCILFUNCPROC) (GLenum func, GLint ref, GLuint mask);
215     PFNGLSTENCILFUNCPROC fStencilFunc;
216     typedef void (GLAPIENTRY * PFNGLSTENCILFUNCSEPARATEPROC) (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask);
217     PFNGLSTENCILFUNCSEPARATEPROC fStencilFuncSeparate;
218     typedef void (GLAPIENTRY * PFNGLSTENCILMASKPROC) (GLuint mask);
219     PFNGLSTENCILMASKPROC fStencilMask;
220     typedef void (GLAPIENTRY * PFNGLSTENCILMASKSEPARATEPROC) (GLenum, GLuint);
221     PFNGLSTENCILMASKSEPARATEPROC fStencilMaskSeparate;
222     typedef void (GLAPIENTRY * PFNGLSTENCILOPPROC) (GLenum fail, GLenum zfail, GLenum zpass);
223     PFNGLSTENCILOPPROC fStencilOp;
224     typedef void (GLAPIENTRY * PFNGLSTENCILOPSEPARATEPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);
225     PFNGLSTENCILOPSEPARATEPROC fStencilOpSeparate;
226     typedef void (GLAPIENTRY * PFNGLTEXIMAGE2DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid* pixels);
227     PFNGLTEXIMAGE2DPROC fTexImage2D;
228     typedef void (GLAPIENTRY * PFNGLTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void* pixels);
229     PFNGLTEXSUBIMAGE2DPROC fTexSubImage2D;
230     typedef void (GLAPIENTRY * PFNGLTEXTURERANGEAPPLEPROC) (GLenum target, GLsizei length, GLvoid* pointer);
231     PFNGLTEXTURERANGEAPPLEPROC fTextureRangeAPPLE;
232     typedef void (GLAPIENTRY * PFNGLUNIFORM1FPROC) (GLint location, GLfloat v0);
233     PFNGLUNIFORM1FPROC fUniform1f;
234     typedef void (GLAPIENTRY * PFNGLUNIFORM1FVPROC) (GLint location, GLsizei count, const GLfloat* value);
235     PFNGLUNIFORM1FVPROC fUniform1fv;
236     typedef void (GLAPIENTRY * PFNGLUNIFORM1IPROC) (GLint location, GLint v0);
237     PFNGLUNIFORM1IPROC fUniform1i;
238     typedef void (GLAPIENTRY * PFNGLUNIFORM1IVPROC) (GLint location, GLsizei count, const GLint* value);
239     PFNGLUNIFORM1IVPROC fUniform1iv;
240     typedef void (GLAPIENTRY * PFNGLUNIFORM2FPROC) (GLint location, GLfloat v0, GLfloat v1);
241     PFNGLUNIFORM2FPROC fUniform2f;
242     typedef void (GLAPIENTRY * PFNGLUNIFORM2FVPROC) (GLint location, GLsizei count, const GLfloat* value);
243     PFNGLUNIFORM2FVPROC fUniform2fv;
244     typedef void (GLAPIENTRY * PFNGLUNIFORM2IPROC) (GLint location, GLint v0, GLint v1);
245     PFNGLUNIFORM2IPROC fUniform2i;
246     typedef void (GLAPIENTRY * PFNGLUNIFORM2IVPROC) (GLint location, GLsizei count, const GLint* value);
247     PFNGLUNIFORM2IVPROC fUniform2iv;
248     typedef void (GLAPIENTRY * PFNGLUNIFORM3FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
249     PFNGLUNIFORM3FPROC fUniform3f;
250     typedef void (GLAPIENTRY * PFNGLUNIFORM3FVPROC) (GLint location, GLsizei count, const GLfloat* value);
251     PFNGLUNIFORM3FVPROC fUniform3fv;
252     typedef void (GLAPIENTRY * PFNGLUNIFORM3IPROC) (GLint location, GLint v0, GLint v1, GLint v2);
253     PFNGLUNIFORM3IPROC fUniform3i;
254     typedef void (GLAPIENTRY * PFNGLUNIFORM3IVPROC) (GLint location, GLsizei count, const GLint* value);
255     PFNGLUNIFORM3IVPROC fUniform3iv;
256     typedef void (GLAPIENTRY * PFNGLUNIFORM4FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
257     PFNGLUNIFORM4FPROC fUniform4f;
258     typedef void (GLAPIENTRY * PFNGLUNIFORM4FVPROC) (GLint location, GLsizei count, const GLfloat* value);
259     PFNGLUNIFORM4FVPROC fUniform4fv;
260     typedef void (GLAPIENTRY * PFNGLUNIFORM4IPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
261     PFNGLUNIFORM4IPROC fUniform4i;
262     typedef void (GLAPIENTRY * PFNGLUNIFORM4IVPROC) (GLint location, GLsizei count, const GLint* value);
263     PFNGLUNIFORM4IVPROC fUniform4iv;
264     typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2FVPROC) (GLint location, GLsizei count, realGLboolean transpose, const GLfloat* value);
265     PFNGLUNIFORMMATRIX2FVPROC fUniformMatrix2fv;
266     typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2X3FVPROC) (GLint location, GLsizei count, realGLboolean transpose, const GLfloat* value);
267     PFNGLUNIFORMMATRIX2X3FVPROC fUniformMatrix2x3fv;
268     typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX2X4FVPROC) (GLint location, GLsizei count, realGLboolean transpose, const GLfloat* value);
269     PFNGLUNIFORMMATRIX2X4FVPROC fUniformMatrix2x4fv;
270     typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3FVPROC) (GLint location, GLsizei count, realGLboolean transpose, const GLfloat* value);
271     PFNGLUNIFORMMATRIX3FVPROC fUniformMatrix3fv;
272     typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3X2FVPROC) (GLint location, GLsizei count, realGLboolean transpose, const GLfloat* value);
273     PFNGLUNIFORMMATRIX3X2FVPROC fUniformMatrix3x2fv;
274     typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX3X4FVPROC) (GLint location, GLsizei count, realGLboolean transpose, const GLfloat* value);
275     PFNGLUNIFORMMATRIX3X4FVPROC fUniformMatrix3x4fv;
276     typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4FVPROC) (GLint location, GLsizei count, realGLboolean transpose, const GLfloat* value);
277     PFNGLUNIFORMMATRIX4FVPROC fUniformMatrix4fv;
278     typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4X2FVPROC) (GLint location, GLsizei count, realGLboolean transpose, const GLfloat* value);
279     PFNGLUNIFORMMATRIX4X2FVPROC fUniformMatrix4x2fv;
280     typedef void (GLAPIENTRY * PFNGLUNIFORMMATRIX4X3FVPROC) (GLint location, GLsizei count, realGLboolean transpose, const GLfloat* value);
281     PFNGLUNIFORMMATRIX4X3FVPROC fUniformMatrix4x3fv;
282 
283     typedef void (GLAPIENTRY * PFNGLUSEPROGRAMPROC) (GLuint program);
284     PFNGLUSEPROGRAMPROC fUseProgram;
285     typedef void (GLAPIENTRY * PFNGLVALIDATEPROGRAMPROC) (GLuint program);
286     PFNGLVALIDATEPROGRAMPROC fValidateProgram;
287     typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, GLenum type, realGLboolean normalized, GLsizei stride, const GLvoid* pointer);
288     PFNGLVERTEXATTRIBPOINTERPROC fVertexAttribPointer;
289     typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1FPROC) (GLuint index, GLfloat x);
290     PFNGLVERTEXATTRIB1FPROC fVertexAttrib1f;
291     typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2FPROC) (GLuint index, GLfloat x, GLfloat y);
292     PFNGLVERTEXATTRIB2FPROC fVertexAttrib2f;
293     typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z);
294     PFNGLVERTEXATTRIB3FPROC fVertexAttrib3f;
295     typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
296     PFNGLVERTEXATTRIB4FPROC fVertexAttrib4f;
297     typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB1FVPROC) (GLuint index, const GLfloat* v);
298     PFNGLVERTEXATTRIB1FVPROC fVertexAttrib1fv;
299     typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB2FVPROC) (GLuint index, const GLfloat* v);
300     PFNGLVERTEXATTRIB2FVPROC fVertexAttrib2fv;
301     typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB3FVPROC) (GLuint index, const GLfloat* v);
302     PFNGLVERTEXATTRIB3FVPROC fVertexAttrib3fv;
303     typedef void (GLAPIENTRY * PFNGLVERTEXATTRIB4FVPROC) (GLuint index, const GLfloat* v);
304     PFNGLVERTEXATTRIB4FVPROC fVertexAttrib4fv;
305     typedef void (GLAPIENTRY * PFNGLCOMPILESHADERPROC) (GLuint shader);
306     PFNGLCOMPILESHADERPROC fCompileShader;
307     typedef void (GLAPIENTRY * PFNGLCOPYTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
308     PFNGLCOPYTEXIMAGE2DPROC fCopyTexImage2D;
309     typedef void (GLAPIENTRY * PFNGLCOPYTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
310     PFNGLCOPYTEXSUBIMAGE2DPROC fCopyTexSubImage2D;
311     typedef void (GLAPIENTRY * PFNGLGETSHADERIVPROC) (GLuint shader, GLenum pname, GLint* param);
312     PFNGLGETSHADERIVPROC fGetShaderiv;
313     typedef void (GLAPIENTRY * PFNGLGETSHADERINFOLOGPROC) (GLuint shader, GLsizei bufSize, GLsizei* length, GLchar* infoLog);
314     PFNGLGETSHADERINFOLOGPROC fGetShaderInfoLog;
315     typedef void (GLAPIENTRY * PFNGETSHADERPRECISIONFORMAT) (GLenum shadertype, GLenum precisiontype, GLint* range, GLint* precision);
316     PFNGETSHADERPRECISIONFORMAT fGetShaderPrecisionFormat;
317     typedef void (GLAPIENTRY * PFNGLGETSHADERSOURCEPROC) (GLint obj, GLsizei maxLength, GLsizei* length, GLchar* source);
318     PFNGLGETSHADERSOURCEPROC fGetShaderSource;
319     typedef void (GLAPIENTRY * PFNGLSHADERSOURCEPROC) (GLuint shader, GLsizei count, const GLchar* const* strings, const GLint* lengths);
320     PFNGLSHADERSOURCEPROC fShaderSource;
321 
322     typedef void (GLAPIENTRY * PFNGLBINDFRAMEBUFFER) (GLenum target, GLuint framebuffer);
323     PFNGLBINDFRAMEBUFFER fBindFramebuffer;
324     typedef void (GLAPIENTRY * PFNGLBINDRENDERBUFFER) (GLenum target, GLuint renderbuffer);
325     PFNGLBINDRENDERBUFFER fBindRenderbuffer;
326     typedef GLenum (GLAPIENTRY * PFNGLCHECKFRAMEBUFFERSTATUS) (GLenum target);
327     PFNGLCHECKFRAMEBUFFERSTATUS fCheckFramebufferStatus;
328     typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERRENDERBUFFER) (GLenum target, GLenum attachmentPoint, GLenum renderbufferTarget, GLuint renderbuffer);
329     PFNGLFRAMEBUFFERRENDERBUFFER fFramebufferRenderbuffer;
330     typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURE2D) (GLenum target, GLenum attachmentPoint, GLenum textureTarget, GLuint texture, GLint level);
331     PFNGLFRAMEBUFFERTEXTURE2D fFramebufferTexture2D;
332     typedef void (GLAPIENTRY * PFNGLFRAMEBUFFERTEXTURELAYERPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
333     PFNGLFRAMEBUFFERTEXTURELAYERPROC fFramebufferTextureLayer;
334     typedef void (GLAPIENTRY * PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIV) (GLenum target, GLenum attachment, GLenum pname, GLint* value);
335     PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIV fGetFramebufferAttachmentParameteriv;
336     typedef void (GLAPIENTRY * PFNGLGETRENDERBUFFERPARAMETERIV) (GLenum target, GLenum pname, GLint* value);
337     PFNGLGETRENDERBUFFERPARAMETERIV fGetRenderbufferParameteriv;
338     typedef realGLboolean (GLAPIENTRY * PFNGLISFRAMEBUFFER) (GLuint framebuffer);
339     PFNGLISFRAMEBUFFER fIsFramebuffer;
340     typedef realGLboolean (GLAPIENTRY * PFNGLISRENDERBUFFER) (GLuint renderbuffer);
341     PFNGLISRENDERBUFFER fIsRenderbuffer;
342     typedef realGLboolean (GLAPIENTRY * PFNGLISVERTEXARRAY) (GLuint array);
343     PFNGLISVERTEXARRAY fIsVertexArray;
344     typedef void (GLAPIENTRY * PFNGLRENDERBUFFERSTORAGE) (GLenum target, GLenum internalFormat, GLsizei width, GLsizei height);
345     PFNGLRENDERBUFFERSTORAGE fRenderbufferStorage;
346 
347     typedef void (GLAPIENTRY * PFNINVALIDATEFRAMEBUFFER) (GLenum target, GLsizei numAttachments, const GLenum* attachments);
348     PFNINVALIDATEFRAMEBUFFER fInvalidateFramebuffer;
349     typedef void (GLAPIENTRY * PFNINVALIDATESUBFRAMEBUFFER) (GLenum target, GLsizei numAttachments, const GLenum* attachments, GLint x, GLint y, GLsizei width, GLsizei height);
350     PFNINVALIDATESUBFRAMEBUFFER fInvalidateSubFramebuffer;
351 
352         // These functions are only used by Skia/GL in desktop mode.
353         // Other parts of Gecko should avoid using these
354         typedef void (GLAPIENTRY * PFNGLCLIENTACTIVETEXTURE) (GLenum texture);
355         PFNGLCLIENTACTIVETEXTURE fClientActiveTexture;
356         typedef void (GLAPIENTRY * PFNDISABLECLIENTSTATE) (GLenum capability);
357         PFNDISABLECLIENTSTATE fDisableClientState;
358         typedef void (GLAPIENTRY * PFNENABLECLIENTSTATE) (GLenum capability);
359         PFNENABLECLIENTSTATE fEnableClientState;
360         typedef void (GLAPIENTRY * PFNLOADIDENTITY) (void);
361         PFNLOADIDENTITY fLoadIdentity;
362         typedef void (GLAPIENTRY * PFNLOADMATRIXD) (const GLdouble* matrix);
363         PFNLOADMATRIXD fLoadMatrixd;
364         typedef void (GLAPIENTRY * PFNLOADMATRIXF) (const GLfloat* matrix);
365         PFNLOADMATRIXF fLoadMatrixf;
366         typedef void (GLAPIENTRY * PFNMATRIXMODE) (GLenum mode);
367         PFNMATRIXMODE fMatrixMode;
368         typedef void (GLAPIENTRY * PFNTEXGENI) (GLenum coord, GLenum pname, GLint param);
369         PFNTEXGENI fTexGeni;
370         typedef void (GLAPIENTRY * PFNTEXGENF) (GLenum coord, GLenum pname, GLfloat param);
371         PFNTEXGENF fTexGenf;
372         typedef void (GLAPIENTRY * PFNTEXGENFV) (GLenum coord, GLenum pname, const GLfloat* param);
373         PFNTEXGENFV fTexGenfv;
374         typedef void (GLAPIENTRY * PFNVERTEXPOINTER) (GLint size, GLenum type, GLsizei stride, const GLvoid* pointer);
375         PFNVERTEXPOINTER fVertexPointer;
376 
377     typedef void (GLAPIENTRY * PFNGLBLITFRAMEBUFFER) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
378     PFNGLBLITFRAMEBUFFER fBlitFramebuffer;
379     typedef void (GLAPIENTRY * PFNGLRENDERBUFFERSTORAGEMULTISAMPLE) (GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height);
380     PFNGLRENDERBUFFERSTORAGEMULTISAMPLE fRenderbufferStorageMultisample;
381 
382 
383     /* These are different between GLES2 and desktop GL; we hide those differences, use the GL
384      * names, but the most limited data type.
385      */
386     typedef void (GLAPIENTRY * PFNGLDEPTHRANGEFPROC) (GLclampf, GLclampf);
387     PFNGLDEPTHRANGEFPROC fDepthRangef;
388     typedef void (GLAPIENTRY * PFNGLCLEARDEPTHFPROC) (GLclampf);
389     PFNGLCLEARDEPTHFPROC fClearDepthf;
390 
391     typedef void (GLAPIENTRY * PFNGLDEPTHRANGEPROC) (GLclampd, GLclampd);
392     PFNGLDEPTHRANGEPROC fDepthRange;
393     typedef void (GLAPIENTRY * PFNGLCLEARDEPTHPROC) (GLclampd);
394     PFNGLCLEARDEPTHPROC fClearDepth;
395 
396     /* These are special because we end up tracking these so that we don't
397      * have to query the values from GL.
398      */
399 
400     typedef void (GLAPIENTRY * PFNGLVIEWPORTPROC) (GLint x, GLint y, GLsizei width, GLsizei height);
401     PFNGLVIEWPORTPROC fViewport;
402     typedef void (GLAPIENTRY * PFNGLSCISSORPROC) (GLint x, GLint y, GLsizei width, GLsizei height);
403     PFNGLSCISSORPROC fScissor;
404 
405 
406     /* These are special -- they create or delete GL resources that can live
407      * in a shared namespace.  In DEBUG, we wrap these calls so that we can
408      * check when we have something that failed to do cleanup at the time the
409      * final context is destroyed.
410      */
411 
412     typedef GLuint (GLAPIENTRY * PFNGLCREATEPROGRAMPROC) (void);
413     PFNGLCREATEPROGRAMPROC fCreateProgram;
414     typedef GLuint (GLAPIENTRY * PFNGLCREATESHADERPROC) (GLenum type);
415     PFNGLCREATESHADERPROC fCreateShader;
416     typedef void (GLAPIENTRY * PFNGLGENBUFFERSPROC) (GLsizei n, GLuint* buffers);
417     PFNGLGENBUFFERSPROC fGenBuffers;
418     typedef void (GLAPIENTRY * PFNGLGENQUERIESPROC) (GLsizei n, GLuint* queries);
419     PFNGLGENQUERIESPROC fGenQueries;
420     typedef void (GLAPIENTRY * PFNGLGENTEXTURESPROC) (GLsizei n, GLuint* textures);
421     PFNGLGENTEXTURESPROC fGenTextures;
422     typedef void (GLAPIENTRY * PFNGLGENFRAMEBUFFERS) (GLsizei n, GLuint* ids);
423     PFNGLGENFRAMEBUFFERS fGenFramebuffers;
424     typedef void (GLAPIENTRY * PFNGLGENRENDERBUFFERS) (GLsizei n, GLuint* ids);
425     PFNGLGENRENDERBUFFERS fGenRenderbuffers;
426     typedef void (GLAPIENTRY * PFNGLGENVERTEXARRAYS) (GLsizei n, GLuint* arrays);
427     PFNGLGENVERTEXARRAYS fGenVertexArrays;
428 
429     typedef void (GLAPIENTRY * PFNGLDELETEPROGRAMPROC) (GLuint program);
430     PFNGLDELETEPROGRAMPROC fDeleteProgram;
431     typedef void (GLAPIENTRY * PFNGLDELETESHADERPROC) (GLuint shader);
432     PFNGLDELETESHADERPROC fDeleteShader;
433     typedef void (GLAPIENTRY * PFNGLDELETEBUFFERSPROC) (GLsizei n, const GLuint* buffers);
434     PFNGLDELETEBUFFERSPROC fDeleteBuffers;
435     typedef void (GLAPIENTRY * PFNGLDELETEQUERIESPROC) (GLsizei n, const GLuint* queries);
436     PFNGLDELETEQUERIESPROC fDeleteQueries;
437     typedef void (GLAPIENTRY * PFNGLDELETETEXTURESPROC) (GLsizei n, const GLuint* textures);
438     PFNGLDELETETEXTURESPROC fDeleteTextures;
439     typedef void (GLAPIENTRY * PFNGLDELETEFRAMEBUFFERS) (GLsizei n, const GLuint* ids);
440     PFNGLDELETEFRAMEBUFFERS fDeleteFramebuffers;
441     typedef void (GLAPIENTRY * PFNGLDELETERENDERBUFFERS) (GLsizei n, const GLuint* ids);
442     PFNGLDELETERENDERBUFFERS fDeleteRenderbuffers;
443     typedef void (GLAPIENTRY * PFNGLDELETEVERTEXARRAYS) (GLsizei n, const GLuint* arrays);
444     PFNGLDELETEVERTEXARRAYS fDeleteVertexArrays;
445 
446     typedef void* (GLAPIENTRY * PFNGLMAPBUFFER) (GLenum target, GLenum access);
447     PFNGLMAPBUFFER fMapBuffer;
448     typedef realGLboolean (GLAPIENTRY * PFNGLUNMAPBUFFER) (GLenum target);
449     PFNGLUNMAPBUFFER fUnmapBuffer;
450 
451     // ARB_copy_buffer / OpenGL 3.1 / OpenGL ES 3.0
452     typedef void (GLAPIENTRY * PFNGLCOPYBUFFERSUBDATAPROC) (GLenum readTarget, GLenum writeTarget,
453                                                             GLintptr readOffset, GLintptr writeOffset,
454                                                             GLsizeiptr size);
455     PFNGLCOPYBUFFERSUBDATAPROC fCopyBufferSubData;
456 
457     typedef GLenum (GLAPIENTRY * PFNGLGETGRAPHICSRESETSTATUS) (void);
458     PFNGLGETGRAPHICSRESETSTATUS fGetGraphicsResetStatus;
459 
460     // ARB_sync
461     typedef GLsync (GLAPIENTRY * PFNGLFENCESYNC) (GLenum condition, GLbitfield flags);
462     PFNGLFENCESYNC fFenceSync;
463     typedef realGLboolean (GLAPIENTRY * PFNGLISSYNC) (GLsync sync);
464     PFNGLISSYNC fIsSync;
465     typedef void (GLAPIENTRY * PFNGLDELETESYNC) (GLsync sync);
466     PFNGLDELETESYNC fDeleteSync;
467     typedef GLenum (GLAPIENTRY * PFNGLCLIENTWAITSYNC) (GLsync sync, GLbitfield flags, GLuint64 timeout);
468     PFNGLCLIENTWAITSYNC fClientWaitSync;
469     typedef void (GLAPIENTRY * PFNGLWAITSYNC) (GLsync sync, GLbitfield flags, GLuint64 timeout);
470     PFNGLWAITSYNC fWaitSync;
471     typedef void (GLAPIENTRY * PFNGLGETINTEGER64V) (GLenum pname, GLint64* params);
472     PFNGLGETINTEGER64V fGetInteger64v;
473     typedef void (GLAPIENTRY * PFNGLGETSYNCIV) (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei* length, GLint* values);
474     PFNGLGETSYNCIV fGetSynciv;
475 
476     // OES_egl_image
477     typedef void (GLAPIENTRY * PFNGLEGLIMAGETARGETTEXTURE2D)(GLenum target, GLeglImage image);
478     PFNGLEGLIMAGETARGETTEXTURE2D fEGLImageTargetTexture2D;
479     typedef void (GLAPIENTRY * PFNGLEGLIMAGETARGETRENDERBUFFERSTORAGE)(GLenum target, GLeglImage image);
480     PFNGLEGLIMAGETARGETRENDERBUFFERSTORAGE fEGLImageTargetRenderbufferStorage;
481 
482     // ARB_draw_instanced
483     typedef void (GLAPIENTRY * PFNGLDRAWARRAYSINSTANCED) (GLenum mode, GLint first, GLsizei count, GLsizei primcount);
484     PFNGLDRAWARRAYSINSTANCED fDrawArraysInstanced;
485     typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINSTANCED) (GLenum mode, GLsizei count, GLenum type, const GLvoid* indices, GLsizei primcount);
486     PFNGLDRAWELEMENTSINSTANCED fDrawElementsInstanced;
487 
488     // ARB_instanced_array
489     typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBDIVISOR) (GLuint index, GLuint divisor);
490     PFNGLVERTEXATTRIBDIVISOR fVertexAttribDivisor;
491 
492     // ARB_internalformat_query
493     typedef void (GLAPIENTRY * PFNGLGETINTERNALFORMATIVPROC) (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint* params);
494     PFNGLGETINTERNALFORMATIVPROC fGetInternalformativ;
495 
496     // ARB_transform_feedback2 / OpenGL 4.0 / OpenGL ES 3.0
497     typedef void (GLAPIENTRY * PFNGLBINDBUFFERBASE) (GLenum target, GLuint index, GLuint buffer);
498     PFNGLBINDBUFFERBASE fBindBufferBase;
499     typedef void (GLAPIENTRY * PFNGLBINDBUFFERRANGE) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
500     PFNGLBINDBUFFERRANGE fBindBufferRange;
501 
502     typedef void (GLAPIENTRY * PFNGLGENTRANSFORMFEEDBACKSPROC) (GLsizei n, GLuint* ids);
503     PFNGLGENTRANSFORMFEEDBACKSPROC fGenTransformFeedbacks;
504     typedef void (GLAPIENTRY * PFNGLDELETETRANSFORMFEEDBACKSPROC) (GLsizei n, const GLuint* ids);
505     PFNGLDELETETRANSFORMFEEDBACKSPROC fDeleteTransformFeedbacks;
506     typedef realGLboolean (GLAPIENTRY * PFNGLISTRANSFORMFEEDBACKPROC) (GLuint id);
507     PFNGLISTRANSFORMFEEDBACKPROC fIsTransformFeedback;
508     typedef void (GLAPIENTRY * PFNGLBINDTRANSFORMFEEDBACKPROC) (GLenum target, GLuint id);
509     PFNGLBINDTRANSFORMFEEDBACKPROC fBindTransformFeedback;
510     typedef void (GLAPIENTRY * PFNGLTRANSFORMFEEDBACKVARYINGS) (GLuint program, GLsizei count, const GLchar* const* varyings, GLenum bufferMode);
511     PFNGLTRANSFORMFEEDBACKVARYINGS fTransformFeedbackVaryings;
512     typedef void (GLAPIENTRY * PFNGLGETTRANSFORMFEEDBACKVARYING) (GLuint program, GLuint index, GLsizei bufSize, GLsizei* length, GLsizei* size, GLenum* type, GLchar* name);
513     PFNGLGETTRANSFORMFEEDBACKVARYING fGetTransformFeedbackVarying;
514     typedef void (GLAPIENTRY * PFNGLBEGINTRANSFORMFEEDBACK) (GLenum primitiveMode);
515     PFNGLBEGINTRANSFORMFEEDBACK fBeginTransformFeedback;
516     typedef void (GLAPIENTRY * PFNGLENDTRANSFORMFEEDBACK) (void);
517     PFNGLENDTRANSFORMFEEDBACK fEndTransformFeedback;
518     typedef void (GLAPIENTRY * PFNGLPAUSETRANSFORMFEEDBACKPROC) ();
519     PFNGLPAUSETRANSFORMFEEDBACKPROC fPauseTransformFeedback;
520     typedef void (GLAPIENTRY * PFNGLRESUMETRANSFORMFEEDBACKPROC) ();
521     PFNGLRESUMETRANSFORMFEEDBACKPROC fResumeTransformFeedback;
522 
523     typedef void (GLAPIENTRY * PFNGLGETINTEGERI_V) (GLenum param, GLuint index, GLint* values);
524     PFNGLGETINTEGERI_V fGetIntegeri_v;
525     typedef void (GLAPIENTRY * PFNGLGETINTEGER64I_VPROC) (GLenum target, GLuint index, GLint64* data);
526     PFNGLGETINTEGER64I_VPROC fGetInteger64i_v;
527 
528     // EXT_transform_feedback only
529     typedef void (GLAPIENTRY * PFNGLBINDBUFFEROFFSET) (GLenum target, GLuint index, GLuint buffer, GLintptr offset);
530     PFNGLBINDBUFFEROFFSET fBindBufferOffset;
531 
532     // KHR_debug
533     typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGECONTROL) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint* ids, realGLboolean enabled);
534     PFNGLDEBUGMESSAGECONTROL fDebugMessageControl;
535     typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGEINSERT) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar* buf);
536     PFNGLDEBUGMESSAGEINSERT fDebugMessageInsert;
537     typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGECALLBACK) (GLDEBUGPROC callback, const GLvoid* userParam);
538     PFNGLDEBUGMESSAGECALLBACK fDebugMessageCallback;
539     typedef GLuint (GLAPIENTRY * PFNGLDEBUGMESSAGELOG) (GLuint count, GLsizei bufsize, GLenum* sources, GLenum* types, GLuint* ids, GLenum* severities, GLsizei* lengths, GLchar* messageLog);
540     PFNGLDEBUGMESSAGELOG fGetDebugMessageLog;
541     typedef void (GLAPIENTRY * PFNGLGETPOINTERV) (GLenum pname, GLvoid** params);
542     PFNGLGETPOINTERV fGetPointerv;
543     typedef void (GLAPIENTRY * PFNGLPUSHDEBUGGROUP) (GLenum source, GLuint id, GLsizei length, const GLchar* message);
544     PFNGLPUSHDEBUGGROUP fPushDebugGroup;
545     typedef void (GLAPIENTRY * PFNGLPOPDEBUGGROUP) (void);
546     PFNGLPOPDEBUGGROUP fPopDebugGroup;
547     typedef void (GLAPIENTRY * PFNGLOBJECTLABEL) (GLenum identifier, GLuint name, GLsizei length, const GLchar* label);
548     PFNGLOBJECTLABEL fObjectLabel;
549     typedef void (GLAPIENTRY * PFNGLGETOBJECTLABEL) (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei* length, GLchar* label);
550     PFNGLGETOBJECTLABEL fGetObjectLabel;
551     typedef void (GLAPIENTRY * PFNGLOBJECTPTRLABEL) (const GLvoid* ptr, GLsizei length, const GLchar* label);
552     PFNGLOBJECTPTRLABEL fObjectPtrLabel;
553     typedef void (GLAPIENTRY * PFNGLGETOBJECTPTRLABEL) (const GLvoid* ptr, GLsizei bufSize, GLsizei* length, GLchar* label);
554     PFNGLGETOBJECTPTRLABEL fGetObjectPtrLabel;
555 
556     // draw_range_elements
557     typedef void (GLAPIENTRY * PFNGLDRAWRANGEELEMENTS) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid* indices);
558     PFNGLDRAWRANGEELEMENTS fDrawRangeElements;
559 
560     // NV_fence
561     typedef void (GLAPIENTRY * pfnGenFencesT) (GLsizei n, GLuint* fences);
562     pfnGenFencesT fGenFences;
563     typedef void (GLAPIENTRY * pfnDeleteFencesT) (GLsizei n, const GLuint* fences);
564     pfnDeleteFencesT fDeleteFences;
565     typedef void (GLAPIENTRY * pfnSetFenceT) (GLuint fence, GLenum condition);
566     pfnSetFenceT fSetFence;
567     typedef realGLboolean (GLAPIENTRY * pfnTestFenceT) (GLuint fence);
568     pfnTestFenceT fTestFence;
569     typedef void (GLAPIENTRY * pfnFinishFenceT) (GLuint fence);
570     pfnFinishFenceT fFinishFence;
571     typedef realGLboolean (GLAPIENTRY * pfnIsFenceT) (GLuint fence);
572     pfnIsFenceT fIsFence;
573     typedef void (GLAPIENTRY * pfnGetFenceivT) (GLuint fence, GLenum pname, GLint* params);
574     pfnGetFenceivT fGetFenceiv;
575 
576     // map_buffer_range
577     typedef void* (GLAPIENTRY * PFNGLMAPBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
578     PFNGLMAPBUFFERRANGEPROC fMapBufferRange;
579     typedef void (GLAPIENTRY * PFNGLFLUSHMAPPEDBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length);
580     PFNGLFLUSHMAPPEDBUFFERRANGEPROC fFlushMappedBufferRange;
581 
582     // sampler_object
583     typedef void (GLAPIENTRY * PFNGLGENSAMPLERSPROC) (GLsizei count, GLuint* samplers);
584     PFNGLGENSAMPLERSPROC fGenSamplers;
585     typedef void (GLAPIENTRY * PFNGLDELETESAMPLERSPROC) (GLsizei count, const GLuint* samplers);
586     PFNGLDELETESAMPLERSPROC fDeleteSamplers;
587     typedef realGLboolean (GLAPIENTRY * PFNGLISSAMPLERPROC) (GLuint sampler);
588     PFNGLISSAMPLERPROC fIsSampler;
589     typedef void (GLAPIENTRY * PFNGLBINDSAMPLERPROC) (GLuint unit, GLuint sampler);
590     PFNGLBINDSAMPLERPROC fBindSampler;
591     typedef void (GLAPIENTRY * PFNGLSAMPLERPARAMETERIPROC) (GLuint sampler, GLenum pname, GLint param);
592     PFNGLSAMPLERPARAMETERIPROC fSamplerParameteri;
593     typedef void (GLAPIENTRY * PFNGLSAMPLERPARAMETERIVPROC) (GLuint sampler, GLenum pname, const GLint* param);
594     PFNGLSAMPLERPARAMETERIVPROC fSamplerParameteriv;
595     typedef void (GLAPIENTRY * PFNGLSAMPLERPARAMETERFPROC) (GLuint sampler, GLenum pname, GLfloat param);
596     PFNGLSAMPLERPARAMETERFPROC fSamplerParameterf;
597     typedef void (GLAPIENTRY * PFNGLSAMPLERPARAMETERFVPROC) (GLuint sampler, GLenum pname, const GLfloat* param);
598     PFNGLSAMPLERPARAMETERFVPROC fSamplerParameterfv;
599     typedef void (GLAPIENTRY * PFNGLGETSAMPLERPARAMETERIVPROC) (GLuint sampler, GLenum pname, GLint* params);
600     PFNGLGETSAMPLERPARAMETERIVPROC fGetSamplerParameteriv;
601     typedef void (GLAPIENTRY * PFNGLGETSAMPLERPARAMETERFVPROC) (GLuint sampler, GLenum pname, GLfloat* params);
602     PFNGLGETSAMPLERPARAMETERFVPROC fGetSamplerParameterfv;
603 
604     // texture_storage
605     typedef void (GLAPIENTRY * PFNGLTEXSTORAGE2DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
606     PFNGLTEXSTORAGE2DPROC fTexStorage2D;
607     typedef void (GLAPIENTRY * PFNGLTEXSTORAGE3DPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
608     PFNGLTEXSTORAGE3DPROC fTexStorage3D;
609 
610     // uniform_buffer_object
611     typedef void (GLAPIENTRY * PFNGLGETUNIFORMINDICESPROC) (GLuint program, GLsizei uniformCount,
612                                                             const GLchar* const* uniformNames, GLuint* uniformIndices);
613     PFNGLGETUNIFORMINDICESPROC fGetUniformIndices;
614     typedef void (GLAPIENTRY * PFNGLGETACTIVEUNIFORMSIVPROC) (GLuint program, GLsizei uniformCount, const GLuint* uniformIndices,
615                                                              GLenum pname, GLint* params);
616     PFNGLGETACTIVEUNIFORMSIVPROC fGetActiveUniformsiv;
617     typedef GLuint (GLAPIENTRY * PFNGLGETUNIFORMBLOCKINDEXPROC) (GLuint program, const GLchar* uniformBlockName);
618     PFNGLGETUNIFORMBLOCKINDEXPROC fGetUniformBlockIndex;
619     typedef void (GLAPIENTRY * PFNGLGETACTIVEUNIFORMBLOCKIVPROC) (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint* params);
620     PFNGLGETACTIVEUNIFORMBLOCKIVPROC fGetActiveUniformBlockiv;
621     typedef void (GLAPIENTRY * PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC) (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei* length, GLchar* uniformBlockName);
622     PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC fGetActiveUniformBlockName;
623     typedef void (GLAPIENTRY * PFNGLUNIFORMBLOCKBINDINGPROC) (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding);
624     PFNGLUNIFORMBLOCKBINDINGPROC fUniformBlockBinding;
625 
626     // EXT_gpu_shader4
627     typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIIVPROC) (GLuint index, GLenum pname, GLint* params);
628     PFNGLGETVERTEXATTRIBIIVPROC fGetVertexAttribIiv;
629     typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBIUIVPROC) (GLuint index, GLenum pname, GLuint* params);
630     PFNGLGETVERTEXATTRIBIUIVPROC fGetVertexAttribIuiv;
631     typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4IPROC) (GLuint index, GLint x, GLint y, GLint z, GLint w);
632     PFNGLVERTEXATTRIBI4IPROC fVertexAttribI4i;
633     typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4IVPROC) (GLuint index, const GLint* v);
634     PFNGLVERTEXATTRIBI4IVPROC fVertexAttribI4iv;
635     typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4UIPROC) (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
636     PFNGLVERTEXATTRIBI4UIPROC fVertexAttribI4ui;
637     typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBI4UIVPROC) (GLuint index, const GLuint* v);
638     PFNGLVERTEXATTRIBI4UIVPROC fVertexAttribI4uiv;
639     typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBIPOINTERPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid* ptr);
640     PFNGLVERTEXATTRIBIPOINTERPROC fVertexAttribIPointer;
641     typedef void (GLAPIENTRY * PFNGLUNIFORM1UIPROC) (GLint location, GLuint v0);
642     PFNGLUNIFORM1UIPROC fUniform1ui;
643     typedef void (GLAPIENTRY * PFNGLUNIFORM2UIPROC) (GLint location, GLuint v0, GLuint v1);
644     PFNGLUNIFORM2UIPROC fUniform2ui;
645     typedef void (GLAPIENTRY * PFNGLUNIFORM3UIPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2);
646     PFNGLUNIFORM3UIPROC fUniform3ui;
647     typedef void (GLAPIENTRY * PFNGLUNIFORM4UIPROC) (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
648     PFNGLUNIFORM4UIPROC fUniform4ui;
649     typedef void (GLAPIENTRY * PFNGLUNIFORM1UIVPROC) (GLint location, GLsizei count, const GLuint* value);
650     PFNGLUNIFORM1UIVPROC fUniform1uiv;
651     typedef void (GLAPIENTRY * PFNGLUNIFORM2UIVPROC) (GLint location, GLsizei count, const GLuint* value);
652     PFNGLUNIFORM2UIVPROC fUniform2uiv;
653     typedef void (GLAPIENTRY * PFNGLUNIFORM3UIVPROC) (GLint location, GLsizei count, const GLuint* value);
654     PFNGLUNIFORM3UIVPROC fUniform3uiv;
655     typedef void (GLAPIENTRY * PFNGLUNIFORM4UIVPROC) (GLint location, GLsizei count, const GLuint* value);
656     PFNGLUNIFORM4UIVPROC fUniform4uiv;
657     typedef GLint (GLAPIENTRY * PFNGLGETFRAGDATALOCATIONPROC) (GLuint program, const GLchar* name);
658     PFNGLGETFRAGDATALOCATIONPROC fGetFragDataLocation;
659 
660     // 3D Textures
661     typedef void (GLAPIENTRY * PFNGLTEXIMAGE3DPROC) (GLenum target, GLint level,
662                                                      GLenum internalFormat,
663                                                      GLenum width, GLsizei height, GLsizei depth,
664                                                      GLint border, GLenum format, GLenum type,
665                                                      const GLvoid* pixels);
666     PFNGLTEXIMAGE3DPROC fTexImage3D;
667     typedef void (GLAPIENTRY * PFNGLTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset,
668                                                         GLint yoffset, GLint zoffset, GLsizei width,
669                                                         GLsizei height, GLsizei depth, GLenum format,
670                                                         GLenum type, const GLvoid* pixels);
671     PFNGLTEXSUBIMAGE3DPROC fTexSubImage3D;
672     typedef void (GLAPIENTRY * PFNGLCOPYTEXSUBIMAGE3DPROC) (GLenum target, GLint level, GLint xoffset,
673                                                             GLint yoffset, GLint zoffset, GLint x,
674                                                             GLint y, GLsizei width, GLsizei height);
675     PFNGLCOPYTEXSUBIMAGE3DPROC fCopyTexSubImage3D;
676     typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXIMAGE3DPROC) (GLenum target, GLint level, GLenum internalformat,
677                                                                GLsizei width, GLsizei height, GLsizei depth,
678                                                                GLint border, GLsizei imageSize, const GLvoid* data);
679     PFNGLCOMPRESSEDTEXIMAGE3DPROC fCompressedTexImage3D;
680     typedef void (GLAPIENTRY * PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC) (GLenum target, GLint level,
681                                                                   GLint xoffset, GLint yoffset, GLint zoffset,
682                                                                   GLsizei width, GLsizei height, GLsizei depth,
683                                                                   GLenum format, GLsizei imageSize, const GLvoid* data);
684     PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC fCompressedTexSubImage3D;
685 
686     // get_string_indexed
687     typedef const GLubyte* (GLAPIENTRY * PFNGLGETSTRINGIPROC)(GLenum name, GLuint index);
688     PFNGLGETSTRINGIPROC fGetStringi;
689 
690     // APPLE_framebuffer_multisample
691     typedef void (GLAPIENTRY * PFNRESOLVEMULTISAMPLEFRAMEBUFFERAPPLE) (void);
692     PFNRESOLVEMULTISAMPLEFRAMEBUFFERAPPLE fResolveMultisampleFramebufferAPPLE;
693 
694     // NV_texture_barrier
695     typedef void (GLAPIENTRY * PFNTEXTUREBARRIERPROC) (void);
696     PFNTEXTUREBARRIERPROC fTextureBarrier;
697 
698     // NV_primitive_restart
699     void (GLAPIENTRY * fPrimitiveRestartIndex) (GLuint index);
700 };
701 
702 } // namespace gl
703 } // namespace mozilla
704 
705 #endif /* GLCONTEXTSYMBOLS_H_ */
706