Home | History | Annotate | Download | only in ndk_helper
      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 {
     22 #define FIND_PROC(s) s = (void*)eglGetProcAddress(#s);
     23     FIND_PROC( glReadBuffer );
     24     FIND_PROC( glDrawRangeElements );
     25     FIND_PROC( glTexImage3D );
     26     FIND_PROC( glTexSubImage3D );
     27     FIND_PROC( glCopyTexSubImage3D );
     28     FIND_PROC( glCompressedTexImage3D );
     29     FIND_PROC( glCompressedTexSubImage3D );
     30     FIND_PROC( glGenQueries );
     31     FIND_PROC( glDeleteQueries );
     32     FIND_PROC( glIsQuery );
     33     FIND_PROC( glBeginQuery );
     34     FIND_PROC( glEndQuery );
     35     FIND_PROC( glGetQueryiv );
     36     FIND_PROC( glGetQueryObjectuiv );
     37     FIND_PROC( glUnmapBuffer );
     38     FIND_PROC( glGetBufferPointerv );
     39     FIND_PROC( glDrawBuffers );
     40     FIND_PROC( glUniformMatrix2x3fv );
     41     FIND_PROC( glUniformMatrix3x2fv );
     42     FIND_PROC( glUniformMatrix2x4fv );
     43     FIND_PROC( glUniformMatrix4x2fv );
     44     FIND_PROC( glUniformMatrix3x4fv );
     45     FIND_PROC( glUniformMatrix4x3fv );
     46     FIND_PROC( glBlitFramebuffer );
     47     FIND_PROC( glRenderbufferStorageMultisample );
     48     FIND_PROC( glFramebufferTextureLayer );
     49     FIND_PROC( glMapBufferRange );
     50     FIND_PROC( glFlushMappedBufferRange );
     51     FIND_PROC( glBindVertexArray );
     52     FIND_PROC( glDeleteVertexArrays );
     53     FIND_PROC( glGenVertexArrays );
     54     FIND_PROC( glIsVertexArray );
     55     FIND_PROC( glGetIntegeri_v );
     56     FIND_PROC( glBeginTransformFeedback );
     57     FIND_PROC( glEndTransformFeedback );
     58     FIND_PROC( glBindBufferRange );
     59     FIND_PROC( glBindBufferBase );
     60     FIND_PROC( glTransformFeedbackVaryings );
     61     FIND_PROC( glGetTransformFeedbackVarying );
     62     FIND_PROC( glVertexAttribIPointer );
     63     FIND_PROC( glGetVertexAttribIiv );
     64     FIND_PROC( glGetVertexAttribIuiv );
     65     FIND_PROC( glVertexAttribI4i );
     66     FIND_PROC( glVertexAttribI4ui );
     67     FIND_PROC( glVertexAttribI4iv );
     68     FIND_PROC( glVertexAttribI4uiv );
     69     FIND_PROC( glGetUniformuiv );
     70     FIND_PROC( glGetFragDataLocation );
     71     FIND_PROC( glUniform1ui );
     72     FIND_PROC( glUniform2ui );
     73     FIND_PROC( glUniform3ui );
     74     FIND_PROC( glUniform4ui );
     75     FIND_PROC( glUniform1uiv );
     76     FIND_PROC( glUniform2uiv );
     77     FIND_PROC( glUniform3uiv );
     78     FIND_PROC( glUniform4uiv );
     79     FIND_PROC( glClearBufferiv );
     80     FIND_PROC( glClearBufferuiv );
     81     FIND_PROC( glClearBufferfv );
     82     FIND_PROC( glClearBufferfi );
     83     FIND_PROC( glGetStringi );
     84     FIND_PROC( glCopyBufferSubData );
     85     FIND_PROC( glGetUniformIndices );
     86     FIND_PROC( glGetActiveUniformsiv );
     87     FIND_PROC( glGetUniformBlockIndex );
     88     FIND_PROC( glGetActiveUniformBlockiv );
     89     FIND_PROC( glGetActiveUniformBlockName );
     90     FIND_PROC( glUniformBlockBinding );
     91     FIND_PROC( glDrawArraysInstanced );
     92     FIND_PROC( glDrawElementsInstanced );
     93     FIND_PROC( glFenceSync );
     94     FIND_PROC( glIsSync );
     95     FIND_PROC( glDeleteSync );
     96     FIND_PROC( glClientWaitSync );
     97     FIND_PROC( glWaitSync );
     98     FIND_PROC( glGetInteger64v );
     99     FIND_PROC( glGetSynciv );
    100     FIND_PROC( glGetInteger64i_v );
    101     FIND_PROC( glGetBufferParameteri64v );
    102     FIND_PROC( glGenSamplers );
    103     FIND_PROC( glDeleteSamplers );
    104     FIND_PROC( glIsSampler );
    105     FIND_PROC( glBindSampler );
    106     FIND_PROC( glSamplerParameteri );
    107     FIND_PROC( glSamplerParameteriv );
    108     FIND_PROC( glSamplerParameterf );
    109     FIND_PROC( glSamplerParameterfv );
    110     FIND_PROC( glGetSamplerParameteriv );
    111     FIND_PROC( glGetSamplerParameterfv );
    112     FIND_PROC( glVertexAttribDivisor );
    113     FIND_PROC( glBindTransformFeedback );
    114     FIND_PROC( glDeleteTransformFeedbacks );
    115     FIND_PROC( glGenTransformFeedbacks );
    116     FIND_PROC( glIsTransformFeedback );
    117     FIND_PROC( glPauseTransformFeedback );
    118     FIND_PROC( glResumeTransformFeedback );
    119     FIND_PROC( glGetProgramBinary );
    120     FIND_PROC( glProgramBinary );
    121     FIND_PROC( glProgramParameteri );
    122     FIND_PROC( glInvalidateFramebuffer );
    123     FIND_PROC( glInvalidateSubFramebuffer );
    124     FIND_PROC( glTexStorage2D );
    125     FIND_PROC( glTexStorage3D );
    126     FIND_PROC( glGetInternalformativ );
    127 #undef FIND_PROC
    128 
    129     if( !glReadBuffer || !glDrawRangeElements || !glTexImage3D || !glTexSubImage3D
    130             || !glCopyTexSubImage3D || !glCompressedTexImage3D
    131             || !glCompressedTexSubImage3D || !glGenQueries || !glDeleteQueries
    132             || !glIsQuery || !glBeginQuery || !glEndQuery || !glGetQueryiv
    133             || !glGetQueryObjectuiv || !glUnmapBuffer || !glGetBufferPointerv
    134             || !glDrawBuffers || !glUniformMatrix2x3fv || !glUniformMatrix3x2fv
    135             || !glUniformMatrix2x4fv || !glUniformMatrix4x2fv || !glUniformMatrix3x4fv
    136             || !glUniformMatrix4x3fv || !glBlitFramebuffer
    137             || !glRenderbufferStorageMultisample || !glFramebufferTextureLayer
    138             || !glMapBufferRange || !glFlushMappedBufferRange || !glBindVertexArray
    139             || !glDeleteVertexArrays || !glGenVertexArrays || !glIsVertexArray
    140             || !glGetIntegeri_v || !glBeginTransformFeedback || !glEndTransformFeedback
    141             || !glBindBufferRange || !glBindBufferBase || !glTransformFeedbackVaryings
    142             || !glGetTransformFeedbackVarying || !glVertexAttribIPointer
    143             || !glGetVertexAttribIiv || !glGetVertexAttribIuiv || !glVertexAttribI4i
    144             || !glVertexAttribI4ui || !glVertexAttribI4iv || !glVertexAttribI4uiv
    145             || !glGetUniformuiv || !glGetFragDataLocation || !glUniform1ui
    146             || !glUniform2ui || !glUniform3ui || !glUniform4ui || !glUniform1uiv
    147             || !glUniform2uiv || !glUniform3uiv || !glUniform4uiv || !glClearBufferiv
    148             || !glClearBufferuiv || !glClearBufferfv || !glClearBufferfi || !glGetStringi
    149             || !glCopyBufferSubData || !glGetUniformIndices || !glGetActiveUniformsiv
    150             || !glGetUniformBlockIndex || !glGetActiveUniformBlockiv
    151             || !glGetActiveUniformBlockName || !glUniformBlockBinding
    152             || !glDrawArraysInstanced || !glDrawElementsInstanced || !glFenceSync
    153             || !glIsSync || !glDeleteSync || !glClientWaitSync || !glWaitSync
    154             || !glGetInteger64v || !glGetSynciv || !glGetInteger64i_v
    155             || !glGetBufferParameteri64v || !glGenSamplers || !glDeleteSamplers
    156             || !glIsSampler || !glBindSampler || !glSamplerParameteri
    157             || !glSamplerParameteriv || !glSamplerParameterf || !glSamplerParameterfv
    158             || !glGetSamplerParameteriv || !glGetSamplerParameterfv
    159             || !glVertexAttribDivisor || !glBindTransformFeedback
    160             || !glDeleteTransformFeedbacks || !glGenTransformFeedbacks
    161             || !glIsTransformFeedback || !glPauseTransformFeedback
    162             || !glResumeTransformFeedback || !glGetProgramBinary || !glProgramBinary
    163             || !glProgramParameteri || !glInvalidateFramebuffer
    164             || !glInvalidateSubFramebuffer || !glTexStorage2D || !glTexStorage3D
    165             || !glGetInternalformativ )
    166     {
    167         return GL_FALSE;
    168     }
    169 
    170     return GL_TRUE;
    171 }
    172 
    173 /* Function pointer definitions */GL_APICALL void (* GL_APIENTRY glReadBuffer)( GLenum mode );
    174 GL_APICALL void (* GL_APIENTRY glDrawRangeElements)( GLenum mode,
    175         GLuint start,
    176         GLuint end,
    177         GLsizei count,
    178         GLenum type,
    179         const GLvoid* indices );
    180 GL_APICALL void (* GL_APIENTRY glTexImage3D)( GLenum target,
    181         GLint level,
    182         GLint internalformat,
    183         GLsizei width,
    184         GLsizei height,
    185         GLsizei depth,
    186         GLint border,
    187         GLenum format,
    188         GLenum type,
    189         const GLvoid* pixels );
    190 GL_APICALL void (* GL_APIENTRY glTexSubImage3D)( GLenum target,
    191         GLint level,
    192         GLint xoffset,
    193         GLint yoffset,
    194         GLint zoffset,
    195         GLsizei width,
    196         GLsizei height,
    197         GLsizei depth,
    198         GLenum format,
    199         GLenum type,
    200         const GLvoid* pixels );
    201 GL_APICALL void (* GL_APIENTRY glCopyTexSubImage3D)( GLenum target,
    202         GLint level,
    203         GLint xoffset,
    204         GLint yoffset,
    205         GLint zoffset,
    206         GLint x,
    207         GLint y,
    208         GLsizei width,
    209         GLsizei height );
    210 GL_APICALL void (* GL_APIENTRY glCompressedTexImage3D)( GLenum target,
    211         GLint level,
    212         GLenum internalformat,
    213         GLsizei width,
    214         GLsizei height,
    215         GLsizei depth,
    216         GLint border,
    217         GLsizei imageSize,
    218         const GLvoid* data );
    219 GL_APICALL void (* GL_APIENTRY glCompressedTexSubImage3D)( GLenum target,
    220         GLint level,
    221         GLint xoffset,
    222         GLint yoffset,
    223         GLint zoffset,
    224         GLsizei width,
    225         GLsizei height,
    226         GLsizei depth,
    227         GLenum format,
    228         GLsizei imageSize,
    229         const GLvoid* data );
    230 GL_APICALL void (* GL_APIENTRY glGenQueries)( GLsizei n, GLuint* ids );
    231 GL_APICALL void (* GL_APIENTRY glDeleteQueries)( GLsizei n, const GLuint* ids );
    232 GL_APICALL GLboolean (* GL_APIENTRY glIsQuery)( GLuint id );
    233 GL_APICALL void (* GL_APIENTRY glBeginQuery)( GLenum target, GLuint id );
    234 GL_APICALL void (* GL_APIENTRY glEndQuery)( GLenum target );
    235 GL_APICALL void (* GL_APIENTRY glGetQueryiv)( GLenum target, GLenum pname, GLint* params );
    236 GL_APICALL void (* GL_APIENTRY glGetQueryObjectuiv)( GLuint id,
    237         GLenum pname,
    238         GLuint* params );
    239 GL_APICALL GLboolean (* GL_APIENTRY glUnmapBuffer)( GLenum target );
    240 GL_APICALL void (* GL_APIENTRY glGetBufferPointerv)( GLenum target,
    241         GLenum pname,
    242         GLvoid** params );
    243 GL_APICALL void (* GL_APIENTRY glDrawBuffers)( GLsizei n, const GLenum* bufs );
    244 GL_APICALL void (* GL_APIENTRY glUniformMatrix2x3fv)( GLint location,
    245         GLsizei count,
    246         GLboolean transpose,
    247         const GLfloat* value );
    248 GL_APICALL void (* GL_APIENTRY glUniformMatrix3x2fv)( GLint location,
    249         GLsizei count,
    250         GLboolean transpose,
    251         const GLfloat* value );
    252 GL_APICALL void (* GL_APIENTRY glUniformMatrix2x4fv)( GLint location,
    253         GLsizei count,
    254         GLboolean transpose,
    255         const GLfloat* value );
    256 GL_APICALL void (* GL_APIENTRY glUniformMatrix4x2fv)( GLint location,
    257         GLsizei count,
    258         GLboolean transpose,
    259         const GLfloat* value );
    260 GL_APICALL void (* GL_APIENTRY glUniformMatrix3x4fv)( GLint location,
    261         GLsizei count,
    262         GLboolean transpose,
    263         const GLfloat* value );
    264 GL_APICALL void (* GL_APIENTRY glUniformMatrix4x3fv)( GLint location,
    265         GLsizei count,
    266         GLboolean transpose,
    267         const GLfloat* value );
    268 GL_APICALL void (* GL_APIENTRY glBlitFramebuffer)( GLint srcX0,
    269         GLint srcY0,
    270         GLint srcX1,
    271         GLint srcY1,
    272         GLint dstX0,
    273         GLint dstY0,
    274         GLint dstX1,
    275         GLint dstY1,
    276         GLbitfield mask,
    277         GLenum filter );
    278 GL_APICALL void (* GL_APIENTRY glRenderbufferStorageMultisample)( GLenum target,
    279         GLsizei samples,
    280         GLenum internalformat,
    281         GLsizei width,
    282         GLsizei height );
    283 GL_APICALL void (* GL_APIENTRY glFramebufferTextureLayer)( GLenum target,
    284         GLenum attachment,
    285         GLuint texture,
    286         GLint level,
    287         GLint layer );
    288 GL_APICALL GLvoid* (* GL_APIENTRY glMapBufferRange)( GLenum target,
    289         GLintptr offset,
    290         GLsizeiptr length,
    291         GLbitfield access );
    292 GL_APICALL void (* GL_APIENTRY glFlushMappedBufferRange)( GLenum target,
    293         GLintptr offset,
    294         GLsizeiptr length );
    295 GL_APICALL void (* GL_APIENTRY glBindVertexArray)( GLuint array );
    296 GL_APICALL void (* GL_APIENTRY glDeleteVertexArrays)( GLsizei n, const GLuint* arrays );
    297 GL_APICALL void (* GL_APIENTRY glGenVertexArrays)( GLsizei n, GLuint* arrays );
    298 GL_APICALL GLboolean (* GL_APIENTRY glIsVertexArray)( GLuint array );
    299 GL_APICALL void (* GL_APIENTRY glGetIntegeri_v)( GLenum target,
    300         GLuint index,
    301         GLint* data );
    302 GL_APICALL void (* GL_APIENTRY glBeginTransformFeedback)( GLenum primitiveMode );
    303 GL_APICALL void (* GL_APIENTRY glEndTransformFeedback)( void );
    304 GL_APICALL void (* GL_APIENTRY glBindBufferRange)( GLenum target,
    305         GLuint index,
    306         GLuint buffer,
    307         GLintptr offset,
    308         GLsizeiptr size );
    309 GL_APICALL void (* GL_APIENTRY glBindBufferBase)( GLenum target,
    310         GLuint index,
    311         GLuint buffer );
    312 GL_APICALL void (* GL_APIENTRY glTransformFeedbackVaryings)( GLuint program,
    313         GLsizei count,
    314         const GLchar* const * varyings,
    315         GLenum bufferMode );
    316 GL_APICALL void (* GL_APIENTRY glGetTransformFeedbackVarying)( GLuint program,
    317         GLuint index,
    318         GLsizei bufSize,
    319         GLsizei* length,
    320         GLsizei* size,
    321         GLenum* type,
    322         GLchar* name );
    323 GL_APICALL void (* GL_APIENTRY glVertexAttribIPointer)( GLuint index,
    324         GLint size,
    325         GLenum type,
    326         GLsizei stride,
    327         const GLvoid* pointer );
    328 GL_APICALL void (* GL_APIENTRY glGetVertexAttribIiv)( GLuint index,
    329         GLenum pname,
    330         GLint* params );
    331 GL_APICALL void (* GL_APIENTRY glGetVertexAttribIuiv)( GLuint index,
    332         GLenum pname,
    333         GLuint* params );
    334 GL_APICALL void (* GL_APIENTRY glVertexAttribI4i)( GLuint index,
    335         GLint x,
    336         GLint y,
    337         GLint z,
    338         GLint w );
    339 GL_APICALL void (* GL_APIENTRY glVertexAttribI4ui)( GLuint index,
    340         GLuint x,
    341         GLuint y,
    342         GLuint z,
    343         GLuint w );
    344 GL_APICALL void (* GL_APIENTRY glVertexAttribI4iv)( GLuint index, const GLint* v );
    345 GL_APICALL void (* GL_APIENTRY glVertexAttribI4uiv)( GLuint index, const GLuint* v );
    346 GL_APICALL void (* GL_APIENTRY glGetUniformuiv)( GLuint program,
    347         GLint location,
    348         GLuint* params );
    349 GL_APICALL GLint (* GL_APIENTRY glGetFragDataLocation)( GLuint program,
    350         const GLchar *name );
    351 GL_APICALL void (* GL_APIENTRY glUniform1ui)( GLint location, GLuint v0 );
    352 GL_APICALL void (* GL_APIENTRY glUniform2ui)( GLint location, GLuint v0, GLuint v1 );
    353 GL_APICALL void (* GL_APIENTRY glUniform3ui)( GLint location,
    354         GLuint v0,
    355         GLuint v1,
    356         GLuint v2 );
    357 GL_APICALL void (* GL_APIENTRY glUniform4ui)( GLint location,
    358         GLuint v0,
    359         GLuint v1,
    360         GLuint v2,
    361         GLuint v3 );
    362 GL_APICALL void (* GL_APIENTRY glUniform1uiv)( GLint location,
    363         GLsizei count,
    364         const GLuint* value );
    365 GL_APICALL void (* GL_APIENTRY glUniform2uiv)( GLint location,
    366         GLsizei count,
    367         const GLuint* value );
    368 GL_APICALL void (* GL_APIENTRY glUniform3uiv)( GLint location,
    369         GLsizei count,
    370         const GLuint* value );
    371 GL_APICALL void (* GL_APIENTRY glUniform4uiv)( GLint location,
    372         GLsizei count,
    373         const GLuint* value );
    374 GL_APICALL void (* GL_APIENTRY glClearBufferiv)( GLenum buffer,
    375         GLint drawbuffer,
    376         const GLint* value );
    377 GL_APICALL void (* GL_APIENTRY glClearBufferuiv)( GLenum buffer,
    378         GLint drawbuffer,
    379         const GLuint* value );
    380 GL_APICALL void (* GL_APIENTRY glClearBufferfv)( GLenum buffer,
    381         GLint drawbuffer,
    382         const GLfloat* value );
    383 GL_APICALL void (* GL_APIENTRY glClearBufferfi)( GLenum buffer,
    384         GLint drawbuffer,
    385         GLfloat depth,
    386         GLint stencil );
    387 GL_APICALL const GLubyte* (* GL_APIENTRY glGetStringi)( GLenum name, GLuint index );
    388 GL_APICALL void (* GL_APIENTRY glCopyBufferSubData)( GLenum readTarget,
    389         GLenum writeTarget,
    390         GLintptr readOffset,
    391         GLintptr writeOffset,
    392         GLsizeiptr size );
    393 GL_APICALL void (* GL_APIENTRY glGetUniformIndices)( GLuint program,
    394         GLsizei uniformCount,
    395         const GLchar* const * uniformNames,
    396         GLuint* uniformIndices );
    397 GL_APICALL void (* GL_APIENTRY glGetActiveUniformsiv)( GLuint program,
    398         GLsizei uniformCount,
    399         const GLuint* uniformIndices,
    400         GLenum pname,
    401         GLint* params );
    402 GL_APICALL GLuint (* GL_APIENTRY glGetUniformBlockIndex)( GLuint program,
    403         const GLchar* uniformBlockName );
    404 GL_APICALL void (* GL_APIENTRY glGetActiveUniformBlockiv)( GLuint program,
    405         GLuint uniformBlockIndex,
    406         GLenum pname,
    407         GLint* params );
    408 GL_APICALL void (* GL_APIENTRY glGetActiveUniformBlockName)( GLuint program,
    409         GLuint uniformBlockIndex,
    410         GLsizei bufSize,
    411         GLsizei* length,
    412         GLchar* uniformBlockName );
    413 GL_APICALL void (* GL_APIENTRY glUniformBlockBinding)( GLuint program,
    414         GLuint uniformBlockIndex,
    415         GLuint uniformBlockBinding );
    416 GL_APICALL void (* GL_APIENTRY glDrawArraysInstanced)( GLenum mode,
    417         GLint first,
    418         GLsizei count,
    419         GLsizei instanceCount );
    420 GL_APICALL void (* GL_APIENTRY glDrawElementsInstanced)( GLenum mode,
    421         GLsizei count,
    422         GLenum type,
    423         const GLvoid* indices,
    424         GLsizei instanceCount );
    425 GL_APICALL GLsync (* GL_APIENTRY glFenceSync)( GLenum condition, GLbitfield flags );
    426 GL_APICALL GLboolean (* GL_APIENTRY glIsSync)( GLsync sync );
    427 GL_APICALL void (* GL_APIENTRY glDeleteSync)( GLsync sync );
    428 GL_APICALL GLenum (* GL_APIENTRY glClientWaitSync)( GLsync sync,
    429         GLbitfield flags,
    430         GLuint64 timeout );
    431 GL_APICALL void (* GL_APIENTRY glWaitSync)( GLsync sync,
    432         GLbitfield flags,
    433         GLuint64 timeout );
    434 GL_APICALL void (* GL_APIENTRY glGetInteger64v)( GLenum pname, GLint64* params );
    435 GL_APICALL void (* GL_APIENTRY glGetSynciv)( GLsync sync,
    436         GLenum pname,
    437         GLsizei bufSize,
    438         GLsizei* length,
    439         GLint* values );
    440 GL_APICALL void (* GL_APIENTRY glGetInteger64i_v)( GLenum target,
    441         GLuint index,
    442         GLint64* data );
    443 GL_APICALL void (* GL_APIENTRY glGetBufferParameteri64v)( GLenum target,
    444         GLenum pname,
    445         GLint64* params );
    446 GL_APICALL void (* GL_APIENTRY glGenSamplers)( GLsizei count, GLuint* samplers );
    447 GL_APICALL void (* GL_APIENTRY glDeleteSamplers)( GLsizei count, const GLuint* samplers );
    448 GL_APICALL GLboolean (* GL_APIENTRY glIsSampler)( GLuint sampler );
    449 GL_APICALL void (* GL_APIENTRY glBindSampler)( GLuint unit, GLuint sampler );
    450 GL_APICALL void (* GL_APIENTRY glSamplerParameteri)( GLuint sampler,
    451         GLenum pname,
    452         GLint param );
    453 GL_APICALL void (* GL_APIENTRY glSamplerParameteriv)( GLuint sampler,
    454         GLenum pname,
    455         const GLint* param );
    456 GL_APICALL void (* GL_APIENTRY glSamplerParameterf)( GLuint sampler,
    457         GLenum pname,
    458         GLfloat param );
    459 GL_APICALL void (* GL_APIENTRY glSamplerParameterfv)( GLuint sampler,
    460         GLenum pname,
    461         const GLfloat* param );
    462 GL_APICALL void (* GL_APIENTRY glGetSamplerParameteriv)( GLuint sampler,
    463         GLenum pname,
    464         GLint* params );
    465 GL_APICALL void (* GL_APIENTRY glGetSamplerParameterfv)( GLuint sampler,
    466         GLenum pname,
    467         GLfloat* params );
    468 GL_APICALL void (* GL_APIENTRY glVertexAttribDivisor)( GLuint index, GLuint divisor );
    469 GL_APICALL void (* GL_APIENTRY glBindTransformFeedback)( GLenum target, GLuint id );
    470 GL_APICALL void (* GL_APIENTRY glDeleteTransformFeedbacks)( GLsizei n, const GLuint* ids );
    471 GL_APICALL void (* GL_APIENTRY glGenTransformFeedbacks)( GLsizei n, GLuint* ids );
    472 GL_APICALL GLboolean (* GL_APIENTRY glIsTransformFeedback)( GLuint id );
    473 GL_APICALL void (* GL_APIENTRY glPauseTransformFeedback)( void );
    474 GL_APICALL void (* GL_APIENTRY glResumeTransformFeedback)( void );
    475 GL_APICALL void (* GL_APIENTRY glGetProgramBinary)( GLuint program,
    476         GLsizei bufSize,
    477         GLsizei* length,
    478         GLenum* binaryFormat,
    479         GLvoid* binary );
    480 GL_APICALL void (* GL_APIENTRY glProgramBinary)( GLuint program,
    481         GLenum binaryFormat,
    482         const GLvoid* binary,
    483         GLsizei length );
    484 GL_APICALL void (* GL_APIENTRY glProgramParameteri)( GLuint program,
    485         GLenum pname,
    486         GLint value );
    487 GL_APICALL void (* GL_APIENTRY glInvalidateFramebuffer)( GLenum target,
    488         GLsizei numAttachments,
    489         const GLenum* attachments );
    490 GL_APICALL void (* GL_APIENTRY glInvalidateSubFramebuffer)( GLenum target,
    491         GLsizei numAttachments,
    492         const GLenum* attachments,
    493         GLint x,
    494         GLint y,
    495         GLsizei width,
    496         GLsizei height );
    497 GL_APICALL void (* GL_APIENTRY glTexStorage2D)( GLenum target,
    498         GLsizei levels,
    499         GLenum internalformat,
    500         GLsizei width,
    501         GLsizei height );
    502 GL_APICALL void (* GL_APIENTRY glTexStorage3D)( GLenum target,
    503         GLsizei levels,
    504         GLenum internalformat,
    505         GLsizei width,
    506         GLsizei height,
    507         GLsizei depth );
    508 GL_APICALL void (* GL_APIENTRY glGetInternalformativ)( GLenum target,
    509         GLenum internalformat,
    510         GLenum pname,
    511         GLsizei bufSize,
    512         GLint* params );
    513