• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright 2013 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #include <EGL/egl.h>
18 #include "gl3stub.h"
19 
gl3stubInit()20 GLboolean gl3stubInit() {
21     #define FIND_PROC(s) s = (void*)eglGetProcAddress(#s)
22     FIND_PROC(glReadBuffer);
23     FIND_PROC(glDrawRangeElements);
24     FIND_PROC(glTexImage3D);
25     FIND_PROC(glTexSubImage3D);
26     FIND_PROC(glCopyTexSubImage3D);
27     FIND_PROC(glCompressedTexImage3D);
28     FIND_PROC(glCompressedTexSubImage3D);
29     FIND_PROC(glGenQueries);
30     FIND_PROC(glDeleteQueries);
31     FIND_PROC(glIsQuery);
32     FIND_PROC(glBeginQuery);
33     FIND_PROC(glEndQuery);
34     FIND_PROC(glGetQueryiv);
35     FIND_PROC(glGetQueryObjectuiv);
36     FIND_PROC(glUnmapBuffer);
37     FIND_PROC(glGetBufferPointerv);
38     FIND_PROC(glDrawBuffers);
39     FIND_PROC(glUniformMatrix2x3fv);
40     FIND_PROC(glUniformMatrix3x2fv);
41     FIND_PROC(glUniformMatrix2x4fv);
42     FIND_PROC(glUniformMatrix4x2fv);
43     FIND_PROC(glUniformMatrix3x4fv);
44     FIND_PROC(glUniformMatrix4x3fv);
45     FIND_PROC(glBlitFramebuffer);
46     FIND_PROC(glRenderbufferStorageMultisample);
47     FIND_PROC(glFramebufferTextureLayer);
48     FIND_PROC(glMapBufferRange);
49     FIND_PROC(glFlushMappedBufferRange);
50     FIND_PROC(glBindVertexArray);
51     FIND_PROC(glDeleteVertexArrays);
52     FIND_PROC(glGenVertexArrays);
53     FIND_PROC(glIsVertexArray);
54     FIND_PROC(glGetIntegeri_v);
55     FIND_PROC(glBeginTransformFeedback);
56     FIND_PROC(glEndTransformFeedback);
57     FIND_PROC(glBindBufferRange);
58     FIND_PROC(glBindBufferBase);
59     FIND_PROC(glTransformFeedbackVaryings);
60     FIND_PROC(glGetTransformFeedbackVarying);
61     FIND_PROC(glVertexAttribIPointer);
62     FIND_PROC(glGetVertexAttribIiv);
63     FIND_PROC(glGetVertexAttribIuiv);
64     FIND_PROC(glVertexAttribI4i);
65     FIND_PROC(glVertexAttribI4ui);
66     FIND_PROC(glVertexAttribI4iv);
67     FIND_PROC(glVertexAttribI4uiv);
68     FIND_PROC(glGetUniformuiv);
69     FIND_PROC(glGetFragDataLocation);
70     FIND_PROC(glUniform1ui);
71     FIND_PROC(glUniform2ui);
72     FIND_PROC(glUniform3ui);
73     FIND_PROC(glUniform4ui);
74     FIND_PROC(glUniform1uiv);
75     FIND_PROC(glUniform2uiv);
76     FIND_PROC(glUniform3uiv);
77     FIND_PROC(glUniform4uiv);
78     FIND_PROC(glClearBufferiv);
79     FIND_PROC(glClearBufferuiv);
80     FIND_PROC(glClearBufferfv);
81     FIND_PROC(glClearBufferfi);
82     FIND_PROC(glGetStringi);
83     FIND_PROC(glCopyBufferSubData);
84     FIND_PROC(glGetUniformIndices);
85     FIND_PROC(glGetActiveUniformsiv);
86     FIND_PROC(glGetUniformBlockIndex);
87     FIND_PROC(glGetActiveUniformBlockiv);
88     FIND_PROC(glGetActiveUniformBlockName);
89     FIND_PROC(glUniformBlockBinding);
90     FIND_PROC(glDrawArraysInstanced);
91     FIND_PROC(glDrawElementsInstanced);
92     FIND_PROC(glFenceSync);
93     FIND_PROC(glIsSync);
94     FIND_PROC(glDeleteSync);
95     FIND_PROC(glClientWaitSync);
96     FIND_PROC(glWaitSync);
97     FIND_PROC(glGetInteger64v);
98     FIND_PROC(glGetSynciv);
99     FIND_PROC(glGetInteger64i_v);
100     FIND_PROC(glGetBufferParameteri64v);
101     FIND_PROC(glGenSamplers);
102     FIND_PROC(glDeleteSamplers);
103     FIND_PROC(glIsSampler);
104     FIND_PROC(glBindSampler);
105     FIND_PROC(glSamplerParameteri);
106     FIND_PROC(glSamplerParameteriv);
107     FIND_PROC(glSamplerParameterf);
108     FIND_PROC(glSamplerParameterfv);
109     FIND_PROC(glGetSamplerParameteriv);
110     FIND_PROC(glGetSamplerParameterfv);
111     FIND_PROC(glVertexAttribDivisor);
112     FIND_PROC(glBindTransformFeedback);
113     FIND_PROC(glDeleteTransformFeedbacks);
114     FIND_PROC(glGenTransformFeedbacks);
115     FIND_PROC(glIsTransformFeedback);
116     FIND_PROC(glPauseTransformFeedback);
117     FIND_PROC(glResumeTransformFeedback);
118     FIND_PROC(glGetProgramBinary);
119     FIND_PROC(glProgramBinary);
120     FIND_PROC(glProgramParameteri);
121     FIND_PROC(glInvalidateFramebuffer);
122     FIND_PROC(glInvalidateSubFramebuffer);
123     FIND_PROC(glTexStorage2D);
124     FIND_PROC(glTexStorage3D);
125     FIND_PROC(glGetInternalformativ);
126     #undef FIND_PROC
127 
128     if (!glReadBuffer ||
129         !glDrawRangeElements ||
130         !glTexImage3D ||
131         !glTexSubImage3D ||
132         !glCopyTexSubImage3D ||
133         !glCompressedTexImage3D ||
134         !glCompressedTexSubImage3D ||
135         !glGenQueries ||
136         !glDeleteQueries ||
137         !glIsQuery ||
138         !glBeginQuery ||
139         !glEndQuery ||
140         !glGetQueryiv ||
141         !glGetQueryObjectuiv ||
142         !glUnmapBuffer ||
143         !glGetBufferPointerv ||
144         !glDrawBuffers ||
145         !glUniformMatrix2x3fv ||
146         !glUniformMatrix3x2fv ||
147         !glUniformMatrix2x4fv ||
148         !glUniformMatrix4x2fv ||
149         !glUniformMatrix3x4fv ||
150         !glUniformMatrix4x3fv ||
151         !glBlitFramebuffer ||
152         !glRenderbufferStorageMultisample ||
153         !glFramebufferTextureLayer ||
154         !glMapBufferRange ||
155         !glFlushMappedBufferRange ||
156         !glBindVertexArray ||
157         !glDeleteVertexArrays ||
158         !glGenVertexArrays ||
159         !glIsVertexArray ||
160         !glGetIntegeri_v ||
161         !glBeginTransformFeedback ||
162         !glEndTransformFeedback ||
163         !glBindBufferRange ||
164         !glBindBufferBase ||
165         !glTransformFeedbackVaryings ||
166         !glGetTransformFeedbackVarying ||
167         !glVertexAttribIPointer ||
168         !glGetVertexAttribIiv ||
169         !glGetVertexAttribIuiv ||
170         !glVertexAttribI4i ||
171         !glVertexAttribI4ui ||
172         !glVertexAttribI4iv ||
173         !glVertexAttribI4uiv ||
174         !glGetUniformuiv ||
175         !glGetFragDataLocation ||
176         !glUniform1ui ||
177         !glUniform2ui ||
178         !glUniform3ui ||
179         !glUniform4ui ||
180         !glUniform1uiv ||
181         !glUniform2uiv ||
182         !glUniform3uiv ||
183         !glUniform4uiv ||
184         !glClearBufferiv ||
185         !glClearBufferuiv ||
186         !glClearBufferfv ||
187         !glClearBufferfi ||
188         !glGetStringi ||
189         !glCopyBufferSubData ||
190         !glGetUniformIndices ||
191         !glGetActiveUniformsiv ||
192         !glGetUniformBlockIndex ||
193         !glGetActiveUniformBlockiv ||
194         !glGetActiveUniformBlockName ||
195         !glUniformBlockBinding ||
196         !glDrawArraysInstanced ||
197         !glDrawElementsInstanced ||
198         !glFenceSync ||
199         !glIsSync ||
200         !glDeleteSync ||
201         !glClientWaitSync ||
202         !glWaitSync ||
203         !glGetInteger64v ||
204         !glGetSynciv ||
205         !glGetInteger64i_v ||
206         !glGetBufferParameteri64v ||
207         !glGenSamplers ||
208         !glDeleteSamplers ||
209         !glIsSampler ||
210         !glBindSampler ||
211         !glSamplerParameteri ||
212         !glSamplerParameteriv ||
213         !glSamplerParameterf ||
214         !glSamplerParameterfv ||
215         !glGetSamplerParameteriv ||
216         !glGetSamplerParameterfv ||
217         !glVertexAttribDivisor ||
218         !glBindTransformFeedback ||
219         !glDeleteTransformFeedbacks ||
220         !glGenTransformFeedbacks ||
221         !glIsTransformFeedback ||
222         !glPauseTransformFeedback ||
223         !glResumeTransformFeedback ||
224         !glGetProgramBinary ||
225         !glProgramBinary ||
226         !glProgramParameteri ||
227         !glInvalidateFramebuffer ||
228         !glInvalidateSubFramebuffer ||
229         !glTexStorage2D ||
230         !glTexStorage3D ||
231         !glGetInternalformativ)
232     {
233         return GL_FALSE;
234     }
235 
236     return GL_TRUE;
237 }
238 
239 /* Function pointer definitions */
240 GL_APICALL void           (* GL_APIENTRY glReadBuffer) (GLenum mode);
241 GL_APICALL void           (* GL_APIENTRY glDrawRangeElements) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid* indices);
242 GL_APICALL void           (* GL_APIENTRY glTexImage3D) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid* pixels);
243 GL_APICALL void           (* GL_APIENTRY glTexSubImage3D) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid* pixels);
244 GL_APICALL void           (* GL_APIENTRY glCopyTexSubImage3D) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
245 GL_APICALL void           (* GL_APIENTRY glCompressedTexImage3D) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid* data);
246 GL_APICALL void           (* GL_APIENTRY glCompressedTexSubImage3D) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid* data);
247 GL_APICALL void           (* GL_APIENTRY glGenQueries) (GLsizei n, GLuint* ids);
248 GL_APICALL void           (* GL_APIENTRY glDeleteQueries) (GLsizei n, const GLuint* ids);
249 GL_APICALL GLboolean      (* GL_APIENTRY glIsQuery) (GLuint id);
250 GL_APICALL void           (* GL_APIENTRY glBeginQuery) (GLenum target, GLuint id);
251 GL_APICALL void           (* GL_APIENTRY glEndQuery) (GLenum target);
252 GL_APICALL void           (* GL_APIENTRY glGetQueryiv) (GLenum target, GLenum pname, GLint* params);
253 GL_APICALL void           (* GL_APIENTRY glGetQueryObjectuiv) (GLuint id, GLenum pname, GLuint* params);
254 GL_APICALL GLboolean      (* GL_APIENTRY glUnmapBuffer) (GLenum target);
255 GL_APICALL void           (* GL_APIENTRY glGetBufferPointerv) (GLenum target, GLenum pname, GLvoid** params);
256 GL_APICALL void           (* GL_APIENTRY glDrawBuffers) (GLsizei n, const GLenum* bufs);
257 GL_APICALL void           (* GL_APIENTRY glUniformMatrix2x3fv) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
258 GL_APICALL void           (* GL_APIENTRY glUniformMatrix3x2fv) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
259 GL_APICALL void           (* GL_APIENTRY glUniformMatrix2x4fv) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
260 GL_APICALL void           (* GL_APIENTRY glUniformMatrix4x2fv) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
261 GL_APICALL void           (* GL_APIENTRY glUniformMatrix3x4fv) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
262 GL_APICALL void           (* GL_APIENTRY glUniformMatrix4x3fv) (GLint location, GLsizei count, GLboolean transpose, const GLfloat* value);
263 GL_APICALL void           (* GL_APIENTRY glBlitFramebuffer) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
264 GL_APICALL void           (* GL_APIENTRY glRenderbufferStorageMultisample) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
265 GL_APICALL void           (* GL_APIENTRY glFramebufferTextureLayer) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
266 GL_APICALL GLvoid*        (* GL_APIENTRY glMapBufferRange) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
267 GL_APICALL void           (* GL_APIENTRY glFlushMappedBufferRange) (GLenum target, GLintptr offset, GLsizeiptr length);
268 GL_APICALL void           (* GL_APIENTRY glBindVertexArray) (GLuint array);
269 GL_APICALL void           (* GL_APIENTRY glDeleteVertexArrays) (GLsizei n, const GLuint* arrays);
270 GL_APICALL void           (* GL_APIENTRY glGenVertexArrays) (GLsizei n, GLuint* arrays);
271 GL_APICALL GLboolean      (* GL_APIENTRY glIsVertexArray) (GLuint array);
272 GL_APICALL void           (* GL_APIENTRY glGetIntegeri_v) (GLenum target, GLuint index, GLint* data);
273 GL_APICALL void           (* GL_APIENTRY glBeginTransformFeedback) (GLenum primitiveMode);
274 GL_APICALL void           (* GL_APIENTRY glEndTransformFeedback) (void);
275 GL_APICALL void           (* GL_APIENTRY glBindBufferRange) (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
276 GL_APICALL void           (* GL_APIENTRY glBindBufferBase) (GLenum target, GLuint index, GLuint buffer);
277 GL_APICALL void           (* GL_APIENTRY glTransformFeedbackVaryings) (GLuint program, GLsizei count, const GLchar* const* varyings, GLenum bufferMode);
278 GL_APICALL void           (* GL_APIENTRY glGetTransformFeedbackVarying) (GLuint program, GLuint index, GLsizei bufSize, GLsizei* length, GLsizei* size, GLenum* type, GLchar* name);
279 GL_APICALL void           (* GL_APIENTRY glVertexAttribIPointer) (GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid* pointer);
280 GL_APICALL void           (* GL_APIENTRY glGetVertexAttribIiv) (GLuint index, GLenum pname, GLint* params);
281 GL_APICALL void           (* GL_APIENTRY glGetVertexAttribIuiv) (GLuint index, GLenum pname, GLuint* params);
282 GL_APICALL void           (* GL_APIENTRY glVertexAttribI4i) (GLuint index, GLint x, GLint y, GLint z, GLint w);
283 GL_APICALL void           (* GL_APIENTRY glVertexAttribI4ui) (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
284 GL_APICALL void           (* GL_APIENTRY glVertexAttribI4iv) (GLuint index, const GLint* v);
285 GL_APICALL void           (* GL_APIENTRY glVertexAttribI4uiv) (GLuint index, const GLuint* v);
286 GL_APICALL void           (* GL_APIENTRY glGetUniformuiv) (GLuint program, GLint location, GLuint* params);
287 GL_APICALL GLint          (* GL_APIENTRY glGetFragDataLocation) (GLuint program, const GLchar *name);
288 GL_APICALL void           (* GL_APIENTRY glUniform1ui) (GLint location, GLuint v0);
289 GL_APICALL void           (* GL_APIENTRY glUniform2ui) (GLint location, GLuint v0, GLuint v1);
290 GL_APICALL void           (* GL_APIENTRY glUniform3ui) (GLint location, GLuint v0, GLuint v1, GLuint v2);
291 GL_APICALL void           (* GL_APIENTRY glUniform4ui) (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
292 GL_APICALL void           (* GL_APIENTRY glUniform1uiv) (GLint location, GLsizei count, const GLuint* value);
293 GL_APICALL void           (* GL_APIENTRY glUniform2uiv) (GLint location, GLsizei count, const GLuint* value);
294 GL_APICALL void           (* GL_APIENTRY glUniform3uiv) (GLint location, GLsizei count, const GLuint* value);
295 GL_APICALL void           (* GL_APIENTRY glUniform4uiv) (GLint location, GLsizei count, const GLuint* value);
296 GL_APICALL void           (* GL_APIENTRY glClearBufferiv) (GLenum buffer, GLint drawbuffer, const GLint* value);
297 GL_APICALL void           (* GL_APIENTRY glClearBufferuiv) (GLenum buffer, GLint drawbuffer, const GLuint* value);
298 GL_APICALL void           (* GL_APIENTRY glClearBufferfv) (GLenum buffer, GLint drawbuffer, const GLfloat* value);
299 GL_APICALL void           (* GL_APIENTRY glClearBufferfi) (GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);
300 GL_APICALL const GLubyte* (* GL_APIENTRY glGetStringi) (GLenum name, GLuint index);
301 GL_APICALL void           (* GL_APIENTRY glCopyBufferSubData) (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
302 GL_APICALL void           (* GL_APIENTRY glGetUniformIndices) (GLuint program, GLsizei uniformCount, const GLchar* const* uniformNames, GLuint* uniformIndices);
303 GL_APICALL void           (* GL_APIENTRY glGetActiveUniformsiv) (GLuint program, GLsizei uniformCount, const GLuint* uniformIndices, GLenum pname, GLint* params);
304 GL_APICALL GLuint         (* GL_APIENTRY glGetUniformBlockIndex) (GLuint program, const GLchar* uniformBlockName);
305 GL_APICALL void           (* GL_APIENTRY glGetActiveUniformBlockiv) (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint* params);
306 GL_APICALL void           (* GL_APIENTRY glGetActiveUniformBlockName) (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei* length, GLchar* uniformBlockName);
307 GL_APICALL void           (* GL_APIENTRY glUniformBlockBinding) (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding);
308 GL_APICALL void           (* GL_APIENTRY glDrawArraysInstanced) (GLenum mode, GLint first, GLsizei count, GLsizei instanceCount);
309 GL_APICALL void           (* GL_APIENTRY glDrawElementsInstanced) (GLenum mode, GLsizei count, GLenum type, const GLvoid* indices, GLsizei instanceCount);
310 GL_APICALL GLsync         (* GL_APIENTRY glFenceSync) (GLenum condition, GLbitfield flags);
311 GL_APICALL GLboolean      (* GL_APIENTRY glIsSync) (GLsync sync);
312 GL_APICALL void           (* GL_APIENTRY glDeleteSync) (GLsync sync);
313 GL_APICALL GLenum         (* GL_APIENTRY glClientWaitSync) (GLsync sync, GLbitfield flags, GLuint64 timeout);
314 GL_APICALL void           (* GL_APIENTRY glWaitSync) (GLsync sync, GLbitfield flags, GLuint64 timeout);
315 GL_APICALL void           (* GL_APIENTRY glGetInteger64v) (GLenum pname, GLint64* params);
316 GL_APICALL void           (* GL_APIENTRY glGetSynciv) (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei* length, GLint* values);
317 GL_APICALL void           (* GL_APIENTRY glGetInteger64i_v) (GLenum target, GLuint index, GLint64* data);
318 GL_APICALL void           (* GL_APIENTRY glGetBufferParameteri64v) (GLenum target, GLenum pname, GLint64* params);
319 GL_APICALL void           (* GL_APIENTRY glGenSamplers) (GLsizei count, GLuint* samplers);
320 GL_APICALL void           (* GL_APIENTRY glDeleteSamplers) (GLsizei count, const GLuint* samplers);
321 GL_APICALL GLboolean      (* GL_APIENTRY glIsSampler) (GLuint sampler);
322 GL_APICALL void           (* GL_APIENTRY glBindSampler) (GLuint unit, GLuint sampler);
323 GL_APICALL void           (* GL_APIENTRY glSamplerParameteri) (GLuint sampler, GLenum pname, GLint param);
324 GL_APICALL void           (* GL_APIENTRY glSamplerParameteriv) (GLuint sampler, GLenum pname, const GLint* param);
325 GL_APICALL void           (* GL_APIENTRY glSamplerParameterf) (GLuint sampler, GLenum pname, GLfloat param);
326 GL_APICALL void           (* GL_APIENTRY glSamplerParameterfv) (GLuint sampler, GLenum pname, const GLfloat* param);
327 GL_APICALL void           (* GL_APIENTRY glGetSamplerParameteriv) (GLuint sampler, GLenum pname, GLint* params);
328 GL_APICALL void           (* GL_APIENTRY glGetSamplerParameterfv) (GLuint sampler, GLenum pname, GLfloat* params);
329 GL_APICALL void           (* GL_APIENTRY glVertexAttribDivisor) (GLuint index, GLuint divisor);
330 GL_APICALL void           (* GL_APIENTRY glBindTransformFeedback) (GLenum target, GLuint id);
331 GL_APICALL void           (* GL_APIENTRY glDeleteTransformFeedbacks) (GLsizei n, const GLuint* ids);
332 GL_APICALL void           (* GL_APIENTRY glGenTransformFeedbacks) (GLsizei n, GLuint* ids);
333 GL_APICALL GLboolean      (* GL_APIENTRY glIsTransformFeedback) (GLuint id);
334 GL_APICALL void           (* GL_APIENTRY glPauseTransformFeedback) (void);
335 GL_APICALL void           (* GL_APIENTRY glResumeTransformFeedback) (void);
336 GL_APICALL void           (* GL_APIENTRY glGetProgramBinary) (GLuint program, GLsizei bufSize, GLsizei* length, GLenum* binaryFormat, GLvoid* binary);
337 GL_APICALL void           (* GL_APIENTRY glProgramBinary) (GLuint program, GLenum binaryFormat, const GLvoid* binary, GLsizei length);
338 GL_APICALL void           (* GL_APIENTRY glProgramParameteri) (GLuint program, GLenum pname, GLint value);
339 GL_APICALL void           (* GL_APIENTRY glInvalidateFramebuffer) (GLenum target, GLsizei numAttachments, const GLenum* attachments);
340 GL_APICALL void           (* GL_APIENTRY glInvalidateSubFramebuffer) (GLenum target, GLsizei numAttachments, const GLenum* attachments, GLint x, GLint y, GLsizei width, GLsizei height);
341 GL_APICALL void           (* GL_APIENTRY glTexStorage2D) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height);
342 GL_APICALL void           (* GL_APIENTRY glTexStorage3D) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth);
343 GL_APICALL void           (* GL_APIENTRY glGetInternalformativ) (GLenum target, GLenum internalformat, GLenum pname, GLsizei bufSize, GLint* params);
344