Home | History | Annotate | Download | only in jni
      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 
     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