dispatch_sanity test: add version to function list
authorJordan Justen <jordan.l.justen@intel.com>
Wed, 17 Oct 2012 03:44:40 +0000 (20:44 -0700)
committerJordan Justen <jordan.l.justen@intel.com>
Sat, 3 Nov 2012 17:54:41 +0000 (10:54 -0700)
This will be used by GL CORE contexts to differentiate functions that
can be set to nop from functions that are required for a particular
context version.

Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Paul Berry <stereotype441@gmail.com>
src/mesa/main/tests/dispatch_sanity.cpp

index fadf2959fec2841511c4cfba41bb4b158a8e3430..1233b04ae8857c3977fea9f3586528a0148f3718 100644 (file)
@@ -69,6 +69,7 @@ extern "C" {
 
 struct function {
    const char *name;
+   unsigned int Version;
    int offset;
 };
 
@@ -202,492 +203,492 @@ TEST_F(DispatchSanity_test, GLES3)
 
 #if FEATURE_ES1
 const struct function gles11_functions_possible[] = {
-   { "glActiveTexture", _gloffset_ActiveTextureARB },
-   { "glAlphaFunc", _gloffset_AlphaFunc },
-   { "glAlphaFuncx", -1 },
-   { "glBindBuffer", -1 },
-   { "glBindFramebufferOES", -1 },
-   { "glBindRenderbufferOES", -1 },
-   { "glBindTexture", _gloffset_BindTexture },
-   { "glBlendEquationOES", _gloffset_BlendEquation },
-   { "glBlendEquationSeparateOES", -1 },
-   { "glBlendFunc", _gloffset_BlendFunc },
-   { "glBlendFuncSeparateOES", -1 },
-   { "glBufferData", -1 },
-   { "glBufferSubData", -1 },
-   { "glCheckFramebufferStatusOES", -1 },
-   { "glClear", _gloffset_Clear },
-   { "glClearColor", _gloffset_ClearColor },
-   { "glClearColorx", -1 },
-   { "glClearDepthf", -1 },
-   { "glClearDepthx", -1 },
-   { "glClearStencil", _gloffset_ClearStencil },
-   { "glClientActiveTexture", _gloffset_ClientActiveTextureARB },
-   { "glClipPlanef", -1 },
-   { "glClipPlanex", -1 },
-   { "glColor4f", _gloffset_Color4f },
-   { "glColor4ub", _gloffset_Color4ub },
-   { "glColor4x", -1 },
-   { "glColorMask", _gloffset_ColorMask },
-   { "glColorPointer", _gloffset_ColorPointer },
-   { "glCompressedTexImage2D", -1 },
-   { "glCompressedTexSubImage2D", -1 },
-   { "glCopyTexImage2D", _gloffset_CopyTexImage2D },
-   { "glCopyTexSubImage2D", _gloffset_CopyTexSubImage2D },
-   { "glCullFace", _gloffset_CullFace },
-   { "glDeleteBuffers", -1 },
-   { "glDeleteFramebuffersOES", -1 },
-   { "glDeleteRenderbuffersOES", -1 },
-   { "glDeleteTextures", _gloffset_DeleteTextures },
-   { "glDepthFunc", _gloffset_DepthFunc },
-   { "glDepthMask", _gloffset_DepthMask },
-   { "glDepthRangef", -1 },
-   { "glDepthRangex", -1 },
-   { "glDisable", _gloffset_Disable },
-   { "glDisableClientState", _gloffset_DisableClientState },
-   { "glDrawArrays", _gloffset_DrawArrays },
-   { "glDrawElements", _gloffset_DrawElements },
-   { "glDrawTexfOES", -1 },
-   { "glDrawTexfvOES", -1 },
-   { "glDrawTexiOES", -1 },
-   { "glDrawTexivOES", -1 },
-   { "glDrawTexsOES", -1 },
-   { "glDrawTexsvOES", -1 },
-   { "glDrawTexxOES", -1 },
-   { "glDrawTexxvOES", -1 },
-   { "glEGLImageTargetRenderbufferStorageOES", -1 },
-   { "glEGLImageTargetTexture2DOES", -1 },
-   { "glEnable", _gloffset_Enable },
-   { "glEnableClientState", _gloffset_EnableClientState },
-   { "glFinish", _gloffset_Finish },
-   { "glFlush", _gloffset_Flush },
-   { "glFlushMappedBufferRangeEXT", -1 },
-   { "glFogf", _gloffset_Fogf },
-   { "glFogfv", _gloffset_Fogfv },
-   { "glFogx", -1 },
-   { "glFogxv", -1 },
-   { "glFramebufferRenderbufferOES", -1 },
-   { "glFramebufferTexture2DOES", -1 },
-   { "glFrontFace", _gloffset_FrontFace },
-   { "glFrustumf", -1 },
-   { "glFrustumx", -1 },
-   { "glGenBuffers", -1 },
-   { "glGenFramebuffersOES", -1 },
-   { "glGenRenderbuffersOES", -1 },
-   { "glGenTextures", _gloffset_GenTextures },
-   { "glGenerateMipmapOES", -1 },
-   { "glGetBooleanv", _gloffset_GetBooleanv },
-   { "glGetBufferParameteriv", -1 },
-   { "glGetBufferPointervOES", -1 },
-   { "glGetClipPlanef", -1 },
-   { "glGetClipPlanex", -1 },
-   { "glGetError", _gloffset_GetError },
-   { "glGetFixedv", -1 },
-   { "glGetFloatv", _gloffset_GetFloatv },
-   { "glGetFramebufferAttachmentParameterivOES", -1 },
-   { "glGetIntegerv", _gloffset_GetIntegerv },
-   { "glGetLightfv", _gloffset_GetLightfv },
-   { "glGetLightxv", -1 },
-   { "glGetMaterialfv", _gloffset_GetMaterialfv },
-   { "glGetMaterialxv", -1 },
-   { "glGetPointerv", _gloffset_GetPointerv },
-   { "glGetRenderbufferParameterivOES", -1 },
-   { "glGetString", _gloffset_GetString },
-   { "glGetTexEnvfv", _gloffset_GetTexEnvfv },
-   { "glGetTexEnviv", _gloffset_GetTexEnviv },
-   { "glGetTexEnvxv", -1 },
-   { "glGetTexGenfvOES", _gloffset_GetTexGenfv },
-   { "glGetTexGenivOES", _gloffset_GetTexGeniv },
-   { "glGetTexGenxvOES", -1 },
-   { "glGetTexParameterfv", _gloffset_GetTexParameterfv },
-   { "glGetTexParameteriv", _gloffset_GetTexParameteriv },
-   { "glGetTexParameterxv", -1 },
-   { "glHint", _gloffset_Hint },
-   { "glIsBuffer", -1 },
-   { "glIsEnabled", _gloffset_IsEnabled },
-   { "glIsFramebufferOES", -1 },
-   { "glIsRenderbufferOES", -1 },
-   { "glIsTexture", _gloffset_IsTexture },
-   { "glLightModelf", _gloffset_LightModelf },
-   { "glLightModelfv", _gloffset_LightModelfv },
-   { "glLightModelx", -1 },
-   { "glLightModelxv", -1 },
-   { "glLightf", _gloffset_Lightf },
-   { "glLightfv", _gloffset_Lightfv },
-   { "glLightx", -1 },
-   { "glLightxv", -1 },
-   { "glLineWidth", _gloffset_LineWidth },
-   { "glLineWidthx", -1 },
-   { "glLoadIdentity", _gloffset_LoadIdentity },
-   { "glLoadMatrixf", _gloffset_LoadMatrixf },
-   { "glLoadMatrixx", -1 },
-   { "glLogicOp", _gloffset_LogicOp },
-   { "glMapBufferOES", -1 },
-   { "glMapBufferRangeEXT", -1 },
-   { "glMaterialf", _gloffset_Materialf },
-   { "glMaterialfv", _gloffset_Materialfv },
-   { "glMaterialx", -1 },
-   { "glMaterialxv", -1 },
-   { "glMatrixMode", _gloffset_MatrixMode },
-   { "glMultMatrixf", _gloffset_MultMatrixf },
-   { "glMultMatrixx", -1 },
-   { "glMultiDrawArraysEXT", -1 },
-   { "glMultiDrawElementsEXT", -1 },
-   { "glMultiTexCoord4f", _gloffset_MultiTexCoord4fARB },
-   { "glMultiTexCoord4x", -1 },
-   { "glNormal3f", _gloffset_Normal3f },
-   { "glNormal3x", -1 },
-   { "glNormalPointer", _gloffset_NormalPointer },
-   { "glOrthof", -1 },
-   { "glOrthox", -1 },
-   { "glPixelStorei", _gloffset_PixelStorei },
-   { "glPointParameterf", -1 },
-   { "glPointParameterfv", -1 },
-   { "glPointParameterx", -1 },
-   { "glPointParameterxv", -1 },
-   { "glPointSize", _gloffset_PointSize },
-   { "glPointSizePointerOES", -1 },
-   { "glPointSizex", -1 },
-   { "glPolygonOffset", _gloffset_PolygonOffset },
-   { "glPolygonOffsetx", -1 },
-   { "glPopMatrix", _gloffset_PopMatrix },
-   { "glPushMatrix", _gloffset_PushMatrix },
-   { "glQueryMatrixxOES", -1 },
-   { "glReadPixels", _gloffset_ReadPixels },
-   { "glRenderbufferStorageOES", -1 },
-   { "glRotatef", _gloffset_Rotatef },
-   { "glRotatex", -1 },
-   { "glSampleCoverage", -1 },
-   { "glSampleCoveragex", -1 },
-   { "glScalef", _gloffset_Scalef },
-   { "glScalex", -1 },
-   { "glScissor", _gloffset_Scissor },
-   { "glShadeModel", _gloffset_ShadeModel },
-   { "glStencilFunc", _gloffset_StencilFunc },
-   { "glStencilMask", _gloffset_StencilMask },
-   { "glStencilOp", _gloffset_StencilOp },
-   { "glTexCoordPointer", _gloffset_TexCoordPointer },
-   { "glTexEnvf", _gloffset_TexEnvf },
-   { "glTexEnvfv", _gloffset_TexEnvfv },
-   { "glTexEnvi", _gloffset_TexEnvi },
-   { "glTexEnviv", _gloffset_TexEnviv },
-   { "glTexEnvx", -1 },
-   { "glTexEnvxv", -1 },
-   { "glTexGenfOES", _gloffset_TexGenf },
-   { "glTexGenfvOES", _gloffset_TexGenfv },
-   { "glTexGeniOES", _gloffset_TexGeni },
-   { "glTexGenivOES", _gloffset_TexGeniv },
-   { "glTexGenxOES", -1 },
-   { "glTexGenxvOES", -1 },
-   { "glTexImage2D", _gloffset_TexImage2D },
-   { "glTexParameterf", _gloffset_TexParameterf },
-   { "glTexParameterfv", _gloffset_TexParameterfv },
-   { "glTexParameteri", _gloffset_TexParameteri },
-   { "glTexParameteriv", _gloffset_TexParameteriv },
-   { "glTexParameterx", -1 },
-   { "glTexParameterxv", -1 },
-   { "glTexSubImage2D", _gloffset_TexSubImage2D },
-   { "glTranslatef", _gloffset_Translatef },
-   { "glTranslatex", -1 },
-   { "glUnmapBufferOES", -1 },
-   { "glVertexPointer", _gloffset_VertexPointer },
-   { "glViewport", _gloffset_Viewport },
-   { NULL, -1 }
+   { "glActiveTexture", 11, _gloffset_ActiveTextureARB },
+   { "glAlphaFunc", 11, _gloffset_AlphaFunc },
+   { "glAlphaFuncx", 11, -1 },
+   { "glBindBuffer", 11, -1 },
+   { "glBindFramebufferOES", 11, -1 },
+   { "glBindRenderbufferOES", 11, -1 },
+   { "glBindTexture", 11, _gloffset_BindTexture },
+   { "glBlendEquationOES", 11, _gloffset_BlendEquation },
+   { "glBlendEquationSeparateOES", 11, -1 },
+   { "glBlendFunc", 11, _gloffset_BlendFunc },
+   { "glBlendFuncSeparateOES", 11, -1 },
+   { "glBufferData", 11, -1 },
+   { "glBufferSubData", 11, -1 },
+   { "glCheckFramebufferStatusOES", 11, -1 },
+   { "glClear", 11, _gloffset_Clear },
+   { "glClearColor", 11, _gloffset_ClearColor },
+   { "glClearColorx", 11, -1 },
+   { "glClearDepthf", 11, -1 },
+   { "glClearDepthx", 11, -1 },
+   { "glClearStencil", 11, _gloffset_ClearStencil },
+   { "glClientActiveTexture", 11, _gloffset_ClientActiveTextureARB },
+   { "glClipPlanef", 11, -1 },
+   { "glClipPlanex", 11, -1 },
+   { "glColor4f", 11, _gloffset_Color4f },
+   { "glColor4ub", 11, _gloffset_Color4ub },
+   { "glColor4x", 11, -1 },
+   { "glColorMask", 11, _gloffset_ColorMask },
+   { "glColorPointer", 11, _gloffset_ColorPointer },
+   { "glCompressedTexImage2D", 11, -1 },
+   { "glCompressedTexSubImage2D", 11, -1 },
+   { "glCopyTexImage2D", 11, _gloffset_CopyTexImage2D },
+   { "glCopyTexSubImage2D", 11, _gloffset_CopyTexSubImage2D },
+   { "glCullFace", 11, _gloffset_CullFace },
+   { "glDeleteBuffers", 11, -1 },
+   { "glDeleteFramebuffersOES", 11, -1 },
+   { "glDeleteRenderbuffersOES", 11, -1 },
+   { "glDeleteTextures", 11, _gloffset_DeleteTextures },
+   { "glDepthFunc", 11, _gloffset_DepthFunc },
+   { "glDepthMask", 11, _gloffset_DepthMask },
+   { "glDepthRangef", 11, -1 },
+   { "glDepthRangex", 11, -1 },
+   { "glDisable", 11, _gloffset_Disable },
+   { "glDisableClientState", 11, _gloffset_DisableClientState },
+   { "glDrawArrays", 11, _gloffset_DrawArrays },
+   { "glDrawElements", 11, _gloffset_DrawElements },
+   { "glDrawTexfOES", 11, -1 },
+   { "glDrawTexfvOES", 11, -1 },
+   { "glDrawTexiOES", 11, -1 },
+   { "glDrawTexivOES", 11, -1 },
+   { "glDrawTexsOES", 11, -1 },
+   { "glDrawTexsvOES", 11, -1 },
+   { "glDrawTexxOES", 11, -1 },
+   { "glDrawTexxvOES", 11, -1 },
+   { "glEGLImageTargetRenderbufferStorageOES", 11, -1 },
+   { "glEGLImageTargetTexture2DOES", 11, -1 },
+   { "glEnable", 11, _gloffset_Enable },
+   { "glEnableClientState", 11, _gloffset_EnableClientState },
+   { "glFinish", 11, _gloffset_Finish },
+   { "glFlush", 11, _gloffset_Flush },
+   { "glFlushMappedBufferRangeEXT", 11, -1 },
+   { "glFogf", 11, _gloffset_Fogf },
+   { "glFogfv", 11, _gloffset_Fogfv },
+   { "glFogx", 11, -1 },
+   { "glFogxv", 11, -1 },
+   { "glFramebufferRenderbufferOES", 11, -1 },
+   { "glFramebufferTexture2DOES", 11, -1 },
+   { "glFrontFace", 11, _gloffset_FrontFace },
+   { "glFrustumf", 11, -1 },
+   { "glFrustumx", 11, -1 },
+   { "glGenBuffers", 11, -1 },
+   { "glGenFramebuffersOES", 11, -1 },
+   { "glGenRenderbuffersOES", 11, -1 },
+   { "glGenTextures", 11, _gloffset_GenTextures },
+   { "glGenerateMipmapOES", 11, -1 },
+   { "glGetBooleanv", 11, _gloffset_GetBooleanv },
+   { "glGetBufferParameteriv", 11, -1 },
+   { "glGetBufferPointervOES", 11, -1 },
+   { "glGetClipPlanef", 11, -1 },
+   { "glGetClipPlanex", 11, -1 },
+   { "glGetError", 11, _gloffset_GetError },
+   { "glGetFixedv", 11, -1 },
+   { "glGetFloatv", 11, _gloffset_GetFloatv },
+   { "glGetFramebufferAttachmentParameterivOES", 11, -1 },
+   { "glGetIntegerv", 11, _gloffset_GetIntegerv },
+   { "glGetLightfv", 11, _gloffset_GetLightfv },
+   { "glGetLightxv", 11, -1 },
+   { "glGetMaterialfv", 11, _gloffset_GetMaterialfv },
+   { "glGetMaterialxv", 11, -1 },
+   { "glGetPointerv", 11, _gloffset_GetPointerv },
+   { "glGetRenderbufferParameterivOES", 11, -1 },
+   { "glGetString", 11, _gloffset_GetString },
+   { "glGetTexEnvfv", 11, _gloffset_GetTexEnvfv },
+   { "glGetTexEnviv", 11, _gloffset_GetTexEnviv },
+   { "glGetTexEnvxv", 11, -1 },
+   { "glGetTexGenfvOES", 11, _gloffset_GetTexGenfv },
+   { "glGetTexGenivOES", 11, _gloffset_GetTexGeniv },
+   { "glGetTexGenxvOES", 11, -1 },
+   { "glGetTexParameterfv", 11, _gloffset_GetTexParameterfv },
+   { "glGetTexParameteriv", 11, _gloffset_GetTexParameteriv },
+   { "glGetTexParameterxv", 11, -1 },
+   { "glHint", 11, _gloffset_Hint },
+   { "glIsBuffer", 11, -1 },
+   { "glIsEnabled", 11, _gloffset_IsEnabled },
+   { "glIsFramebufferOES", 11, -1 },
+   { "glIsRenderbufferOES", 11, -1 },
+   { "glIsTexture", 11, _gloffset_IsTexture },
+   { "glLightModelf", 11, _gloffset_LightModelf },
+   { "glLightModelfv", 11, _gloffset_LightModelfv },
+   { "glLightModelx", 11, -1 },
+   { "glLightModelxv", 11, -1 },
+   { "glLightf", 11, _gloffset_Lightf },
+   { "glLightfv", 11, _gloffset_Lightfv },
+   { "glLightx", 11, -1 },
+   { "glLightxv", 11, -1 },
+   { "glLineWidth", 11, _gloffset_LineWidth },
+   { "glLineWidthx", 11, -1 },
+   { "glLoadIdentity", 11, _gloffset_LoadIdentity },
+   { "glLoadMatrixf", 11, _gloffset_LoadMatrixf },
+   { "glLoadMatrixx", 11, -1 },
+   { "glLogicOp", 11, _gloffset_LogicOp },
+   { "glMapBufferOES", 11, -1 },
+   { "glMapBufferRangeEXT", 11, -1 },
+   { "glMaterialf", 11, _gloffset_Materialf },
+   { "glMaterialfv", 11, _gloffset_Materialfv },
+   { "glMaterialx", 11, -1 },
+   { "glMaterialxv", 11, -1 },
+   { "glMatrixMode", 11, _gloffset_MatrixMode },
+   { "glMultMatrixf", 11, _gloffset_MultMatrixf },
+   { "glMultMatrixx", 11, -1 },
+   { "glMultiDrawArraysEXT", 11, -1 },
+   { "glMultiDrawElementsEXT", 11, -1 },
+   { "glMultiTexCoord4f", 11, _gloffset_MultiTexCoord4fARB },
+   { "glMultiTexCoord4x", 11, -1 },
+   { "glNormal3f", 11, _gloffset_Normal3f },
+   { "glNormal3x", 11, -1 },
+   { "glNormalPointer", 11, _gloffset_NormalPointer },
+   { "glOrthof", 11, -1 },
+   { "glOrthox", 11, -1 },
+   { "glPixelStorei", 11, _gloffset_PixelStorei },
+   { "glPointParameterf", 11, -1 },
+   { "glPointParameterfv", 11, -1 },
+   { "glPointParameterx", 11, -1 },
+   { "glPointParameterxv", 11, -1 },
+   { "glPointSize", 11, _gloffset_PointSize },
+   { "glPointSizePointerOES", 11, -1 },
+   { "glPointSizex", 11, -1 },
+   { "glPolygonOffset", 11, _gloffset_PolygonOffset },
+   { "glPolygonOffsetx", 11, -1 },
+   { "glPopMatrix", 11, _gloffset_PopMatrix },
+   { "glPushMatrix", 11, _gloffset_PushMatrix },
+   { "glQueryMatrixxOES", 11, -1 },
+   { "glReadPixels", 11, _gloffset_ReadPixels },
+   { "glRenderbufferStorageOES", 11, -1 },
+   { "glRotatef", 11, _gloffset_Rotatef },
+   { "glRotatex", 11, -1 },
+   { "glSampleCoverage", 11, -1 },
+   { "glSampleCoveragex", 11, -1 },
+   { "glScalef", 11, _gloffset_Scalef },
+   { "glScalex", 11, -1 },
+   { "glScissor", 11, _gloffset_Scissor },
+   { "glShadeModel", 11, _gloffset_ShadeModel },
+   { "glStencilFunc", 11, _gloffset_StencilFunc },
+   { "glStencilMask", 11, _gloffset_StencilMask },
+   { "glStencilOp", 11, _gloffset_StencilOp },
+   { "glTexCoordPointer", 11, _gloffset_TexCoordPointer },
+   { "glTexEnvf", 11, _gloffset_TexEnvf },
+   { "glTexEnvfv", 11, _gloffset_TexEnvfv },
+   { "glTexEnvi", 11, _gloffset_TexEnvi },
+   { "glTexEnviv", 11, _gloffset_TexEnviv },
+   { "glTexEnvx", 11, -1 },
+   { "glTexEnvxv", 11, -1 },
+   { "glTexGenfOES", 11, _gloffset_TexGenf },
+   { "glTexGenfvOES", 11, _gloffset_TexGenfv },
+   { "glTexGeniOES", 11, _gloffset_TexGeni },
+   { "glTexGenivOES", 11, _gloffset_TexGeniv },
+   { "glTexGenxOES", 11, -1 },
+   { "glTexGenxvOES", 11, -1 },
+   { "glTexImage2D", 11, _gloffset_TexImage2D },
+   { "glTexParameterf", 11, _gloffset_TexParameterf },
+   { "glTexParameterfv", 11, _gloffset_TexParameterfv },
+   { "glTexParameteri", 11, _gloffset_TexParameteri },
+   { "glTexParameteriv", 11, _gloffset_TexParameteriv },
+   { "glTexParameterx", 11, -1 },
+   { "glTexParameterxv", 11, -1 },
+   { "glTexSubImage2D", 11, _gloffset_TexSubImage2D },
+   { "glTranslatef", 11, _gloffset_Translatef },
+   { "glTranslatex", 11, -1 },
+   { "glUnmapBufferOES", 11, -1 },
+   { "glVertexPointer", 11, _gloffset_VertexPointer },
+   { "glViewport", 11, _gloffset_Viewport },
+   { NULL, 0, -1 }
 };
 #endif /* FEATURE_ES1 */
 
 const struct function gles2_functions_possible[] = {
-   { "glActiveTexture", _gloffset_ActiveTextureARB },
-   { "glAttachShader", -1 },
-   { "glBindAttribLocation", -1 },
-   { "glBindBuffer", -1 },
-   { "glBindFramebuffer", -1 },
-   { "glBindRenderbuffer", -1 },
-   { "glBindTexture", _gloffset_BindTexture },
-   { "glBindVertexArrayOES", -1 },
-   { "glBlendColor", _gloffset_BlendColor },
-   { "glBlendEquation", _gloffset_BlendEquation },
-   { "glBlendEquationSeparate", -1 },
-   { "glBlendFunc", _gloffset_BlendFunc },
-   { "glBlendFuncSeparate", -1 },
-   { "glBufferData", -1 },
-   { "glBufferSubData", -1 },
-   { "glCheckFramebufferStatus", -1 },
-   { "glClear", _gloffset_Clear },
-   { "glClearColor", _gloffset_ClearColor },
-   { "glClearDepthf", -1 },
-   { "glClearStencil", _gloffset_ClearStencil },
-   { "glColorMask", _gloffset_ColorMask },
-   { "glCompileShader", -1 },
-   { "glCompressedTexImage2D", -1 },
-   { "glCompressedTexImage3DOES", -1 },
-   { "glCompressedTexSubImage2D", -1 },
-   { "glCompressedTexSubImage3DOES", -1 },
-   { "glCopyTexImage2D", _gloffset_CopyTexImage2D },
-   { "glCopyTexSubImage2D", _gloffset_CopyTexSubImage2D },
-   { "glCopyTexSubImage3DOES", _gloffset_CopyTexSubImage3D },
-   { "glCreateProgram", -1 },
-   { "glCreateShader", -1 },
-   { "glCullFace", _gloffset_CullFace },
-   { "glDeleteBuffers", -1 },
-   { "glDeleteFramebuffers", -1 },
-   { "glDeleteProgram", -1 },
-   { "glDeleteRenderbuffers", -1 },
-   { "glDeleteShader", -1 },
-   { "glDeleteTextures", _gloffset_DeleteTextures },
-   { "glDeleteVertexArraysOES", -1 },
-   { "glDepthFunc", _gloffset_DepthFunc },
-   { "glDepthMask", _gloffset_DepthMask },
-   { "glDepthRangef", -1 },
-   { "glDetachShader", -1 },
-   { "glDisable", _gloffset_Disable },
-   { "glDisableVertexAttribArray", -1 },
-   { "glDrawArrays", _gloffset_DrawArrays },
-   { "glDrawBuffersNV", -1 },
-   { "glDrawElements", _gloffset_DrawElements },
-   { "glEGLImageTargetRenderbufferStorageOES", -1 },
-   { "glEGLImageTargetTexture2DOES", -1 },
-   { "glEnable", _gloffset_Enable },
-   { "glEnableVertexAttribArray", -1 },
-   { "glFinish", _gloffset_Finish },
-   { "glFlush", _gloffset_Flush },
-   { "glFlushMappedBufferRangeEXT", -1 },
-   { "glFramebufferRenderbuffer", -1 },
-   { "glFramebufferTexture2D", -1 },
-   { "glFramebufferTexture3DOES", -1 },
-   { "glFrontFace", _gloffset_FrontFace },
-   { "glGenBuffers", -1 },
-   { "glGenFramebuffers", -1 },
-   { "glGenRenderbuffers", -1 },
-   { "glGenTextures", _gloffset_GenTextures },
-   { "glGenVertexArraysOES", -1 },
-   { "glGenerateMipmap", -1 },
-   { "glGetActiveAttrib", -1 },
-   { "glGetActiveUniform", -1 },
-   { "glGetAttachedShaders", -1 },
-   { "glGetAttribLocation", -1 },
-   { "glGetBooleanv", _gloffset_GetBooleanv },
-   { "glGetBufferParameteriv", -1 },
-   { "glGetBufferPointervOES", -1 },
-   { "glGetError", _gloffset_GetError },
-   { "glGetFloatv", _gloffset_GetFloatv },
-   { "glGetFramebufferAttachmentParameteriv", -1 },
-   { "glGetIntegerv", _gloffset_GetIntegerv },
-   { "glGetProgramInfoLog", -1 },
-   { "glGetProgramiv", -1 },
-   { "glGetRenderbufferParameteriv", -1 },
-   { "glGetShaderInfoLog", -1 },
-   { "glGetShaderPrecisionFormat", -1 },
-   { "glGetShaderSource", -1 },
-   { "glGetShaderiv", -1 },
-   { "glGetString", _gloffset_GetString },
-   { "glGetTexParameterfv", _gloffset_GetTexParameterfv },
-   { "glGetTexParameteriv", _gloffset_GetTexParameteriv },
-   { "glGetUniformLocation", -1 },
-   { "glGetUniformfv", -1 },
-   { "glGetUniformiv", -1 },
-   { "glGetVertexAttribPointerv", -1 },
-   { "glGetVertexAttribfv", -1 },
-   { "glGetVertexAttribiv", -1 },
-   { "glHint", _gloffset_Hint },
-   { "glIsBuffer", -1 },
-   { "glIsEnabled", _gloffset_IsEnabled },
-   { "glIsFramebuffer", -1 },
-   { "glIsProgram", -1 },
-   { "glIsRenderbuffer", -1 },
-   { "glIsShader", -1 },
-   { "glIsTexture", _gloffset_IsTexture },
-   { "glIsVertexArrayOES", -1 },
-   { "glLineWidth", _gloffset_LineWidth },
-   { "glLinkProgram", -1 },
-   { "glMapBufferOES", -1 },
-   { "glMapBufferRangeEXT", -1 },
-   { "glMultiDrawArraysEXT", -1 },
-   { "glMultiDrawElementsEXT", -1 },
-   { "glPixelStorei", _gloffset_PixelStorei },
-   { "glPolygonOffset", _gloffset_PolygonOffset },
-   { "glReadBufferNV", _gloffset_ReadBuffer },
-   { "glReadPixels", _gloffset_ReadPixels },
-   { "glReleaseShaderCompiler", -1 },
-   { "glRenderbufferStorage", -1 },
-   { "glSampleCoverage", -1 },
-   { "glScissor", _gloffset_Scissor },
-   { "glShaderBinary", -1 },
-   { "glShaderSource", -1 },
-   { "glStencilFunc", _gloffset_StencilFunc },
-   { "glStencilFuncSeparate", -1 },
-   { "glStencilMask", _gloffset_StencilMask },
-   { "glStencilMaskSeparate", -1 },
-   { "glStencilOp", _gloffset_StencilOp },
-   { "glStencilOpSeparate", -1 },
-   { "glTexImage2D", _gloffset_TexImage2D },
-   { "glTexImage3DOES", _gloffset_TexImage3D },
-   { "glTexParameterf", _gloffset_TexParameterf },
-   { "glTexParameterfv", _gloffset_TexParameterfv },
-   { "glTexParameteri", _gloffset_TexParameteri },
-   { "glTexParameteriv", _gloffset_TexParameteriv },
-   { "glTexSubImage2D", _gloffset_TexSubImage2D },
-   { "glTexSubImage3DOES", _gloffset_TexSubImage3D },
-   { "glUniform1f", -1 },
-   { "glUniform1fv", -1 },
-   { "glUniform1i", -1 },
-   { "glUniform1iv", -1 },
-   { "glUniform2f", -1 },
-   { "glUniform2fv", -1 },
-   { "glUniform2i", -1 },
-   { "glUniform2iv", -1 },
-   { "glUniform3f", -1 },
-   { "glUniform3fv", -1 },
-   { "glUniform3i", -1 },
-   { "glUniform3iv", -1 },
-   { "glUniform4f", -1 },
-   { "glUniform4fv", -1 },
-   { "glUniform4i", -1 },
-   { "glUniform4iv", -1 },
-   { "glUniformMatrix2fv", -1 },
-   { "glUniformMatrix3fv", -1 },
-   { "glUniformMatrix4fv", -1 },
-   { "glUnmapBufferOES", -1 },
-   { "glUseProgram", -1 },
-   { "glValidateProgram", -1 },
-   { "glVertexAttrib1f", -1 },
-   { "glVertexAttrib1fv", -1 },
-   { "glVertexAttrib2f", -1 },
-   { "glVertexAttrib2fv", -1 },
-   { "glVertexAttrib3f", -1 },
-   { "glVertexAttrib3fv", -1 },
-   { "glVertexAttrib4f", -1 },
-   { "glVertexAttrib4fv", -1 },
-   { "glVertexAttribPointer", -1 },
-   { "glViewport", _gloffset_Viewport },
-   { NULL, -1 }
+   { "glActiveTexture", 20, _gloffset_ActiveTextureARB },
+   { "glAttachShader", 20, -1 },
+   { "glBindAttribLocation", 20, -1 },
+   { "glBindBuffer", 20, -1 },
+   { "glBindFramebuffer", 20, -1 },
+   { "glBindRenderbuffer", 20, -1 },
+   { "glBindTexture", 20, _gloffset_BindTexture },
+   { "glBindVertexArrayOES", 20, -1 },
+   { "glBlendColor", 20, _gloffset_BlendColor },
+   { "glBlendEquation", 20, _gloffset_BlendEquation },
+   { "glBlendEquationSeparate", 20, -1 },
+   { "glBlendFunc", 20, _gloffset_BlendFunc },
+   { "glBlendFuncSeparate", 20, -1 },
+   { "glBufferData", 20, -1 },
+   { "glBufferSubData", 20, -1 },
+   { "glCheckFramebufferStatus", 20, -1 },
+   { "glClear", 20, _gloffset_Clear },
+   { "glClearColor", 20, _gloffset_ClearColor },
+   { "glClearDepthf", 20, -1 },
+   { "glClearStencil", 20, _gloffset_ClearStencil },
+   { "glColorMask", 20, _gloffset_ColorMask },
+   { "glCompileShader", 20, -1 },
+   { "glCompressedTexImage2D", 20, -1 },
+   { "glCompressedTexImage3DOES", 20, -1 },
+   { "glCompressedTexSubImage2D", 20, -1 },
+   { "glCompressedTexSubImage3DOES", 20, -1 },
+   { "glCopyTexImage2D", 20, _gloffset_CopyTexImage2D },
+   { "glCopyTexSubImage2D", 20, _gloffset_CopyTexSubImage2D },
+   { "glCopyTexSubImage3DOES", 20, _gloffset_CopyTexSubImage3D },
+   { "glCreateProgram", 20, -1 },
+   { "glCreateShader", 20, -1 },
+   { "glCullFace", 20, _gloffset_CullFace },
+   { "glDeleteBuffers", 20, -1 },
+   { "glDeleteFramebuffers", 20, -1 },
+   { "glDeleteProgram", 20, -1 },
+   { "glDeleteRenderbuffers", 20, -1 },
+   { "glDeleteShader", 20, -1 },
+   { "glDeleteTextures", 20, _gloffset_DeleteTextures },
+   { "glDeleteVertexArraysOES", 20, -1 },
+   { "glDepthFunc", 20, _gloffset_DepthFunc },
+   { "glDepthMask", 20, _gloffset_DepthMask },
+   { "glDepthRangef", 20, -1 },
+   { "glDetachShader", 20, -1 },
+   { "glDisable", 20, _gloffset_Disable },
+   { "glDisableVertexAttribArray", 20, -1 },
+   { "glDrawArrays", 20, _gloffset_DrawArrays },
+   { "glDrawBuffersNV", 20, -1 },
+   { "glDrawElements", 20, _gloffset_DrawElements },
+   { "glEGLImageTargetRenderbufferStorageOES", 20, -1 },
+   { "glEGLImageTargetTexture2DOES", 20, -1 },
+   { "glEnable", 20, _gloffset_Enable },
+   { "glEnableVertexAttribArray", 20, -1 },
+   { "glFinish", 20, _gloffset_Finish },
+   { "glFlush", 20, _gloffset_Flush },
+   { "glFlushMappedBufferRangeEXT", 20, -1 },
+   { "glFramebufferRenderbuffer", 20, -1 },
+   { "glFramebufferTexture2D", 20, -1 },
+   { "glFramebufferTexture3DOES", 20, -1 },
+   { "glFrontFace", 20, _gloffset_FrontFace },
+   { "glGenBuffers", 20, -1 },
+   { "glGenFramebuffers", 20, -1 },
+   { "glGenRenderbuffers", 20, -1 },
+   { "glGenTextures", 20, _gloffset_GenTextures },
+   { "glGenVertexArraysOES", 20, -1 },
+   { "glGenerateMipmap", 20, -1 },
+   { "glGetActiveAttrib", 20, -1 },
+   { "glGetActiveUniform", 20, -1 },
+   { "glGetAttachedShaders", 20, -1 },
+   { "glGetAttribLocation", 20, -1 },
+   { "glGetBooleanv", 20, _gloffset_GetBooleanv },
+   { "glGetBufferParameteriv", 20, -1 },
+   { "glGetBufferPointervOES", 20, -1 },
+   { "glGetError", 20, _gloffset_GetError },
+   { "glGetFloatv", 20, _gloffset_GetFloatv },
+   { "glGetFramebufferAttachmentParameteriv", 20, -1 },
+   { "glGetIntegerv", 20, _gloffset_GetIntegerv },
+   { "glGetProgramInfoLog", 20, -1 },
+   { "glGetProgramiv", 20, -1 },
+   { "glGetRenderbufferParameteriv", 20, -1 },
+   { "glGetShaderInfoLog", 20, -1 },
+   { "glGetShaderPrecisionFormat", 20, -1 },
+   { "glGetShaderSource", 20, -1 },
+   { "glGetShaderiv", 20, -1 },
+   { "glGetString", 20, _gloffset_GetString },
+   { "glGetTexParameterfv", 20, _gloffset_GetTexParameterfv },
+   { "glGetTexParameteriv", 20, _gloffset_GetTexParameteriv },
+   { "glGetUniformLocation", 20, -1 },
+   { "glGetUniformfv", 20, -1 },
+   { "glGetUniformiv", 20, -1 },
+   { "glGetVertexAttribPointerv", 20, -1 },
+   { "glGetVertexAttribfv", 20, -1 },
+   { "glGetVertexAttribiv", 20, -1 },
+   { "glHint", 20, _gloffset_Hint },
+   { "glIsBuffer", 20, -1 },
+   { "glIsEnabled", 20, _gloffset_IsEnabled },
+   { "glIsFramebuffer", 20, -1 },
+   { "glIsProgram", 20, -1 },
+   { "glIsRenderbuffer", 20, -1 },
+   { "glIsShader", 20, -1 },
+   { "glIsTexture", 20, _gloffset_IsTexture },
+   { "glIsVertexArrayOES", 20, -1 },
+   { "glLineWidth", 20, _gloffset_LineWidth },
+   { "glLinkProgram", 20, -1 },
+   { "glMapBufferOES", 20, -1 },
+   { "glMapBufferRangeEXT", 20, -1 },
+   { "glMultiDrawArraysEXT", 20, -1 },
+   { "glMultiDrawElementsEXT", 20, -1 },
+   { "glPixelStorei", 20, _gloffset_PixelStorei },
+   { "glPolygonOffset", 20, _gloffset_PolygonOffset },
+   { "glReadBufferNV", 20, _gloffset_ReadBuffer },
+   { "glReadPixels", 20, _gloffset_ReadPixels },
+   { "glReleaseShaderCompiler", 20, -1 },
+   { "glRenderbufferStorage", 20, -1 },
+   { "glSampleCoverage", 20, -1 },
+   { "glScissor", 20, _gloffset_Scissor },
+   { "glShaderBinary", 20, -1 },
+   { "glShaderSource", 20, -1 },
+   { "glStencilFunc", 20, _gloffset_StencilFunc },
+   { "glStencilFuncSeparate", 20, -1 },
+   { "glStencilMask", 20, _gloffset_StencilMask },
+   { "glStencilMaskSeparate", 20, -1 },
+   { "glStencilOp", 20, _gloffset_StencilOp },
+   { "glStencilOpSeparate", 20, -1 },
+   { "glTexImage2D", 20, _gloffset_TexImage2D },
+   { "glTexImage3DOES", 20, _gloffset_TexImage3D },
+   { "glTexParameterf", 20, _gloffset_TexParameterf },
+   { "glTexParameterfv", 20, _gloffset_TexParameterfv },
+   { "glTexParameteri", 20, _gloffset_TexParameteri },
+   { "glTexParameteriv", 20, _gloffset_TexParameteriv },
+   { "glTexSubImage2D", 20, _gloffset_TexSubImage2D },
+   { "glTexSubImage3DOES", 20, _gloffset_TexSubImage3D },
+   { "glUniform1f", 20, -1 },
+   { "glUniform1fv", 20, -1 },
+   { "glUniform1i", 20, -1 },
+   { "glUniform1iv", 20, -1 },
+   { "glUniform2f", 20, -1 },
+   { "glUniform2fv", 20, -1 },
+   { "glUniform2i", 20, -1 },
+   { "glUniform2iv", 20, -1 },
+   { "glUniform3f", 20, -1 },
+   { "glUniform3fv", 20, -1 },
+   { "glUniform3i", 20, -1 },
+   { "glUniform3iv", 20, -1 },
+   { "glUniform4f", 20, -1 },
+   { "glUniform4fv", 20, -1 },
+   { "glUniform4i", 20, -1 },
+   { "glUniform4iv", 20, -1 },
+   { "glUniformMatrix2fv", 20, -1 },
+   { "glUniformMatrix3fv", 20, -1 },
+   { "glUniformMatrix4fv", 20, -1 },
+   { "glUnmapBufferOES", 20, -1 },
+   { "glUseProgram", 20, -1 },
+   { "glValidateProgram", 20, -1 },
+   { "glVertexAttrib1f", 20, -1 },
+   { "glVertexAttrib1fv", 20, -1 },
+   { "glVertexAttrib2f", 20, -1 },
+   { "glVertexAttrib2fv", 20, -1 },
+   { "glVertexAttrib3f", 20, -1 },
+   { "glVertexAttrib3fv", 20, -1 },
+   { "glVertexAttrib4f", 20, -1 },
+   { "glVertexAttrib4fv", 20, -1 },
+   { "glVertexAttribPointer", 20, -1 },
+   { "glViewport", 20, _gloffset_Viewport },
+   { NULL, 0, -1 }
 };
 
 const struct function gles3_functions_possible[] = {
-   { "glBeginQuery", -1 },
-   { "glBeginTransformFeedback", -1 },
-   { "glBindBufferBase", -1 },
-   { "glBindBufferRange", -1 },
-   { "glBindSampler", -1 },
-   { "glBindTransformFeedback", -1 },
+   { "glBeginQuery", 30, -1 },
+   { "glBeginTransformFeedback", 30, -1 },
+   { "glBindBufferBase", 30, -1 },
+   { "glBindBufferRange", 30, -1 },
+   { "glBindSampler", 30, -1 },
+   { "glBindTransformFeedback", 30, -1 },
    // We check for the aliased -OES version in GLES 2
-   // { "glBindVertexArray", -1 },
-   { "glBlitFramebuffer", -1 },
-   { "glClearBufferfi", -1 },
-   { "glClearBufferfv", -1 },
-   { "glClearBufferiv", -1 },
-   { "glClearBufferuiv", -1 },
-   { "glClientWaitSync", -1 },
+   // { "glBindVertexArray", 30, -1 },
+   { "glBlitFramebuffer", 30, -1 },
+   { "glClearBufferfi", 30, -1 },
+   { "glClearBufferfv", 30, -1 },
+   { "glClearBufferiv", 30, -1 },
+   { "glClearBufferuiv", 30, -1 },
+   { "glClientWaitSync", 30, -1 },
    // We check for the aliased -OES version in GLES 2
-   // { "glCompressedTexImage3D", -1 },
+   // { "glCompressedTexImage3D", 30, -1 },
    // We check for the aliased -OES version in GLES 2
-   // { "glCompressedTexSubImage3D", -1 },
-   { "glCopyBufferSubData", -1 },
+   // { "glCompressedTexSubImage3D", 30, -1 },
+   { "glCopyBufferSubData", 30, -1 },
    // We check for the aliased -OES version in GLES 2
-   // { "glCopyTexSubImage3D", -1 },
-   { "glDeleteQueries", -1 },
-   { "glDeleteSamplers", -1 },
-   { "glDeleteSync", -1 },
-   { "glDeleteTransformFeedbacks", -1 },
+   // { "glCopyTexSubImage3D", 30, -1 },
+   { "glDeleteQueries", 30, -1 },
+   { "glDeleteSamplers", 30, -1 },
+   { "glDeleteSync", 30, -1 },
+   { "glDeleteTransformFeedbacks", 30, -1 },
    // We check for the aliased -OES version in GLES 2
-   // { "glDeleteVertexArrays", -1 },
-   { "glDrawArraysInstanced", -1 },
+   // { "glDeleteVertexArrays", 30, -1 },
+   { "glDrawArraysInstanced", 30, -1 },
    // We check for the aliased -NV version in GLES 2
-   // { "glDrawBuffers", -1 },
-   { "glDrawElementsInstanced", -1 },
-   { "glDrawRangeElements", -1 },
-   { "glEndQuery", -1 },
-   { "glEndTransformFeedback", -1 },
-   { "glFenceSync", -1 },
+   // { "glDrawBuffers", 30, -1 },
+   { "glDrawElementsInstanced", 30, -1 },
+   { "glDrawRangeElements", 30, -1 },
+   { "glEndQuery", 30, -1 },
+   { "glEndTransformFeedback", 30, -1 },
+   { "glFenceSync", 30, -1 },
    // We check for the aliased -EXT version in GLES 2
-   // { "glFlushMappedBufferRange", -1 },
-   { "glFramebufferTextureLayer", -1 },
-   { "glGenQueries", -1 },
-   { "glGenSamplers", -1 },
-   { "glGenTransformFeedbacks", -1 },
+   // { "glFlushMappedBufferRange", 30, -1 },
+   { "glFramebufferTextureLayer", 30, -1 },
+   { "glGenQueries", 30, -1 },
+   { "glGenSamplers", 30, -1 },
+   { "glGenTransformFeedbacks", 30, -1 },
    // We check for the aliased -OES version in GLES 2
-   // { "glGenVertexArrays", -1 },
-   { "glGetActiveUniformBlockiv", -1 },
-   { "glGetActiveUniformBlockName", -1 },
-   { "glGetActiveUniformsiv", -1 },
+   // { "glGenVertexArrays", 30, -1 },
+   { "glGetActiveUniformBlockiv", 30, -1 },
+   { "glGetActiveUniformBlockName", 30, -1 },
+   { "glGetActiveUniformsiv", 30, -1 },
    // We have an implementation (added Jan 1 2010, 1fbc7193) but never tested...
-   // { "glGetBufferParameteri64v", -1 },
+   // { "glGetBufferParameteri64v", 30, -1 },
    // We check for the aliased -OES version in GLES 2
-   // { "glGetBufferPointerv", -1 },
-   { "glGetFragDataLocation", -1 },
+   // { "glGetBufferPointerv", 30, -1 },
+   { "glGetFragDataLocation", 30, -1 },
    /// XXX: Missing implementation of glGetInteger64i_v
-   // { "glGetInteger64i_v", -1 },
-   { "glGetInteger64v", -1 },
-   { "glGetIntegeri_v", -1 },
+   // { "glGetInteger64i_v", 30, -1 },
+   { "glGetInteger64v", 30, -1 },
+   { "glGetIntegeri_v", 30, -1 },
    // XXX: Missing implementation of ARB_internalformat_query
-   // { "glGetInternalformativ", -1 },
+   // { "glGetInternalformativ", 30, -1 },
    // XXX: Missing implementation of ARB_get_program_binary
-   /// { "glGetProgramBinary", -1 },
-   { "glGetQueryiv", -1 },
-   { "glGetQueryObjectuiv", -1 },
-   { "glGetSamplerParameterfv", -1 },
-   { "glGetSamplerParameteriv", -1 },
-   { "glGetStringi", -1 },
-   { "glGetSynciv", -1 },
-   { "glGetTransformFeedbackVarying", -1 },
-   { "glGetUniformBlockIndex", -1 },
-   { "glGetUniformIndices", -1 },
-   { "glGetUniformuiv", -1 },
-   { "glGetVertexAttribIiv", -1 },
-   { "glGetVertexAttribIuiv", -1 },
-   { "glInvalidateFramebuffer", -1 },
-   { "glInvalidateSubFramebuffer", -1 },
-   { "glIsQuery", -1 },
-   { "glIsSampler", -1 },
-   { "glIsSync", -1 },
-   { "glIsTransformFeedback", -1 },
+   /// { "glGetProgramBinary", 30, -1 },
+   { "glGetQueryiv", 30, -1 },
+   { "glGetQueryObjectuiv", 30, -1 },
+   { "glGetSamplerParameterfv", 30, -1 },
+   { "glGetSamplerParameteriv", 30, -1 },
+   { "glGetStringi", 30, -1 },
+   { "glGetSynciv", 30, -1 },
+   { "glGetTransformFeedbackVarying", 30, -1 },
+   { "glGetUniformBlockIndex", 30, -1 },
+   { "glGetUniformIndices", 30, -1 },
+   { "glGetUniformuiv", 30, -1 },
+   { "glGetVertexAttribIiv", 30, -1 },
+   { "glGetVertexAttribIuiv", 30, -1 },
+   { "glInvalidateFramebuffer", 30, -1 },
+   { "glInvalidateSubFramebuffer", 30, -1 },
+   { "glIsQuery", 30, -1 },
+   { "glIsSampler", 30, -1 },
+   { "glIsSync", 30, -1 },
+   { "glIsTransformFeedback", 30, -1 },
    // We check for the aliased -OES version in GLES 2
-   // { "glIsVertexArray", -1 },
+   // { "glIsVertexArray", 30, -1 },
    // We check for the aliased -EXT version in GLES 2
-   // { "glMapBufferRange", -1 },
-   { "glPauseTransformFeedback", -1 },
+   // { "glMapBufferRange", 30, -1 },
+   { "glPauseTransformFeedback", 30, -1 },
    // XXX: Missing implementation of ARB_get_program_binary
-   // { "glProgramBinary", -1 },
+   // { "glProgramBinary", 30, -1 },
    // XXX: Missing implementation of ARB_get_program_binary
-   // { "glProgramParameteri", -1 },
+   // { "glProgramParameteri", 30, -1 },
    // We check for the aliased -NV version in GLES 2
-   // { "glReadBuffer", -1 },
-   { "glRenderbufferStorageMultisample", -1 },
-   { "glResumeTransformFeedback", -1 },
-   { "glSamplerParameterf", -1 },
-   { "glSamplerParameterfv", -1 },
-   { "glSamplerParameteri", -1 },
-   { "glSamplerParameteriv", -1 },
+   // { "glReadBuffer", 30, -1 },
+   { "glRenderbufferStorageMultisample", 30, -1 },
+   { "glResumeTransformFeedback", 30, -1 },
+   { "glSamplerParameterf", 30, -1 },
+   { "glSamplerParameterfv", 30, -1 },
+   { "glSamplerParameteri", 30, -1 },
+   { "glSamplerParameteriv", 30, -1 },
    // We check for the aliased -OES version in GLES 2
-   // { "glTexImage3D", -1 },
-   { "glTexStorage2D", -1 },
-   { "glTexStorage3D", -1 },
+   // { "glTexImage3D", 30, -1 },
+   { "glTexStorage2D", 30, -1 },
+   { "glTexStorage3D", 30, -1 },
    // We check for the aliased -OES version in GLES 2
-   // { "glTexSubImage3D", -1 },
-   { "glTransformFeedbackVaryings", -1 },
-   { "glUniform1ui", -1 },
-   { "glUniform1uiv", -1 },
-   { "glUniform2ui", -1 },
-   { "glUniform2uiv", -1 },
-   { "glUniform3ui", -1 },
-   { "glUniform3uiv", -1 },
-   { "glUniform4ui", -1 },
-   { "glUniform4uiv", -1 },
-   { "glUniformBlockBinding", -1 },
-   { "glUniformMatrix2x3fv", -1 },
-   { "glUniformMatrix2x4fv", -1 },
-   { "glUniformMatrix3x2fv", -1 },
-   { "glUniformMatrix3x4fv", -1 },
-   { "glUniformMatrix4x2fv", -1 },
-   { "glUniformMatrix4x3fv", -1 },
+   // { "glTexSubImage3D", 30, -1 },
+   { "glTransformFeedbackVaryings", 30, -1 },
+   { "glUniform1ui", 30, -1 },
+   { "glUniform1uiv", 30, -1 },
+   { "glUniform2ui", 30, -1 },
+   { "glUniform2uiv", 30, -1 },
+   { "glUniform3ui", 30, -1 },
+   { "glUniform3uiv", 30, -1 },
+   { "glUniform4ui", 30, -1 },
+   { "glUniform4uiv", 30, -1 },
+   { "glUniformBlockBinding", 30, -1 },
+   { "glUniformMatrix2x3fv", 30, -1 },
+   { "glUniformMatrix2x4fv", 30, -1 },
+   { "glUniformMatrix3x2fv", 30, -1 },
+   { "glUniformMatrix3x4fv", 30, -1 },
+   { "glUniformMatrix4x2fv", 30, -1 },
+   { "glUniformMatrix4x3fv", 30, -1 },
    // We check for the aliased -OES version in GLES 2
-   // { "glUnmapBuffer", -1 },
-   { "glVertexAttribDivisor", -1 },
-   { "glVertexAttribI4i", -1 },
-   { "glVertexAttribI4iv", -1 },
-   { "glVertexAttribI4ui", -1 },
-   { "glVertexAttribI4uiv", -1 },
-   { "glVertexAttribIPointer", -1 },
-   { "glWaitSync", -1 },
-   { NULL, -1 }
+   // { "glUnmapBuffer", 30, -1 },
+   { "glVertexAttribDivisor", 30, -1 },
+   { "glVertexAttribI4i", 30, -1 },
+   { "glVertexAttribI4iv", 30, -1 },
+   { "glVertexAttribI4ui", 30, -1 },
+   { "glVertexAttribI4uiv", 30, -1 },
+   { "glVertexAttribIPointer", 30, -1 },
+   { "glWaitSync", 30, -1 },
+   { NULL, 0, -1 }
 };