1 /* -*- Mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; tab-width: 4; -*- */
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 final {
29   void(GLAPIENTRY* fActiveTexture)(GLenum);
30   void(GLAPIENTRY* fAttachShader)(GLuint, GLuint);
31   void(GLAPIENTRY* fBeginQuery)(GLenum, GLuint);
32   void(GLAPIENTRY* fBindAttribLocation)(GLuint, GLuint, const GLchar*);
33   void(GLAPIENTRY* fBindBuffer)(GLenum, GLuint);
34   void(GLAPIENTRY* fBindTexture)(GLenum, GLuint);
35   void(GLAPIENTRY* fBindVertexArray)(GLuint);
36   void(GLAPIENTRY* fBlendColor)(GLfloat, GLfloat, GLfloat, GLfloat);
37   void(GLAPIENTRY* fBlendEquation)(GLenum);
38   void(GLAPIENTRY* fBlendEquationSeparate)(GLenum, GLenum);
39   void(GLAPIENTRY* fBlendFunc)(GLenum, GLenum);
40   void(GLAPIENTRY* fBlendFuncSeparate)(GLenum, GLenum, GLenum, GLenum);
41   void(GLAPIENTRY* fBufferData)(GLenum, GLsizeiptr, const GLvoid*, GLenum);
42   void(GLAPIENTRY* fBufferSubData)(GLenum, GLintptr, GLsizeiptr, const GLvoid*);
43 
44   void(GLAPIENTRY* fClear)(GLbitfield);
45   void(GLAPIENTRY* fClearBufferfi)(GLenum, GLint, GLfloat, GLint);
46   void(GLAPIENTRY* fClearBufferfv)(GLenum, GLint, const GLfloat*);
47   void(GLAPIENTRY* fClearBufferiv)(GLenum, GLint, const GLint*);
48   void(GLAPIENTRY* fClearBufferuiv)(GLenum, GLint, const GLuint*);
49   void(GLAPIENTRY* fClearColor)(GLfloat, GLfloat, GLfloat, GLfloat);
50   void(GLAPIENTRY* fClearStencil)(GLint);
51   void(GLAPIENTRY* fColorMask)(realGLboolean, realGLboolean, realGLboolean,
52                                realGLboolean);
53   void(GLAPIENTRY* fCompressedTexImage2D)(GLenum, GLint, GLenum, GLsizei,
54                                           GLsizei, GLint, GLsizei,
55                                           const GLvoid*);
56   void(GLAPIENTRY* fCompressedTexSubImage2D)(GLenum, GLint, GLint, GLint,
57                                              GLsizei, GLsizei, GLenum, GLsizei,
58                                              const GLvoid*);
59   void(GLAPIENTRY* fCullFace)(GLenum);
60   void(GLAPIENTRY* fDetachShader)(GLuint, GLuint);
61   void(GLAPIENTRY* fDepthFunc)(GLenum);
62   void(GLAPIENTRY* fDepthMask)(realGLboolean);
63   void(GLAPIENTRY* fDisable)(GLenum);
64   void(GLAPIENTRY* fDisableVertexAttribArray)(GLuint);
65   void(GLAPIENTRY* fDrawArrays)(GLenum, GLint, GLsizei);
66   void(GLAPIENTRY* fDrawBuffer)(GLenum);
67   void(GLAPIENTRY* fDrawBuffers)(GLsizei, const GLenum*);
68   void(GLAPIENTRY* fDrawElements)(GLenum, GLsizei, GLenum, const GLvoid*);
69   void(GLAPIENTRY* fEnable)(GLenum);
70   void(GLAPIENTRY* fEnableVertexAttribArray)(GLuint);
71   void(GLAPIENTRY* fFinish)(void);
72   void(GLAPIENTRY* fEndQuery)(GLenum);
73   void(GLAPIENTRY* fFlush)(void);
74   void(GLAPIENTRY* fFrontFace)(GLenum);
75   void(GLAPIENTRY* fGetActiveAttrib)(GLuint, GLuint, GLsizei, GLsizei*, GLint*,
76                                      GLenum*, GLchar*);
77   void(GLAPIENTRY* fGetActiveUniform)(GLuint, GLuint, GLsizei, GLsizei*, GLint*,
78                                       GLenum*, GLchar*);
79   void(GLAPIENTRY* fGetAttachedShaders)(GLuint, GLsizei, GLsizei*, GLuint*);
80   GLint(GLAPIENTRY* fGetAttribLocation)(GLuint, const GLchar*);
81   void(GLAPIENTRY* fGetIntegerv)(GLenum, GLint*);
82   void(GLAPIENTRY* fGetFloatv)(GLenum, GLfloat*);
83   void(GLAPIENTRY* fGetBooleanv)(GLenum, realGLboolean*);
84   void(GLAPIENTRY* fGetBufferParameteriv)(GLenum, GLenum, GLint*);
85   void(GLAPIENTRY* fGenerateMipmap)(GLenum);
86   GLenum(GLAPIENTRY* fGetError)(void);
87   void(GLAPIENTRY* fGetProgramiv)(GLuint, GLenum, GLint*);
88   void(GLAPIENTRY* fGetProgramInfoLog)(GLuint, GLsizei, GLsizei*, GLchar*);
89   void(GLAPIENTRY* fGetQueryiv)(GLenum, GLenum, GLint*);
90   void(GLAPIENTRY* fGetQueryObjectiv)(GLuint, GLenum, GLint*);
91   void(GLAPIENTRY* fGetQueryObjectuiv)(GLuint, GLenum, GLuint*);
92   void(GLAPIENTRY* fGetQueryObjecti64v)(GLuint, GLenum, GLint64*);
93   void(GLAPIENTRY* fGetQueryObjectui64v)(GLuint, GLenum, GLuint64*);
94   void(GLAPIENTRY* fQueryCounter)(GLuint, GLenum);
95   void(GLAPIENTRY* fTexParameteri)(GLenum, GLenum, GLint);
96   void(GLAPIENTRY* fTexParameteriv)(GLenum, GLenum, const GLint*);
97   void(GLAPIENTRY* fTexParameterf)(GLenum, GLenum, GLfloat);
98   GLubyte*(GLAPIENTRY* fGetString)(GLenum);
99   void(GLAPIENTRY* fGetTexImage)(GLenum, GLint, GLenum, GLenum, GLvoid*);
100   void(GLAPIENTRY* fGetTexLevelParameteriv)(GLenum, GLint, GLenum, GLint*);
101   void(GLAPIENTRY* fGetTexParameterfv)(GLenum, GLenum, GLfloat*);
102   void(GLAPIENTRY* fGetTexParameteriv)(GLenum, GLenum, GLint*);
103   void(GLAPIENTRY* fGetUniformfv)(GLuint, GLint, GLfloat*);
104   void(GLAPIENTRY* fGetUniformiv)(GLuint, GLint, GLint*);
105   void(GLAPIENTRY* fGetUniformuiv)(GLuint, GLint, GLuint*);
106   GLint(GLAPIENTRY* fGetUniformLocation)(GLuint, const GLchar*);
107   void(GLAPIENTRY* fGetVertexAttribfv)(GLuint, GLenum, GLfloat*);
108   void(GLAPIENTRY* fGetVertexAttribiv)(GLuint, GLenum, GLint*);
109   void(GLAPIENTRY* fGetVertexAttribPointerv)(GLuint, GLenum, GLvoid**);
110   void(GLAPIENTRY* fHint)(GLenum, GLenum);
111   realGLboolean(GLAPIENTRY* fIsBuffer)(GLuint);
112   realGLboolean(GLAPIENTRY* fIsEnabled)(GLenum);
113   realGLboolean(GLAPIENTRY* fIsProgram)(GLuint);
114   realGLboolean(GLAPIENTRY* fIsQuery)(GLuint);
115   realGLboolean(GLAPIENTRY* fIsShader)(GLuint);
116   realGLboolean(GLAPIENTRY* fIsTexture)(GLuint);
117   void(GLAPIENTRY* fLineWidth)(GLfloat);
118   void(GLAPIENTRY* fLinkProgram)(GLuint);
119   void(GLAPIENTRY* fPixelStorei)(GLenum, GLint);
120   void(GLAPIENTRY* fPointParameterf)(GLenum, GLfloat);
121   void(GLAPIENTRY* fPolygonMode)(GLenum, GLenum);
122   void(GLAPIENTRY* fPolygonOffset)(GLfloat, GLfloat);
123   void(GLAPIENTRY* fReadBuffer)(GLenum);
124   void(GLAPIENTRY* fReadPixels)(GLint, GLint, GLsizei, GLsizei, GLenum, GLenum,
125                                 GLvoid*);
126   void(GLAPIENTRY* fSampleCoverage)(GLclampf, realGLboolean);
127   void(GLAPIENTRY* fStencilFunc)(GLenum, GLint, GLuint);
128   void(GLAPIENTRY* fStencilFuncSeparate)(GLenum, GLenum, GLint, GLuint);
129   void(GLAPIENTRY* fStencilMask)(GLuint);
130   void(GLAPIENTRY* fStencilMaskSeparate)(GLenum, GLuint);
131   void(GLAPIENTRY* fStencilOp)(GLenum, GLenum, GLenum);
132   void(GLAPIENTRY* fStencilOpSeparate)(GLenum, GLenum, GLenum, GLenum);
133   void(GLAPIENTRY* fTexImage2D)(GLenum, GLint, GLint, GLsizei, GLsizei, GLint,
134                                 GLenum, GLenum, const GLvoid*);
135   void(GLAPIENTRY* fTexSubImage2D)(GLenum, GLint, GLint, GLint, GLsizei,
136                                    GLsizei, GLenum, GLenum, const void*);
137   void(GLAPIENTRY* fTextureRangeAPPLE)(GLenum, GLsizei, GLvoid*);
138   void(GLAPIENTRY* fFinishObjectAPPLE)(GLenum, GLint);
139   realGLboolean(GLAPIENTRY* fTestObjectAPPLE)(GLenum, GLint);
140   void(GLAPIENTRY* fUniform1f)(GLint, GLfloat);
141   void(GLAPIENTRY* fUniform1fv)(GLint, GLsizei, const GLfloat*);
142   void(GLAPIENTRY* fUniform1i)(GLint, GLint);
143   void(GLAPIENTRY* fUniform1iv)(GLint, GLsizei, const GLint*);
144   void(GLAPIENTRY* fUniform2f)(GLint, GLfloat, GLfloat);
145   void(GLAPIENTRY* fUniform2fv)(GLint, GLsizei, const GLfloat*);
146   void(GLAPIENTRY* fUniform2i)(GLint, GLint, GLint);
147   void(GLAPIENTRY* fUniform2iv)(GLint, GLsizei, const GLint*);
148   void(GLAPIENTRY* fUniform3f)(GLint, GLfloat, GLfloat, GLfloat);
149   void(GLAPIENTRY* fUniform3fv)(GLint, GLsizei, const GLfloat*);
150   void(GLAPIENTRY* fUniform3i)(GLint, GLint, GLint, GLint);
151   void(GLAPIENTRY* fUniform3iv)(GLint, GLsizei, const GLint*);
152   void(GLAPIENTRY* fUniform4f)(GLint, GLfloat, GLfloat, GLfloat, GLfloat);
153   void(GLAPIENTRY* fUniform4fv)(GLint, GLsizei, const GLfloat*);
154   void(GLAPIENTRY* fUniform4i)(GLint, GLint, GLint, GLint, GLint);
155   void(GLAPIENTRY* fUniform4iv)(GLint, GLsizei, const GLint*);
156   void(GLAPIENTRY* fUniformMatrix2fv)(GLint, GLsizei, realGLboolean,
157                                       const GLfloat*);
158   void(GLAPIENTRY* fUniformMatrix2x3fv)(GLint, GLsizei, realGLboolean,
159                                         const GLfloat*);
160   void(GLAPIENTRY* fUniformMatrix2x4fv)(GLint, GLsizei, realGLboolean,
161                                         const GLfloat*);
162   void(GLAPIENTRY* fUniformMatrix3fv)(GLint, GLsizei, realGLboolean,
163                                       const GLfloat*);
164   void(GLAPIENTRY* fUniformMatrix3x2fv)(GLint, GLsizei, realGLboolean,
165                                         const GLfloat*);
166   void(GLAPIENTRY* fUniformMatrix3x4fv)(GLint, GLsizei, realGLboolean,
167                                         const GLfloat*);
168   void(GLAPIENTRY* fUniformMatrix4fv)(GLint, GLsizei, realGLboolean,
169                                       const GLfloat*);
170   void(GLAPIENTRY* fUniformMatrix4x2fv)(GLint, GLsizei, realGLboolean,
171                                         const GLfloat*);
172   void(GLAPIENTRY* fUniformMatrix4x3fv)(GLint, GLsizei, realGLboolean,
173                                         const GLfloat*);
174 
175   void(GLAPIENTRY* fUseProgram)(GLuint);
176   void(GLAPIENTRY* fValidateProgram)(GLuint);
177   void(GLAPIENTRY* fVertexAttribPointer)(GLuint, GLint, GLenum, realGLboolean,
178                                          GLsizei, const GLvoid*);
179   void(GLAPIENTRY* fVertexAttrib1f)(GLuint, GLfloat);
180   void(GLAPIENTRY* fVertexAttrib2f)(GLuint, GLfloat, GLfloat);
181   void(GLAPIENTRY* fVertexAttrib3f)(GLuint, GLfloat, GLfloat, GLfloat);
182   void(GLAPIENTRY* fVertexAttrib4f)(GLuint, GLfloat, GLfloat, GLfloat, GLfloat);
183   void(GLAPIENTRY* fVertexAttrib1fv)(GLuint, const GLfloat*);
184   void(GLAPIENTRY* fVertexAttrib2fv)(GLuint, const GLfloat*);
185   void(GLAPIENTRY* fVertexAttrib3fv)(GLuint, const GLfloat*);
186   void(GLAPIENTRY* fVertexAttrib4fv)(GLuint, const GLfloat*);
187   void(GLAPIENTRY* fCompileShader)(GLuint);
188   void(GLAPIENTRY* fCopyTexImage2D)(GLenum, GLint, GLenum, GLint, GLint,
189                                     GLsizei, GLsizei, GLint);
190   void(GLAPIENTRY* fCopyTexSubImage2D)(GLenum, GLint, GLint, GLint, GLint,
191                                        GLint, GLsizei, GLsizei);
192   void(GLAPIENTRY* fGetShaderiv)(GLuint, GLenum, GLint*);
193   void(GLAPIENTRY* fGetShaderInfoLog)(GLuint, GLsizei, GLsizei*, GLchar*);
194   void(GLAPIENTRY* fGetShaderPrecisionFormat)(GLenum, GLenum, GLint*, GLint*);
195   void(GLAPIENTRY* fGetShaderSource)(GLint, GLsizei, GLsizei*, GLchar*);
196   void(GLAPIENTRY* fShaderSource)(GLuint, GLsizei, const GLchar* const*,
197                                   const GLint*);
198 
199   void(GLAPIENTRY* fBindFramebuffer)(GLenum, GLuint);
200   void(GLAPIENTRY* fBindRenderbuffer)(GLenum, GLuint);
201   GLenum(GLAPIENTRY* fCheckFramebufferStatus)(GLenum);
202   void(GLAPIENTRY* fFramebufferRenderbuffer)(GLenum, GLenum, GLenum, GLuint);
203   void(GLAPIENTRY* fFramebufferTexture2D)(GLenum, GLenum, GLenum, GLuint,
204                                           GLint);
205   void(GLAPIENTRY* fFramebufferTextureLayer)(GLenum, GLenum, GLuint, GLint,
206                                              GLint);
207   void(GLAPIENTRY* fGetFramebufferAttachmentParameteriv)(GLenum, GLenum, GLenum,
208                                                          GLint*);
209   void(GLAPIENTRY* fGetRenderbufferParameteriv)(GLenum, GLenum, GLint*);
210   realGLboolean(GLAPIENTRY* fIsFramebuffer)(GLuint);
211   realGLboolean(GLAPIENTRY* fIsRenderbuffer)(GLuint);
212   realGLboolean(GLAPIENTRY* fIsVertexArray)(GLuint);
213   void(GLAPIENTRY* fRenderbufferStorage)(GLenum, GLenum, GLsizei, GLsizei);
214 
215   void(GLAPIENTRY* fInvalidateFramebuffer)(GLenum, GLsizei, const GLenum*);
216   void(GLAPIENTRY* fInvalidateSubFramebuffer)(GLenum, GLsizei, const GLenum*,
217                                               GLint, GLint, GLsizei, GLsizei);
218 
219   // These functions are only used by Skia/GL in desktop mode.
220   // Other parts of Gecko should avoid using these
221   void(GLAPIENTRY* fClientActiveTexture)(GLenum);
222   void(GLAPIENTRY* fDisableClientState)(GLenum);
223   void(GLAPIENTRY* fEnableClientState)(GLenum);
224   void(GLAPIENTRY* fLoadIdentity)(void);
225   void(GLAPIENTRY* fLoadMatrixd)(const GLdouble*);
226   void(GLAPIENTRY* fLoadMatrixf)(const GLfloat*);
227   void(GLAPIENTRY* fMatrixMode)(GLenum);
228   void(GLAPIENTRY* fTexGeni)(GLenum, GLenum, GLint);
229   void(GLAPIENTRY* fTexGenf)(GLenum, GLenum, GLfloat);
230   void(GLAPIENTRY* fTexGenfv)(GLenum, GLenum, const GLfloat*);
231   void(GLAPIENTRY* fVertexPointer)(GLint, GLenum, GLsizei, const GLvoid*);
232 
233   void(GLAPIENTRY* fBlitFramebuffer)(GLint, GLint, GLint, GLint, GLint, GLint,
234                                      GLint, GLint, GLbitfield, GLenum);
235   void(GLAPIENTRY* fRenderbufferStorageMultisample)(GLenum, GLsizei, GLenum,
236                                                     GLsizei, GLsizei);
237 
238   /* These are different between GLES2 and desktop GL; we hide those
239    * differences, use the GL names, but the most limited data type.
240    */
241   void(GLAPIENTRY* fDepthRangef)(GLclampf, GLclampf);
242   void(GLAPIENTRY* fClearDepthf)(GLclampf);
243 
244   void(GLAPIENTRY* fDepthRange)(GLclampd, GLclampd);
245   void(GLAPIENTRY* fClearDepth)(GLclampd);
246 
247   /* These are special because we end up tracking these so that we don't
248    * have to query the values from GL.
249    */
250 
251   void(GLAPIENTRY* fViewport)(GLint, GLint, GLsizei, GLsizei);
252   void(GLAPIENTRY* fScissor)(GLint, GLint, GLsizei, GLsizei);
253 
254   /* These are special -- they create or delete GL resources that can live
255    * in a shared namespace.  In DEBUG, we wrap these calls so that we can
256    * check when we have something that failed to do cleanup at the time the
257    * final context is destroyed.
258    */
259 
260   GLuint(GLAPIENTRY* fCreateProgram)();
261   GLuint(GLAPIENTRY* fCreateShader)(GLenum);
262   void(GLAPIENTRY* fGenBuffers)(GLsizei, GLuint*);
263   void(GLAPIENTRY* fGenQueries)(GLsizei, GLuint*);
264   void(GLAPIENTRY* fGenTextures)(GLsizei, GLuint*);
265   void(GLAPIENTRY* fGenFramebuffers)(GLsizei, GLuint*);
266   void(GLAPIENTRY* fGenRenderbuffers)(GLsizei, GLuint*);
267   void(GLAPIENTRY* fGenVertexArrays)(GLsizei, GLuint*);
268 
269   void(GLAPIENTRY* fDeleteProgram)(GLuint);
270   void(GLAPIENTRY* fDeleteShader)(GLuint);
271   void(GLAPIENTRY* fDeleteBuffers)(GLsizei, const GLuint*);
272   void(GLAPIENTRY* fDeleteQueries)(GLsizei, const GLuint*);
273   void(GLAPIENTRY* fDeleteTextures)(GLsizei, const GLuint*);
274   void(GLAPIENTRY* fDeleteFramebuffers)(GLsizei, const GLuint*);
275   void(GLAPIENTRY* fDeleteRenderbuffers)(GLsizei, const GLuint*);
276   void(GLAPIENTRY* fDeleteVertexArrays)(GLsizei, const GLuint*);
277 
278   void*(GLAPIENTRY* fMapBuffer)(GLenum, GLenum);
279   realGLboolean(GLAPIENTRY* fUnmapBuffer)(GLenum);
280 
281   // ARB_copy_buffer / OpenGL 3.1 / OpenGL ES 3.0
282   void(GLAPIENTRY* fCopyBufferSubData)(GLenum, GLenum, GLintptr, GLintptr,
283                                        GLsizeiptr);
284 
285   GLenum(GLAPIENTRY* fGetGraphicsResetStatus)();
286 
287   // ARB_sync
288   GLsync(GLAPIENTRY* fFenceSync)(GLenum, GLbitfield);
289   realGLboolean(GLAPIENTRY* fIsSync)(GLsync);
290   void(GLAPIENTRY* fDeleteSync)(GLsync);
291   GLenum(GLAPIENTRY* fClientWaitSync)(GLsync, GLbitfield, GLuint64);
292   void(GLAPIENTRY* fWaitSync)(GLsync, GLbitfield, GLuint64);
293   void(GLAPIENTRY* fGetInteger64v)(GLenum, GLint64*);
294   void(GLAPIENTRY* fGetSynciv)(GLsync, GLenum, GLsizei, GLsizei*, GLint*);
295 
296   // OES_egl_image
297   void(GLAPIENTRY* fEGLImageTargetTexture2D)(GLenum, GLeglImage);
298   void(GLAPIENTRY* fEGLImageTargetRenderbufferStorage)(GLenum, GLeglImage);
299 
300   // ARB_draw_instanced
301   void(GLAPIENTRY* fDrawArraysInstanced)(GLenum, GLint, GLsizei, GLsizei);
302   void(GLAPIENTRY* fDrawElementsInstanced)(GLenum, GLsizei, GLenum,
303                                            const GLvoid*, GLsizei);
304 
305   // ARB_instanced_array
306   void(GLAPIENTRY* fVertexAttribDivisor)(GLuint, GLuint);
307 
308   // ARB_internalformat_query
309   void(GLAPIENTRY* fGetInternalformativ)(GLenum, GLenum, GLenum, GLsizei,
310                                          GLint*);
311 
312   // ARB_transform_feedback2 / OpenGL 4.0 / OpenGL ES 3.0
313   void(GLAPIENTRY* fBindBufferBase)(GLenum, GLuint, GLuint);
314   void(GLAPIENTRY* fBindBufferRange)(GLenum, GLuint, GLuint, GLintptr,
315                                      GLsizeiptr);
316 
317   void(GLAPIENTRY* fGenTransformFeedbacks)(GLsizei, GLuint*);
318   void(GLAPIENTRY* fDeleteTransformFeedbacks)(GLsizei, const GLuint*);
319   realGLboolean(GLAPIENTRY* fIsTransformFeedback)(GLuint);
320   void(GLAPIENTRY* fBindTransformFeedback)(GLenum, GLuint);
321   void(GLAPIENTRY* fTransformFeedbackVaryings)(GLuint, GLsizei,
322                                                const GLchar* const*, GLenum);
323   void(GLAPIENTRY* fGetTransformFeedbackVarying)(GLuint, GLuint, GLsizei,
324                                                  GLsizei*, GLsizei*, GLenum*,
325                                                  GLchar*);
326   void(GLAPIENTRY* fBeginTransformFeedback)(GLenum);
327   void(GLAPIENTRY* fEndTransformFeedback)(void);
328   void(GLAPIENTRY* fPauseTransformFeedback)(void);
329   void(GLAPIENTRY* fResumeTransformFeedback)(void);
330 
331   void(GLAPIENTRY* fGetIntegeri_v)(GLenum, GLuint, GLint*);
332   void(GLAPIENTRY* fGetInteger64i_v)(GLenum, GLuint, GLint64*);
333 
334   // EXT_transform_feedback only
335   void(GLAPIENTRY* fBindBufferOffset)(GLenum, GLuint, GLuint, GLintptr);
336 
337   // KHR_debug
338   void(GLAPIENTRY* fDebugMessageControl)(GLenum, GLenum, GLenum, GLsizei,
339                                          const GLuint*, realGLboolean);
340   void(GLAPIENTRY* fDebugMessageInsert)(GLenum, GLenum, GLuint, GLenum, GLsizei,
341                                         const GLchar*);
342   void(GLAPIENTRY* fDebugMessageCallback)(GLDEBUGPROC, const GLvoid*);
343   GLuint(GLAPIENTRY* fGetDebugMessageLog)(GLuint, GLsizei, GLenum*, GLenum*,
344                                           GLuint*, GLenum*, GLsizei*, GLchar*);
345   void(GLAPIENTRY* fGetPointerv)(GLenum, GLvoid**);
346   void(GLAPIENTRY* fPushDebugGroup)(GLenum, GLuint, GLsizei, const GLchar*);
347   void(GLAPIENTRY* fPopDebugGroup)(void);
348   void(GLAPIENTRY* fObjectLabel)(GLenum, GLuint, GLsizei, const GLchar*);
349   void(GLAPIENTRY* fGetObjectLabel)(GLenum, GLuint, GLsizei, GLsizei*, GLchar*);
350   void(GLAPIENTRY* fObjectPtrLabel)(const GLvoid*, GLsizei, const GLchar*);
351   void(GLAPIENTRY* fGetObjectPtrLabel)(const GLvoid*, GLsizei, GLsizei*,
352                                        GLchar*);
353 
354   // NV_fence
355   void(GLAPIENTRY* fGenFences)(GLsizei, GLuint*);
356   void(GLAPIENTRY* fDeleteFences)(GLsizei, const GLuint*);
357   void(GLAPIENTRY* fSetFence)(GLuint, GLenum);
358   realGLboolean(GLAPIENTRY* fTestFence)(GLuint);
359   void(GLAPIENTRY* fFinishFence)(GLuint);
360   realGLboolean(GLAPIENTRY* fIsFence)(GLuint);
361   void(GLAPIENTRY* fGetFenceiv)(GLuint, GLenum, GLint*);
362 
363   // map_buffer_range
364   void*(GLAPIENTRY* fMapBufferRange)(GLenum, GLintptr, GLsizeiptr, GLbitfield);
365   void(GLAPIENTRY* fFlushMappedBufferRange)(GLenum, GLintptr, GLsizeiptr);
366 
367   // sampler_object
368   void(GLAPIENTRY* fGenSamplers)(GLsizei, GLuint*);
369   void(GLAPIENTRY* fDeleteSamplers)(GLsizei, const GLuint*);
370   realGLboolean(GLAPIENTRY* fIsSampler)(GLuint);
371   void(GLAPIENTRY* fBindSampler)(GLuint, GLuint);
372   void(GLAPIENTRY* fSamplerParameteri)(GLuint, GLenum, GLint);
373   void(GLAPIENTRY* fSamplerParameteriv)(GLuint, GLenum, const GLint*);
374   void(GLAPIENTRY* fSamplerParameterf)(GLuint, GLenum, GLfloat);
375   void(GLAPIENTRY* fSamplerParameterfv)(GLuint, GLenum, const GLfloat*);
376   void(GLAPIENTRY* fGetSamplerParameteriv)(GLuint, GLenum, GLint*);
377   void(GLAPIENTRY* fGetSamplerParameterfv)(GLuint, GLenum, GLfloat*);
378 
379   // texture_storage
380   void(GLAPIENTRY* fTexStorage2D)(GLenum, GLsizei, GLenum, GLsizei, GLsizei);
381   void(GLAPIENTRY* fTexStorage3D)(GLenum, GLsizei, GLenum, GLsizei, GLsizei,
382                                   GLsizei);
383 
384   // uniform_buffer_object
385   void(GLAPIENTRY* fGetUniformIndices)(GLuint, GLsizei, const GLchar* const*,
386                                        GLuint*);
387   void(GLAPIENTRY* fGetActiveUniformsiv)(GLuint, GLsizei, const GLuint*, GLenum,
388                                          GLint*);
389   GLuint(GLAPIENTRY* fGetUniformBlockIndex)(GLuint, const GLchar*);
390   void(GLAPIENTRY* fGetActiveUniformBlockiv)(GLuint, GLuint, GLenum, GLint*);
391   void(GLAPIENTRY* fGetActiveUniformBlockName)(GLuint, GLuint, GLsizei,
392                                                GLsizei*, GLchar*);
393   void(GLAPIENTRY* fUniformBlockBinding)(GLuint, GLuint, GLuint);
394 
395   // EXT_gpu_shader4
396   void(GLAPIENTRY* fGetVertexAttribIiv)(GLuint, GLenum, GLint*);
397   void(GLAPIENTRY* fGetVertexAttribIuiv)(GLuint, GLenum, GLuint*);
398   void(GLAPIENTRY* fVertexAttribI4i)(GLuint, GLint, GLint, GLint, GLint);
399   void(GLAPIENTRY* fVertexAttribI4iv)(GLuint, const GLint*);
400   void(GLAPIENTRY* fVertexAttribI4ui)(GLuint, GLuint, GLuint, GLuint, GLuint);
401   void(GLAPIENTRY* fVertexAttribI4uiv)(GLuint, const GLuint*);
402   void(GLAPIENTRY* fVertexAttribIPointer)(GLuint, GLint, GLenum, GLsizei,
403                                           const GLvoid*);
404   void(GLAPIENTRY* fUniform1ui)(GLint, GLuint);
405   void(GLAPIENTRY* fUniform2ui)(GLint, GLuint, GLuint);
406   void(GLAPIENTRY* fUniform3ui)(GLint, GLuint, GLuint, GLuint);
407   void(GLAPIENTRY* fUniform4ui)(GLint, GLuint, GLuint, GLuint, GLuint);
408   void(GLAPIENTRY* fUniform1uiv)(GLint, GLsizei, const GLuint*);
409   void(GLAPIENTRY* fUniform2uiv)(GLint, GLsizei, const GLuint*);
410   void(GLAPIENTRY* fUniform3uiv)(GLint, GLsizei, const GLuint*);
411   void(GLAPIENTRY* fUniform4uiv)(GLint, GLsizei, const GLuint*);
412   GLint(GLAPIENTRY* fGetFragDataLocation)(GLuint, const GLchar*);
413 
414   // 3D Textures
415   void(GLAPIENTRY* fTexImage3D)(GLenum, GLint, GLenum, GLenum, GLsizei, GLsizei,
416                                 GLint, GLenum, GLenum, const GLvoid*);
417 
418   void(GLAPIENTRY* fTexSubImage3D)(GLenum, GLint, GLint, GLint, GLint, GLsizei,
419                                    GLsizei, GLsizei, GLenum, GLenum,
420                                    const GLvoid*);
421 
422   void(GLAPIENTRY* fCopyTexSubImage3D)(GLenum, GLint, GLint, GLint, GLint,
423                                        GLint, GLint, GLsizei, GLsizei);
424 
425   void(GLAPIENTRY* fCompressedTexImage3D)(GLenum, GLint, GLenum, GLsizei,
426                                           GLsizei, GLsizei, GLint, GLsizei,
427                                           const GLvoid*);
428 
429   void(GLAPIENTRY* fCompressedTexSubImage3D)(GLenum, GLint, GLint, GLint, GLint,
430                                              GLsizei, GLsizei, GLsizei, GLenum,
431                                              GLsizei, const GLvoid*);
432 
433   // get_string_indexed
434   const GLubyte*(GLAPIENTRY* fGetStringi)(GLenum, GLuint);
435 
436   // APPLE_framebuffer_multisample
437   void(GLAPIENTRY* fResolveMultisampleFramebufferAPPLE)(void);
438 
439   // NV_texture_barrier
440   void(GLAPIENTRY* fTextureBarrier)(void);
441 
442   // NV_primitive_restart
443   void(GLAPIENTRY* fPrimitiveRestartIndex)(GLuint);
444 
445   // OVR_multiview2
446   void(GLAPIENTRY* fFramebufferTextureMultiview)(GLenum target,
447                                                  GLenum attachment,
448                                                  GLuint texture, GLint level,
449                                                  GLint baseViewIndex,
450                                                  GLsizei numViews);
451 };
452 
453 }  // namespace gl
454 }  // namespace mozilla
455 
456 #endif /* GLCONTEXTSYMBOLS_H_ */
457