Home | History | Annotate | Download | only in cairo
      1 /*
      2  *  Copyright (C) 2010 Tieto Corporation.
      3  *  Copyright (C) 2011 Igalia S.L.
      4  *
      5  *  This library is free software; you can redistribute it and/or
      6  *  modify it under the terms of the GNU Lesser General Public
      7  *  License as published by the Free Software Foundation; either
      8  *  version 2.1 of the License, or (at your option) any later version.
      9  *
     10  *  This library is distributed in the hope that it will be useful,
     11  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
     12  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     13  *  Lesser General Public License for more details.
     14  *
     15  *  You should have received a copy of the GNU Lesser General Public
     16  *  License along with this library; if not, write to the Free Software
     17  *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
     18  */
     19 
     20 #include <GL/gl.h>
     21 
     22 typedef struct _OpenGLFunctionTable OpenGLFunctionTable;
     23 
     24 namespace WebCore {
     25 bool initializeOpenGLShims();
     26 OpenGLFunctionTable* openGLFunctionTable();
     27 }
     28 
     29 typedef void (*glActiveTextureType) (GLenum);
     30 typedef void (*glAttachShaderType) (GLuint, GLuint);
     31 typedef void (*glBindAttribLocationType) (GLuint, GLuint, const char*);
     32 typedef void (*glBindBufferType) (GLenum, GLuint);
     33 typedef void (*glBindFramebufferType) (GLenum, GLuint);
     34 typedef void (*glBindRenderbufferType) (GLenum, GLuint);
     35 typedef void (*glBlendColorType) (GLclampf, GLclampf, GLclampf, GLclampf);
     36 typedef void (*glBlendEquationType) (GLenum);
     37 typedef void (*glBlendEquationSeparateType)(GLenum, GLenum);
     38 typedef void (*glBlendFuncSeparateType)(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
     39 typedef void (*glBlitFramebufferType) (GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLbitfield, GLenum);
     40 typedef void (*glBufferDataType) (GLenum, GLsizeiptr, const GLvoid*, GLenum);
     41 typedef void (*glBufferSubDataType) (GLenum, GLintptr, GLsizeiptr, const GLvoid*);
     42 typedef GLenum (*glCheckFramebufferStatusType) (GLenum);
     43 typedef void (*glCompileShaderType) (GLuint);
     44 typedef GLuint (*glCreateProgramType) ();
     45 typedef GLuint (*glCreateShaderType) (GLenum);
     46 typedef void (*glDeleteBuffersType) (GLsizei, const GLuint*);
     47 typedef void (*glDeleteFramebuffersType) (GLsizei n, const GLuint*);
     48 typedef void (*glDeleteProgramType) (GLuint);
     49 typedef void (*glDeleteRenderbuffersType) (GLsizei n, const GLuint*);
     50 typedef void (*glDeleteShaderType) (GLuint);
     51 typedef void (*glDetachShaderType) (GLuint, GLuint);
     52 typedef void (*glDisableVertexAttribArrayType) (GLuint);
     53 typedef void (*glEnableVertexAttribArrayType) (GLuint);
     54 typedef void (*glFramebufferRenderbufferType) (GLenum, GLenum, GLenum, GLuint);
     55 typedef void (*glFramebufferTexture2DType) (GLenum, GLenum, GLenum, GLuint, GLint);
     56 typedef void (*glGenBuffersType) (GLsizei, GLuint*);
     57 typedef void (*glGenerateMipmapType) (GLenum target);
     58 typedef void (*glGenFramebuffersType) (GLsizei, GLuint*);
     59 typedef void (*glGenRenderbuffersType) (GLsizei, GLuint*);
     60 typedef void (*glGetActiveAttribType) (GLuint, GLuint, GLsizei, GLsizei*, GLint*, GLenum*, GLchar*);
     61 typedef void (*glGetActiveUniformType) (GLuint, GLuint, GLsizei, GLsizei*, GLint*, GLenum*, GLchar*);
     62 typedef void (*glGetAttachedShadersType) (GLuint, GLsizei, GLsizei*, GLuint*);
     63 typedef GLint (*glGetAttribLocationType) (GLuint, const char*);
     64 typedef void (*glGetBufferParameterivType) (GLenum, GLenum, GLint*);
     65 typedef void (*glGetFramebufferAttachmentParameterivType) (GLenum, GLenum, GLenum, GLint* params);
     66 typedef void (*glGetProgramInfoLogType) (GLuint, GLsizei, GLsizei*, char*);
     67 typedef void (*glGetProgramivType) (GLuint, GLenum, GLint*);
     68 typedef void (*glGetRenderbufferParameterivType) (GLenum, GLenum, GLint*);
     69 typedef void (*glGetShaderInfoLogType) (GLuint, GLsizei, GLsizei*, char*);
     70 typedef void (*glGetShaderivType) (GLuint, GLenum, GLint*);
     71 typedef void (*glGetShaderSourceType) (GLuint, GLsizei, GLsizei*, char*);
     72 typedef GLint (*glGetUniformLocationType) (GLuint, const char*);
     73 typedef void (*glGetUniformfvType) (GLuint, GLint, GLfloat*);
     74 typedef void (*glGetUniformivType) (GLuint, GLint, GLint*);
     75 typedef void (*glGetVertexAttribfvType) (GLuint, GLenum, GLfloat*);
     76 typedef void (*glGetVertexAttribivType) (GLuint, GLenum, GLint*);
     77 typedef void (*glGetVertexAttribPointervType) (GLuint, GLenum, GLvoid**);
     78 typedef GLboolean (*glIsBufferType) (GLuint);
     79 typedef GLboolean (*glIsFramebufferType) (GLuint);
     80 typedef GLboolean (*glIsProgramType) (GLuint);
     81 typedef GLboolean (*glIsRenderbufferType) (GLuint);
     82 typedef GLboolean (*glIsShaderType) (GLuint);
     83 typedef void (*glLinkProgramType) (GLuint);
     84 typedef void (*glRenderbufferStorageType) (GLenum, GLenum, GLsizei, GLsizei);
     85 typedef void (*glRenderbufferStorageMultisampleType) (GLenum, GLsizei, GLenum, GLsizei, GLsizei);
     86 typedef void (*glSampleCoverageType) (GLclampf, GLboolean);
     87 typedef void (*glShaderSourceType) (GLuint, GLsizei, const char**, const GLint*);
     88 typedef void (*glStencilFuncSeparateType) (GLenum, GLenum, GLint, GLuint);
     89 typedef void (*glStencilMaskSeparateType) (GLenum, GLuint);
     90 typedef void (*glStencilOpSeparateType) (GLenum, GLenum, GLenum, GLenum);
     91 typedef void (*glUniform1fType) (GLint, GLfloat);
     92 typedef void (*glUniform1fvType) (GLint, GLsizei, const GLfloat*);
     93 typedef void (*glUniform1iType) (GLint, GLint);
     94 typedef void (*glUniform1ivType) (GLint, GLsizei, const GLint*);
     95 typedef void (*glUniform2fType) (GLint, GLfloat, GLfloat);
     96 typedef void (*glUniform2fvType) (GLint, GLsizei, const GLfloat*);
     97 typedef void (*glUniform2iType) (GLint, GLint, GLint);
     98 typedef void (*glUniform2ivType) (GLint, GLsizei, const GLint*);
     99 typedef void (*glUniform3fType) (GLint, GLfloat, GLfloat, GLfloat);
    100 typedef void (*glUniform3fvType) (GLint, GLsizei, const GLfloat*);
    101 typedef void (*glUniform3iType) (GLint, GLint, GLint, GLint);
    102 typedef void (*glUniform3ivType) (GLint, GLsizei, const GLint*);
    103 typedef void (*glUniform4fType) (GLint, GLfloat, GLfloat, GLfloat, GLfloat);
    104 typedef void (*glUniform4fvType) (GLint, GLsizei, const GLfloat*);
    105 typedef void (*glUniform4iType) (GLint, GLint, GLint, GLint, GLint);
    106 typedef void (*glUniform4ivType) (GLint, GLsizei, const GLint*);
    107 typedef void (*glUniformMatrix2fvType) (GLint, GLsizei, GLboolean, const GLfloat*);
    108 typedef void (*glUniformMatrix3fvType) (GLint, GLsizei, GLboolean, const GLfloat*);
    109 typedef void (*glUniformMatrix4fvType) (GLint, GLsizei, GLboolean, const GLfloat*);
    110 typedef void (*glUseProgramType) (GLuint);
    111 typedef void (*glValidateProgramType) (GLuint);
    112 typedef void (*glVertexAttrib1fType) (GLuint, const GLfloat);
    113 typedef void (*glVertexAttrib1fvType) (GLuint, const GLfloat*);
    114 typedef void (*glVertexAttrib2fType) (GLuint, const GLfloat, const GLfloat);
    115 typedef void (*glVertexAttrib2fvType) (GLuint, const GLfloat*);
    116 typedef void (*glVertexAttrib3fType) (GLuint, const GLfloat, const GLfloat, const GLfloat);
    117 typedef void (*glVertexAttrib3fvType) (GLuint, const GLfloat*);
    118 typedef void (*glVertexAttrib4fType) (GLuint, const GLfloat, const GLfloat, const GLfloat, const GLfloat);
    119 typedef void (*glVertexAttrib4fvType) (GLuint, const GLfloat*);
    120 typedef void (*glVertexAttribPointerType) (GLuint, GLint, GLenum, GLboolean, GLsizei, const GLvoid*);
    121 
    122 #define FUNCTION_TABLE_ENTRY(FunctionName) FunctionName##Type FunctionName
    123 
    124 typedef struct _OpenGLFunctionTable {
    125     FUNCTION_TABLE_ENTRY(glActiveTexture);
    126     FUNCTION_TABLE_ENTRY(glAttachShader);
    127     FUNCTION_TABLE_ENTRY(glBindAttribLocation);
    128     FUNCTION_TABLE_ENTRY(glBindBuffer);
    129     FUNCTION_TABLE_ENTRY(glBindFramebuffer);
    130     FUNCTION_TABLE_ENTRY(glBindRenderbuffer);
    131     FUNCTION_TABLE_ENTRY(glBlendColor);
    132     FUNCTION_TABLE_ENTRY(glBlendEquation);
    133     FUNCTION_TABLE_ENTRY(glBlendEquationSeparate);
    134     FUNCTION_TABLE_ENTRY(glBlendFuncSeparate);
    135     FUNCTION_TABLE_ENTRY(glBlitFramebuffer);
    136     FUNCTION_TABLE_ENTRY(glBufferData);
    137     FUNCTION_TABLE_ENTRY(glBufferSubData);
    138     FUNCTION_TABLE_ENTRY(glCheckFramebufferStatus);
    139     FUNCTION_TABLE_ENTRY(glCompileShader);
    140     FUNCTION_TABLE_ENTRY(glCreateProgram);
    141     FUNCTION_TABLE_ENTRY(glCreateShader);
    142     FUNCTION_TABLE_ENTRY(glDeleteBuffers);
    143     FUNCTION_TABLE_ENTRY(glDeleteFramebuffers);
    144     FUNCTION_TABLE_ENTRY(glDeleteProgram);
    145     FUNCTION_TABLE_ENTRY(glDeleteRenderbuffers);
    146     FUNCTION_TABLE_ENTRY(glDeleteShader);
    147     FUNCTION_TABLE_ENTRY(glDetachShader);
    148     FUNCTION_TABLE_ENTRY(glDisableVertexAttribArray);
    149     FUNCTION_TABLE_ENTRY(glEnableVertexAttribArray);
    150     FUNCTION_TABLE_ENTRY(glFramebufferRenderbuffer);
    151     FUNCTION_TABLE_ENTRY(glFramebufferTexture2D);
    152     FUNCTION_TABLE_ENTRY(glGenBuffers);
    153     FUNCTION_TABLE_ENTRY(glGenerateMipmap);
    154     FUNCTION_TABLE_ENTRY(glGenFramebuffers);
    155     FUNCTION_TABLE_ENTRY(glGenRenderbuffers);
    156     FUNCTION_TABLE_ENTRY(glGetActiveAttrib);
    157     FUNCTION_TABLE_ENTRY(glGetActiveUniform);
    158     FUNCTION_TABLE_ENTRY(glGetAttachedShaders);
    159     FUNCTION_TABLE_ENTRY(glGetAttribLocation);
    160     FUNCTION_TABLE_ENTRY(glGetBufferParameteriv);
    161     FUNCTION_TABLE_ENTRY(glGetFramebufferAttachmentParameteriv);
    162     FUNCTION_TABLE_ENTRY(glGetProgramInfoLog);
    163     FUNCTION_TABLE_ENTRY(glGetProgramiv);
    164     FUNCTION_TABLE_ENTRY(glGetRenderbufferParameteriv);
    165     FUNCTION_TABLE_ENTRY(glGetShaderInfoLog);
    166     FUNCTION_TABLE_ENTRY(glGetShaderiv);
    167     FUNCTION_TABLE_ENTRY(glGetShaderSource);
    168     FUNCTION_TABLE_ENTRY(glGetUniformfv);
    169     FUNCTION_TABLE_ENTRY(glGetUniformiv);
    170     FUNCTION_TABLE_ENTRY(glGetUniformLocation);
    171     FUNCTION_TABLE_ENTRY(glGetVertexAttribfv);
    172     FUNCTION_TABLE_ENTRY(glGetVertexAttribiv);
    173     FUNCTION_TABLE_ENTRY(glGetVertexAttribPointerv);
    174     FUNCTION_TABLE_ENTRY(glIsBuffer);
    175     FUNCTION_TABLE_ENTRY(glIsFramebuffer);
    176     FUNCTION_TABLE_ENTRY(glIsProgram);
    177     FUNCTION_TABLE_ENTRY(glIsRenderbuffer);
    178     FUNCTION_TABLE_ENTRY(glIsShader);
    179     FUNCTION_TABLE_ENTRY(glLinkProgram);
    180     FUNCTION_TABLE_ENTRY(glRenderbufferStorage);
    181     FUNCTION_TABLE_ENTRY(glRenderbufferStorageMultisample);
    182     FUNCTION_TABLE_ENTRY(glSampleCoverage);
    183     FUNCTION_TABLE_ENTRY(glShaderSource);
    184     FUNCTION_TABLE_ENTRY(glStencilFuncSeparate);
    185     FUNCTION_TABLE_ENTRY(glStencilMaskSeparate);
    186     FUNCTION_TABLE_ENTRY(glStencilOpSeparate);
    187     FUNCTION_TABLE_ENTRY(glUniform1f);
    188     FUNCTION_TABLE_ENTRY(glUniform1fv);
    189     FUNCTION_TABLE_ENTRY(glUniform1i);
    190     FUNCTION_TABLE_ENTRY(glUniform1iv);
    191     FUNCTION_TABLE_ENTRY(glUniform2f);
    192     FUNCTION_TABLE_ENTRY(glUniform2fv);
    193     FUNCTION_TABLE_ENTRY(glUniform2i);
    194     FUNCTION_TABLE_ENTRY(glUniform2iv);
    195     FUNCTION_TABLE_ENTRY(glUniform3f);
    196     FUNCTION_TABLE_ENTRY(glUniform3fv);
    197     FUNCTION_TABLE_ENTRY(glUniform3i);
    198     FUNCTION_TABLE_ENTRY(glUniform3iv);
    199     FUNCTION_TABLE_ENTRY(glUniform4f);
    200     FUNCTION_TABLE_ENTRY(glUniform4fv);
    201     FUNCTION_TABLE_ENTRY(glUniform4i);
    202     FUNCTION_TABLE_ENTRY(glUniform4iv);
    203     FUNCTION_TABLE_ENTRY(glUniformMatrix2fv);
    204     FUNCTION_TABLE_ENTRY(glUniformMatrix3fv);
    205     FUNCTION_TABLE_ENTRY(glUniformMatrix4fv);
    206     FUNCTION_TABLE_ENTRY(glUseProgram);
    207     FUNCTION_TABLE_ENTRY(glValidateProgram);
    208     FUNCTION_TABLE_ENTRY(glVertexAttrib1f);
    209     FUNCTION_TABLE_ENTRY(glVertexAttrib1fv);
    210     FUNCTION_TABLE_ENTRY(glVertexAttrib2f);
    211     FUNCTION_TABLE_ENTRY(glVertexAttrib2fv);
    212     FUNCTION_TABLE_ENTRY(glVertexAttrib3f);
    213     FUNCTION_TABLE_ENTRY(glVertexAttrib3fv);
    214     FUNCTION_TABLE_ENTRY(glVertexAttrib4f);
    215     FUNCTION_TABLE_ENTRY(glVertexAttrib4fv);
    216     FUNCTION_TABLE_ENTRY(glVertexAttribPointer);
    217 } OpenGLFunctionTable;
    218 
    219 // We disable the shims for OpenGLShims.cpp, so that we can set them.
    220 #ifndef DISABLE_SHIMS
    221 #define LOOKUP_GL_FUNCTION(Function) WebCore::openGLFunctionTable()->Function
    222 #define glActiveTexture                        LOOKUP_GL_FUNCTION(glActiveTexture)
    223 #define glAttachShader                         LOOKUP_GL_FUNCTION(glAttachShader)
    224 #define glBindAttribLocation                   LOOKUP_GL_FUNCTION(glBindAttribLocation)
    225 #define glBindBuffer                           LOOKUP_GL_FUNCTION(glBindBuffer)
    226 #define glBindFramebufferEXT                   LOOKUP_GL_FUNCTION(glBindFramebuffer)
    227 #define glBindRenderbufferEXT                  LOOKUP_GL_FUNCTION(glBindRenderbuffer)
    228 #define glBlendColor                           LOOKUP_GL_FUNCTION(glBlendColor)
    229 #define glBlendEquation                        LOOKUP_GL_FUNCTION(glBlendEquation)
    230 #define glBlendEquationSeparate                LOOKUP_GL_FUNCTION(glBlendEquationSeparate)
    231 #define glBlendFuncSeparate                    LOOKUP_GL_FUNCTION(glBlendFuncSeparate)
    232 #define glBlitFramebufferEXT                   LOOKUP_GL_FUNCTION(glBlitFramebuffer)
    233 #define glBufferData                           LOOKUP_GL_FUNCTION(glBufferData)
    234 #define glBufferSubData                        LOOKUP_GL_FUNCTION(glBufferSubData)
    235 #define glCheckFramebufferStatusEXT            LOOKUP_GL_FUNCTION(glCheckFramebufferStatus)
    236 #define glCompileShader                        LOOKUP_GL_FUNCTION(glCompileShader)
    237 #define glCreateProgram                        LOOKUP_GL_FUNCTION(glCreateProgram)
    238 #define glCreateShader                         LOOKUP_GL_FUNCTION(glCreateShader)
    239 #define glDeleteBuffers                        LOOKUP_GL_FUNCTION(glDeleteBuffers)
    240 #define glDeleteFramebuffersEXT                LOOKUP_GL_FUNCTION(glDeleteFramebuffers)
    241 #define glDeleteProgram                        LOOKUP_GL_FUNCTION(glDeleteProgram)
    242 #define glDeleteRenderbuffersEXT               LOOKUP_GL_FUNCTION(glDeleteRenderbuffers)
    243 #define glDeleteShader                         LOOKUP_GL_FUNCTION(glDeleteShader)
    244 #define glDetachShader                         LOOKUP_GL_FUNCTION(glDetachShader)
    245 #define glDisableVertexAttribArray             LOOKUP_GL_FUNCTION(glDisableVertexAttribArray)
    246 #define glEnableVertexAttribArray              LOOKUP_GL_FUNCTION(glEnableVertexAttribArray)
    247 #define glFramebufferRenderbufferEXT           LOOKUP_GL_FUNCTION(glFramebufferRenderbuffer)
    248 #define glFramebufferTexture2DEXT              LOOKUP_GL_FUNCTION(glFramebufferTexture2D)
    249 #define glGenBuffers                           LOOKUP_GL_FUNCTION(glGenBuffers)
    250 #define glGenerateMipmapEXT                    LOOKUP_GL_FUNCTION(glGenerateMipmap)
    251 #define glGenFramebuffersEXT                   LOOKUP_GL_FUNCTION(glGenFramebuffers)
    252 #define glGenRenderbuffersEXT                  LOOKUP_GL_FUNCTION(glGenRenderbuffers)
    253 #define glGetActiveAttrib                      LOOKUP_GL_FUNCTION(glGetActiveAttrib)
    254 #define glGetActiveUniform                     LOOKUP_GL_FUNCTION(glGetActiveUniform)
    255 #define glGetAttachedShaders                   LOOKUP_GL_FUNCTION(glGetAttachedShaders)
    256 #define glGetAttribLocation                    LOOKUP_GL_FUNCTION(glGetAttribLocation)
    257 #define glGetBufferParameteriv                 LOOKUP_GL_FUNCTION(glGetBufferParameteriv)
    258 #define glGetBufferParameterivEXT              LOOKUP_GL_FUNCTION(glGetBufferParameteriv)
    259 #define glGetFramebufferAttachmentParameterivEXT LOOKUP_GL_FUNCTION(glGetFramebufferAttachmentParameteriv)
    260 #define glGetProgramInfoLog                    LOOKUP_GL_FUNCTION(glGetProgramInfoLog)
    261 #define glGetProgramiv                         LOOKUP_GL_FUNCTION(glGetProgramiv)
    262 #define glGetRenderbufferParameterivEXT        LOOKUP_GL_FUNCTION(glGetRenderbufferParameteriv)
    263 #define glGetShaderInfoLog                     LOOKUP_GL_FUNCTION(glGetShaderInfoLog)
    264 #define glGetShaderiv                          LOOKUP_GL_FUNCTION(glGetShaderiv)
    265 #define glGetShaderSource                      LOOKUP_GL_FUNCTION(glGetShaderSource)
    266 #define glGetUniformfv                         LOOKUP_GL_FUNCTION(glGetUniformfv)
    267 #define glGetUniformiv                         LOOKUP_GL_FUNCTION(glGetUniformiv)
    268 #define glGetUniformLocation                   LOOKUP_GL_FUNCTION(glGetUniformLocation)
    269 #define glGetVertexAttribfv                    LOOKUP_GL_FUNCTION(glGetVertexAttribfv)
    270 #define glGetVertexAttribiv                    LOOKUP_GL_FUNCTION(glGetVertexAttribiv)
    271 #define glGetVertexAttribPointerv              LOOKUP_GL_FUNCTION(glGetVertexAttribPointerv)
    272 #define glIsBuffer                             LOOKUP_GL_FUNCTION(glIsBuffer)
    273 #define glIsFramebufferEXT                     LOOKUP_GL_FUNCTION(glIsFramebuffer)
    274 #define glIsProgram                            LOOKUP_GL_FUNCTION(glIsProgram)
    275 #define glIsRenderbufferEXT                    LOOKUP_GL_FUNCTION(glIsRenderbuffer)
    276 #define glIsShader                             LOOKUP_GL_FUNCTION(glIsShader)
    277 #define glLinkProgram                          LOOKUP_GL_FUNCTION(glLinkProgram)
    278 #define glRenderbufferStorageEXT               LOOKUP_GL_FUNCTION(glRenderbufferStorage)
    279 #define glRenderbufferStorageMultisampleEXT    LOOKUP_GL_FUNCTION(glRenderbufferStorageMultisample)
    280 #define glSampleCoverage                       LOOKUP_GL_FUNCTION(glSampleCoverage)
    281 #define glShaderSource                         LOOKUP_GL_FUNCTION(glShaderSource)
    282 #define glStencilFuncSeparate                  LOOKUP_GL_FUNCTION(glStencilFuncSeparate)
    283 #define glStencilMaskSeparate                  LOOKUP_GL_FUNCTION(glStencilMaskSeparate)
    284 #define glStencilOpSeparate                    LOOKUP_GL_FUNCTION(glStencilOpSeparate)
    285 #define glUniform1f                            LOOKUP_GL_FUNCTION(glUniform1f)
    286 #define glUniform1fv                           LOOKUP_GL_FUNCTION(glUniform1fv)
    287 #define glUniform1i                            LOOKUP_GL_FUNCTION(glUniform1i)
    288 #define glUniform1iv                           LOOKUP_GL_FUNCTION(glUniform1iv)
    289 #define glUniform2f                            LOOKUP_GL_FUNCTION(glUniform2f)
    290 #define glUniform2fv                           LOOKUP_GL_FUNCTION(glUniform2fv)
    291 #define glUniform2i                            LOOKUP_GL_FUNCTION(glUniform2i)
    292 #define glUniform2iv                           LOOKUP_GL_FUNCTION(glUniform2iv)
    293 #define glUniform3f                            LOOKUP_GL_FUNCTION(glUniform3f)
    294 #define glUniform3fv                           LOOKUP_GL_FUNCTION(glUniform3fv)
    295 #define glUniform3i                            LOOKUP_GL_FUNCTION(glUniform3i)
    296 #define glUniform3iv                           LOOKUP_GL_FUNCTION(glUniform3iv)
    297 #define glUniform4f                            LOOKUP_GL_FUNCTION(glUniform4f)
    298 #define glUniform4fv                           LOOKUP_GL_FUNCTION(glUniform4fv)
    299 #define glUniform4i                            LOOKUP_GL_FUNCTION(glUniform4i)
    300 #define glUniform4iv                           LOOKUP_GL_FUNCTION(glUniform4iv)
    301 #define glUniformMatrix2fv                     LOOKUP_GL_FUNCTION(glUniformMatrix2fv)
    302 #define glUniformMatrix3fv                     LOOKUP_GL_FUNCTION(glUniformMatrix3fv)
    303 #define glUniformMatrix4fv                     LOOKUP_GL_FUNCTION(glUniformMatrix4fv)
    304 #define glUseProgram                           LOOKUP_GL_FUNCTION(glUseProgram)
    305 #define glValidateProgram                      LOOKUP_GL_FUNCTION(glValidateProgram)
    306 #define glVertexAttrib1f                       LOOKUP_GL_FUNCTION(glVertexAttrib1f)
    307 #define glVertexAttrib1fv                      LOOKUP_GL_FUNCTION(glVertexAttrib1fv)
    308 #define glVertexAttrib2f                       LOOKUP_GL_FUNCTION(glVertexAttrib2f)
    309 #define glVertexAttrib2fv                      LOOKUP_GL_FUNCTION(glVertexAttrib2fv)
    310 #define glVertexAttrib3f                       LOOKUP_GL_FUNCTION(glVertexAttrib3f)
    311 #define glVertexAttrib3fv                      LOOKUP_GL_FUNCTION(glVertexAttrib3fv)
    312 #define glVertexAttrib4f                       LOOKUP_GL_FUNCTION(glVertexAttrib4f)
    313 #define glVertexAttrib4fv                      LOOKUP_GL_FUNCTION(glVertexAttrib4fv)
    314 #define glVertexAttribPointer                  LOOKUP_GL_FUNCTION(glVertexAttribPointer)
    315 #endif
    316