X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fmesa%2Fmain%2Ftests%2Fdispatch_sanity.cpp;h=63c687c46fca40685cf3a4cd3898ba3d6cb38895;hb=e66c2158f86d798fc25555d493febc5c9e778899;hp=931eeceb212b5edbbb5df7e148525706579e6563;hpb=642fb71277b6e4c5d57ad7a7d6f2d5aae9b746ef;p=mesa.git diff --git a/src/mesa/main/tests/dispatch_sanity.cpp b/src/mesa/main/tests/dispatch_sanity.cpp index 931eeceb212..63c687c46fc 100644 --- a/src/mesa/main/tests/dispatch_sanity.cpp +++ b/src/mesa/main/tests/dispatch_sanity.cpp @@ -68,10 +68,13 @@ struct function { int offset; }; +extern const struct function common_desktop_functions_possible[]; +extern const struct function gl_compatibility_functions_possible[]; extern const struct function gl_core_functions_possible[]; extern const struct function gles11_functions_possible[]; extern const struct function gles2_functions_possible[]; extern const struct function gles3_functions_possible[]; +extern const struct function gles31_functions_possible[]; class DispatchSanity_test : public ::testing::Test { public: @@ -96,7 +99,7 @@ DispatchSanity_test::SetUp() _mesa_init_driver_functions(&driver_functions); const unsigned size = _glapi_get_dispatch_table_size(); - nop_table = (_glapi_proc *) _glapi_new_nop_table(size); + nop_table = (_glapi_proc *) _mesa_new_nop_table(size); } void @@ -109,6 +112,7 @@ DispatchSanity_test::SetUpCtx(gl_api api, unsigned int version) &driver_functions); _vbo_CreateContext(&ctx); + _mesa_override_extensions(&ctx); ctx.Version = version; _mesa_initialize_dispatch_tables(&ctx); @@ -175,10 +179,19 @@ validate_nops(struct gl_context *ctx, const _glapi_proc *nop_table) TEST_F(DispatchSanity_test, GL31_CORE) { SetUpCtx(API_OPENGL_CORE, 31); + validate_functions(&ctx, common_desktop_functions_possible, nop_table); validate_functions(&ctx, gl_core_functions_possible, nop_table); validate_nops(&ctx, nop_table); } +TEST_F(DispatchSanity_test, GL30) +{ + SetUpCtx(API_OPENGL_COMPAT, 30); + validate_functions(&ctx, common_desktop_functions_possible, nop_table); + validate_functions(&ctx, gl_compatibility_functions_possible, nop_table); + validate_nops(&ctx, nop_table); +} + TEST_F(DispatchSanity_test, GLES11) { SetUpCtx(API_OPENGLES, 11); @@ -201,7 +214,16 @@ TEST_F(DispatchSanity_test, GLES3) validate_nops(&ctx, nop_table); } -const struct function gl_core_functions_possible[] = { +TEST_F(DispatchSanity_test, GLES31) +{ + SetUpCtx(API_OPENGLES2, 31); + validate_functions(&ctx, gles2_functions_possible, nop_table); + validate_functions(&ctx, gles3_functions_possible, nop_table); + validate_functions(&ctx, gles31_functions_possible, nop_table); + validate_nops(&ctx, nop_table); +} + +const struct function common_desktop_functions_possible[] = { { "glCullFace", 10, -1 }, { "glFrontFace", 10, -1 }, { "glHint", 10, -1 }, @@ -213,8 +235,8 @@ const struct function gl_core_functions_possible[] = { { "glTexParameterfv", 10, -1 }, { "glTexParameteri", 10, -1 }, { "glTexParameteriv", 10, -1 }, - { "glTexImage1D", 10, -1 }, - { "glTexImage2D", 10, -1 }, + { "glTexImage1D", 10, _gloffset_TexImage1D }, + { "glTexImage2D", 10, _gloffset_TexImage2D }, { "glDrawBuffer", 10, -1 }, { "glClear", 10, -1 }, { "glClearColor", 10, -1 }, @@ -482,8 +504,11 @@ const struct function gl_core_functions_possible[] = { /* GL 3.1 */ { "glDrawArraysInstanced", 31, -1 }, { "glDrawElementsInstanced", 31, -1 }, - { "glTexBuffer", 31, -1 }, { "glPrimitiveRestartIndex", 31, -1 }, + { "glTexBuffer", 31, -1 }, + + /* GL_ARB_texture_buffer_range */ + { "glTexBufferRange", 43, -1 }, /* GL_ARB_shader_objects */ { "glDeleteObjectARB", 31, -1 }, @@ -535,23 +560,61 @@ const struct function gl_core_functions_possible[] = { { "glGetInteger64i_v", 32, -1 }, { "glGetBufferParameteri64v", 32, -1 }, { "glFramebufferTexture", 32, -1 }, - - /* GL_ARB_geometry_shader4 */ - { "glProgramParameteriARB", 32, -1 }, - { "glFramebufferTextureARB", 32, -1 }, - { "glFramebufferTextureLayerARB", 32, -1 }, - { "glFramebufferTextureFaceARB", 32, -1 }, + { "glProgramParameteri", 32, -1 }, + { "glFramebufferTextureLayer", 32, -1 }, /* GL 3.3 */ { "glVertexAttribDivisor", 33, -1 }, /* GL 4.0 */ { "glMinSampleShading", 40, -1 }, + { "glPatchParameteri", 40, -1 }, + { "glPatchParameterfv", 40, -1 }, { "glBlendEquationi", 40, -1 }, { "glBlendEquationSeparatei", 40, -1 }, { "glBlendFunci", 40, -1 }, { "glBlendFuncSeparatei", 40, -1 }, + { "glGetSubroutineUniformLocation", 40, -1 }, + { "glGetSubroutineIndex", 40, -1 }, + { "glGetActiveSubroutineUniformiv", 40, -1 }, + { "glGetActiveSubroutineUniformName", 40, -1 }, + { "glGetActiveSubroutineName", 40, -1 }, + { "glUniformSubroutinesuiv", 40, -1 }, + { "glGetUniformSubroutineuiv", 40, -1 }, + { "glGetProgramStageiv", 40, -1 }, + + { "glUniform1d", 40, -1 }, + { "glUniform2d", 40, -1 }, + { "glUniform3d", 40, -1 }, + { "glUniform4d", 40, -1 }, + { "glUniform1dv", 40, -1 }, + { "glUniform2dv", 40, -1 }, + { "glUniform3dv", 40, -1 }, + { "glUniform4dv", 40, -1 }, + { "glUniformMatrix2dv", 40, -1 }, + { "glUniformMatrix3dv", 40, -1 }, + { "glUniformMatrix4dv", 40, -1 }, + { "glUniformMatrix2x3dv", 40, -1 }, + { "glUniformMatrix2x4dv", 40, -1 }, + { "glUniformMatrix3x2dv", 40, -1 }, + { "glUniformMatrix3x4dv", 40, -1 }, + { "glUniformMatrix4x2dv", 40, -1 }, + { "glUniformMatrix4x3dv", 40, -1 }, + { "glGetUniformdv", 43, -1 }, + + /* GL 4.1 */ + { "glVertexAttribL1d", 41, -1 }, + { "glVertexAttribL2d", 41, -1 }, + { "glVertexAttribL3d", 41, -1 }, + { "glVertexAttribL4d", 41, -1 }, + { "glVertexAttribL1dv", 41, -1 }, + { "glVertexAttribL2dv", 41, -1 }, + { "glVertexAttribL3dv", 41, -1 }, + { "glVertexAttribL4dv", 41, -1 }, + { "glVertexAttribLPointer", 41, -1 }, + { "glGetVertexAttribLdv", 41, -1 }, + /* GL 4.3 */ { "glIsRenderbuffer", 43, -1 }, { "glBindRenderbuffer", 43, -1 }, @@ -673,34 +736,6 @@ const struct function gl_core_functions_possible[] = { { "glVertexAttribP4uiv", 43, -1 }, { "glDrawArraysIndirect", 43, -1 }, { "glDrawElementsIndirect", 43, -1 }, - { "glUniform1d", 40, -1 }, - { "glUniform2d", 40, -1 }, - { "glUniform3d", 40, -1 }, - { "glUniform4d", 40, -1 }, - { "glUniform1dv", 40, -1 }, - { "glUniform2dv", 40, -1 }, - { "glUniform3dv", 40, -1 }, - { "glUniform4dv", 40, -1 }, - { "glUniformMatrix2dv", 40, -1 }, - { "glUniformMatrix3dv", 40, -1 }, - { "glUniformMatrix4dv", 40, -1 }, - { "glUniformMatrix2x3dv", 40, -1 }, - { "glUniformMatrix2x4dv", 40, -1 }, - { "glUniformMatrix3x2dv", 40, -1 }, - { "glUniformMatrix3x4dv", 40, -1 }, - { "glUniformMatrix4x2dv", 40, -1 }, - { "glUniformMatrix4x3dv", 40, -1 }, - { "glGetUniformdv", 43, -1 }, -// { "glGetSubroutineUniformLocation", 43, -1 }, // XXX: Add to xml -// { "glGetSubroutineIndex", 43, -1 }, // XXX: Add to xml -// { "glGetActiveSubroutineUniformiv", 43, -1 }, // XXX: Add to xml -// { "glGetActiveSubroutineUniformName", 43, -1 }, // XXX: Add to xml -// { "glGetActiveSubroutineName", 43, -1 }, // XXX: Add to xml -// { "glUniformSubroutinesuiv", 43, -1 }, // XXX: Add to xml -// { "glGetUniformSubroutineuiv", 43, -1 }, // XXX: Add to xml -// { "glGetProgramStageiv", 43, -1 }, // XXX: Add to xml -// { "glPatchParameteri", 43, -1 }, // XXX: Add to xml -// { "glPatchParameterfv", 43, -1 }, // XXX: Add to xml { "glBindTransformFeedback", 43, -1 }, { "glDeleteTransformFeedbacks", 43, -1 }, { "glGenTransformFeedbacks", 43, -1 }, @@ -728,12 +763,12 @@ const struct function gl_core_functions_possible[] = { { "glGenProgramPipelines", 43, -1 }, { "glIsProgramPipeline", 43, -1 }, { "glGetProgramPipelineiv", 43, -1 }, + { "glProgramUniform1d", 43, -1 }, + { "glProgramUniform1dv", 43, -1 }, { "glProgramUniform1i", 43, -1 }, { "glProgramUniform1iv", 43, -1 }, { "glProgramUniform1f", 43, -1 }, { "glProgramUniform1fv", 43, -1 }, - { "glProgramUniform1d", 40, -1 }, - { "glProgramUniform1dv", 40, -1 }, { "glProgramUniform1ui", 43, -1 }, { "glProgramUniform1uiv", 43, -1 }, { "glProgramUniform2i", 43, -1 }, @@ -754,50 +789,32 @@ const struct function gl_core_functions_possible[] = { { "glProgramUniform3uiv", 43, -1 }, { "glProgramUniform4i", 43, -1 }, { "glProgramUniform4iv", 43, -1 }, + { "glProgramUniform4d", 43, -1 }, + { "glProgramUniform4dv", 43, -1 }, { "glProgramUniform4f", 43, -1 }, { "glProgramUniform4fv", 43, -1 }, - { "glProgramUniform4d", 40, -1 }, - { "glProgramUniform4dv", 40, -1 }, { "glProgramUniform4ui", 43, -1 }, { "glProgramUniform4uiv", 43, -1 }, + { "glProgramUniformMatrix2dv", 43, -1 }, { "glProgramUniformMatrix2fv", 43, -1 }, + { "glProgramUniformMatrix3dv", 43, -1 }, { "glProgramUniformMatrix3fv", 43, -1 }, + { "glProgramUniformMatrix4dv", 43, -1 }, { "glProgramUniformMatrix4fv", 43, -1 }, - { "glProgramUniformMatrix2dv", 40, -1 }, - { "glProgramUniformMatrix3dv", 40, -1 }, - { "glProgramUniformMatrix4dv", 40, -1 }, + { "glProgramUniformMatrix2x3dv", 43, -1 }, { "glProgramUniformMatrix2x3fv", 43, -1 }, + { "glProgramUniformMatrix3x2dv", 43, -1 }, { "glProgramUniformMatrix3x2fv", 43, -1 }, + { "glProgramUniformMatrix2x4dv", 43, -1 }, { "glProgramUniformMatrix2x4fv", 43, -1 }, + { "glProgramUniformMatrix4x2dv", 43, -1 }, { "glProgramUniformMatrix4x2fv", 43, -1 }, + { "glProgramUniformMatrix3x4dv", 43, -1 }, { "glProgramUniformMatrix3x4fv", 43, -1 }, + { "glProgramUniformMatrix4x3dv", 43, -1 }, { "glProgramUniformMatrix4x3fv", 43, -1 }, - { "glProgramUniformMatrix2x3dv", 40, -1 }, - { "glProgramUniformMatrix3x2dv", 40, -1 }, - { "glProgramUniformMatrix2x4dv", 40, -1 }, - { "glProgramUniformMatrix4x2dv", 40, -1 }, - { "glProgramUniformMatrix3x4dv", 40, -1 }, - { "glProgramUniformMatrix4x3dv", 40, -1 }, { "glValidateProgramPipeline", 43, -1 }, { "glGetProgramPipelineInfoLog", 43, -1 }, - { "glVertexAttribL1d", 41, -1 }, - { "glVertexAttribL2d", 41, -1 }, - { "glVertexAttribL3d", 41, -1 }, - { "glVertexAttribL4d", 41, -1 }, - { "glVertexAttribL1dv", 41, -1 }, - { "glVertexAttribL2dv", 41, -1 }, - { "glVertexAttribL3dv", 41, -1 }, - { "glVertexAttribL4dv", 41, -1 }, - { "glVertexAttribLPointer", 41, -1 }, - { "glGetVertexAttribLdv", 41, -1 }, - { "glViewportArrayv", 43, -1 }, - { "glViewportIndexedf", 43, -1 }, - { "glViewportIndexedfv", 43, -1 }, - { "glScissorArrayv", 43, -1 }, - { "glScissorIndexed", 43, -1 }, - { "glScissorIndexedv", 43, -1 }, - { "glDepthRangeArrayv", 43, -1 }, - { "glDepthRangeIndexed", 43, -1 }, { "glGetFloati_v", 43, -1 }, { "glGetDoublei_v", 43, -1 }, // { "glCreateSyncFromCLeventARB", 43, -1 }, // XXX: Add to xml @@ -840,8 +857,6 @@ const struct function gl_core_functions_possible[] = { { "glClearBufferSubData", 43, -1 }, // { "glClearNamedBufferDataEXT", 43, -1 }, // XXX: Add to xml // { "glClearNamedBufferSubDataEXT", 43, -1 }, // XXX: Add to xml - { "glDispatchCompute", 43, -1 }, - { "glDispatchComputeIndirect", 43, -1 }, { "glCopyImageSubData", 43, -1 }, { "glTextureView", 43, -1 }, { "glBindVertexBuffer", 43, -1 }, @@ -853,11 +868,10 @@ const struct function gl_core_functions_possible[] = { // { "glVertexArrayBindVertexBufferEXT", 43, -1 }, // XXX: Add to xml // { "glVertexArrayVertexAttribFormatEXT", 43, -1 }, // XXX: Add to xml // { "glVertexArrayVertexAttribIFormatEXT", 43, -1 }, // XXX: Add to xml -// { "glVertexArrayVertexAttribLFormatEXT", 43, -1 }, // XXX: Add to xml // { "glVertexArrayVertexAttribBindingEXT", 43, -1 }, // XXX: Add to xml // { "glVertexArrayVertexBindingDivisorEXT", 43, -1 }, // XXX: Add to xml -// { "glFramebufferParameteri", 43, -1 }, // XXX: Add to xml -// { "glGetFramebufferParameteriv", 43, -1 }, // XXX: Add to xml + { "glFramebufferParameteri", 43, -1 }, + { "glGetFramebufferParameteriv", 43, -1 }, // { "glNamedFramebufferParameteriEXT", 43, -1 }, // XXX: Add to xml // { "glGetNamedFramebufferParameterivEXT", 43, -1 }, // XXX: Add to xml // { "glGetInternalformati64v", 43, -1 }, // XXX: Add to xml @@ -875,88 +889,30 @@ const struct function gl_core_functions_possible[] = { { "glGetProgramResourceiv", 43, -1 }, { "glGetProgramResourceLocation", 43, -1 }, { "glGetProgramResourceLocationIndex", 43, -1 }, -// { "glShaderStorageBlockBinding", 43, -1 }, // XXX: Add to xml - { "glTexBufferRange", 43, -1 }, + { "glShaderStorageBlockBinding", 43, -1 }, // { "glTextureBufferRangeEXT", 43, -1 }, // XXX: Add to xml { "glTexStorage2DMultisample", 43, -1 }, { "glTexStorage3DMultisample", 43, -1 }, // { "glTextureStorage2DMultisampleEXT", 43, -1 }, // XXX: Add to xml // { "glTextureStorage3DMultisampleEXT", 43, -1 }, // XXX: Add to xml - /* GL_ARB_internalformat_query */ - { "glGetInternalformativ", 30, -1 }, - - /* GL_ARB_multi_bind */ - { "glBindBuffersBase", 44, -1 }, - { "glBindBuffersRange", 44, -1 }, - { "glBindTextures", 44, -1 }, - { "glBindSamplers", 44, -1 }, - { "glBindImageTextures", 44, -1 }, - { "glBindVertexBuffers", 44, -1 }, + { "glViewportArrayv", 43, -1 }, + { "glViewportIndexedf", 43, -1 }, + { "glViewportIndexedfv", 43, -1 }, + { "glScissorArrayv", 43, -1 }, + { "glScissorIndexed", 43, -1 }, + { "glScissorIndexedv", 43, -1 }, + { "glDepthRangeArrayv", 43, -1 }, + { "glDepthRangeIndexed", 43, -1 }, - /* GL_KHR_debug/GL_ARB_debug_output */ - { "glPushDebugGroup", 11, -1 }, - { "glPopDebugGroup", 11, -1 }, - { "glDebugMessageCallback", 11, -1 }, - { "glDebugMessageControl", 11, -1 }, - { "glDebugMessageInsert", 11, -1 }, - { "glGetDebugMessageLog", 11, -1 }, - { "glGetObjectLabel", 11, -1 }, - { "glGetObjectPtrLabel", 11, -1 }, - { "glObjectLabel", 11, -1 }, - { "glObjectPtrLabel", 11, -1 }, +/* GL 4.5 */ /* aliased versions checked above */ - //{ "glDebugMessageControlARB", 11, -1 }, - //{ "glDebugMessageInsertARB", 11, -1 }, - //{ "glDebugMessageCallbackARB", 11, -1 }, - //{ "glGetDebugMessageLogARB", 11, -1 }, - - /* GL_AMD_performance_monitor */ - { "glGetPerfMonitorGroupsAMD", 11, -1 }, - { "glGetPerfMonitorCountersAMD", 11, -1 }, - { "glGetPerfMonitorGroupStringAMD", 11, -1 }, - { "glGetPerfMonitorCounterStringAMD", 11, -1 }, - { "glGetPerfMonitorCounterInfoAMD", 11, -1 }, - { "glGenPerfMonitorsAMD", 11, -1 }, - { "glDeletePerfMonitorsAMD", 11, -1 }, - { "glSelectPerfMonitorCountersAMD", 11, -1 }, - { "glBeginPerfMonitorAMD", 11, -1 }, - { "glEndPerfMonitorAMD", 11, -1 }, - { "glGetPerfMonitorCounterDataAMD", 11, -1 }, - - /* GL_INTEL_performance_query */ - { "glGetFirstPerfQueryIdINTEL", 30, -1 }, - { "glGetNextPerfQueryIdINTEL", 30, -1 }, - { "glGetPerfQueryIdByNameINTEL", 30, -1 }, - { "glGetPerfQueryInfoINTEL", 30, -1 }, - { "glGetPerfCounterInfoINTEL", 30, -1 }, - { "glCreatePerfQueryINTEL", 30, -1 }, - { "glDeletePerfQueryINTEL", 30, -1 }, - { "glBeginPerfQueryINTEL", 30, -1 }, - { "glEndPerfQueryINTEL", 30, -1 }, - { "glGetPerfQueryDataINTEL", 30, -1 }, - - /* GL_NV_vdpau_interop */ - { "glVDPAUInitNV", 11, -1 }, - { "glVDPAUFiniNV", 11, -1 }, - { "glVDPAURegisterVideoSurfaceNV", 11, -1 }, - { "glVDPAURegisterOutputSurfaceNV", 11, -1 }, - { "glVDPAUIsSurfaceNV", 11, -1 }, - { "glVDPAUUnregisterSurfaceNV", 11, -1 }, - { "glVDPAUGetSurfaceivNV", 11, -1 }, - { "glVDPAUSurfaceAccessNV", 11, -1 }, - { "glVDPAUMapSurfacesNV", 11, -1 }, - { "glVDPAUUnmapSurfacesNV", 11, -1 }, - - /* GL_ARB_buffer_storage */ - { "glBufferStorage", 43, -1 }, - - /* GL_ARB_clear_texture */ - { "glClearTexImage", 13, -1 }, - { "glClearTexSubImage", 13, -1 }, - - /* GL_ARB_clip_control */ - { "glClipControl", 45, -1 }, + //{ "glGetGraphicsResetStatus", 45, -1 }, + //{ "glReadnPixels", 45, -1 }, + //{ "glGetnUniformfv", 45, -1 }, + //{ "glGetnUniformiv", 45, -1 }, + //{ "glGetnUniformuiv", 45, -1 }, + { "glMemoryBarrierByRegion", 45, -1 }, /* GL_ARB_direct_state_access */ { "glCreateTransformFeedbacks", 45, -1 }, @@ -986,6 +942,8 @@ const struct function gl_core_functions_possible[] = { { "glNamedFramebufferTexture", 45, -1 }, { "glNamedFramebufferTextureLayer", 45, -1 }, { "glNamedFramebufferDrawBuffer", 45, -1 }, + { "glNamedFramebufferDrawBuffers", 45, -1 }, + { "glNamedFramebufferReadBuffer", 45, -1 }, { "glInvalidateNamedFramebufferSubData", 45, -1 }, { "glInvalidateNamedFramebufferData", 45, -1 }, { "glClearNamedFramebufferiv", 45, -1 }, @@ -1055,9 +1013,718 @@ const struct function gl_core_functions_possible[] = { { "glGetQueryBufferObjecti64v", 45, -1 }, { "glGetQueryBufferObjectui64v", 45, -1 }, + /* GL_ARB_internalformat_query */ + { "glGetInternalformativ", 30, -1 }, + + /* GL_ARB_internalformat_query */ + { "glGetInternalformati64v", 30, -1 }, + + /* GL_ARB_multi_bind */ + { "glBindBuffersBase", 44, -1 }, + { "glBindBuffersRange", 44, -1 }, + { "glBindTextures", 44, -1 }, + { "glBindSamplers", 44, -1 }, + { "glBindImageTextures", 44, -1 }, + { "glBindVertexBuffers", 44, -1 }, + + /* GL_KHR_debug/GL_ARB_debug_output */ + { "glPushDebugGroup", 11, -1 }, + { "glPopDebugGroup", 11, -1 }, + { "glDebugMessageCallback", 11, -1 }, + { "glDebugMessageControl", 11, -1 }, + { "glDebugMessageInsert", 11, -1 }, + { "glGetDebugMessageLog", 11, -1 }, + { "glGetObjectLabel", 11, -1 }, + { "glGetObjectPtrLabel", 11, -1 }, + { "glObjectLabel", 11, -1 }, + { "glObjectPtrLabel", 11, -1 }, + /* aliased versions checked above */ + //{ "glDebugMessageControlARB", 11, -1 }, + //{ "glDebugMessageInsertARB", 11, -1 }, + //{ "glDebugMessageCallbackARB", 11, -1 }, + //{ "glGetDebugMessageLogARB", 11, -1 }, + + /* GL_AMD_performance_monitor */ + { "glGetPerfMonitorGroupsAMD", 11, -1 }, + { "glGetPerfMonitorCountersAMD", 11, -1 }, + { "glGetPerfMonitorGroupStringAMD", 11, -1 }, + { "glGetPerfMonitorCounterStringAMD", 11, -1 }, + { "glGetPerfMonitorCounterInfoAMD", 11, -1 }, + { "glGenPerfMonitorsAMD", 11, -1 }, + { "glDeletePerfMonitorsAMD", 11, -1 }, + { "glSelectPerfMonitorCountersAMD", 11, -1 }, + { "glBeginPerfMonitorAMD", 11, -1 }, + { "glEndPerfMonitorAMD", 11, -1 }, + { "glGetPerfMonitorCounterDataAMD", 11, -1 }, + + /* GL_INTEL_performance_query */ + { "glGetFirstPerfQueryIdINTEL", 30, -1 }, + { "glGetNextPerfQueryIdINTEL", 30, -1 }, + { "glGetPerfQueryIdByNameINTEL", 30, -1 }, + { "glGetPerfQueryInfoINTEL", 30, -1 }, + { "glGetPerfCounterInfoINTEL", 30, -1 }, + { "glCreatePerfQueryINTEL", 30, -1 }, + { "glDeletePerfQueryINTEL", 30, -1 }, + { "glBeginPerfQueryINTEL", 30, -1 }, + { "glEndPerfQueryINTEL", 30, -1 }, + { "glGetPerfQueryDataINTEL", 30, -1 }, + + /* GL_NV_vdpau_interop */ + { "glVDPAUInitNV", 11, -1 }, + { "glVDPAUFiniNV", 11, -1 }, + { "glVDPAURegisterVideoSurfaceNV", 11, -1 }, + { "glVDPAURegisterOutputSurfaceNV", 11, -1 }, + { "glVDPAUIsSurfaceNV", 11, -1 }, + { "glVDPAUUnregisterSurfaceNV", 11, -1 }, + { "glVDPAUGetSurfaceivNV", 11, -1 }, + { "glVDPAUSurfaceAccessNV", 11, -1 }, + { "glVDPAUMapSurfacesNV", 11, -1 }, + { "glVDPAUUnmapSurfacesNV", 11, -1 }, + + /* GL_ARB_buffer_storage */ + { "glBufferStorage", 43, -1 }, + + /* GL_ARB_clear_texture */ + { "glClearTexImage", 13, -1 }, + { "glClearTexSubImage", 13, -1 }, + + /* GL_ARB_clip_control */ + { "glClipControl", 45, -1 }, + + /* GL_ARB_compute_shader */ + { "glDispatchCompute", 43, -1 }, + { "glDispatchComputeIndirect", 43, -1 }, + + /* GL_ARB_compute_variable_group_size */ + { "glDispatchComputeGroupSizeARB", 43, -1 }, + /* GL_EXT_polygon_offset_clamp */ { "glPolygonOffsetClampEXT", 11, -1 }, + /* GL_ARB_get_texture_sub_image */ + { "glGetTextureSubImage", 20, -1 }, + { "glGetCompressedTextureSubImage", 20, -1 }, + + /* GL_GREMEDY_string_marker */ + { "glStringMarkerGREMEDY", 15, -1 }, + + /* GL_EXT_window_rectangles */ + { "glWindowRectanglesEXT", 30, -1 }, + + /* GL_KHR_blend_equation_advanced */ + { "glBlendBarrierKHR", 20, -1 }, + + /* GL_ARB_sparse_buffer */ + { "glBufferPageCommitmentARB", 43, -1 }, + { "glNamedBufferPageCommitmentARB", 43, -1 }, + + /* GL_ARB_bindless_texture */ + { "glGetTextureHandleARB", 40, -1 }, + { "glGetTextureSamplerHandleARB", 40, -1 }, + { "glMakeTextureHandleResidentARB", 40, -1 }, + { "glMakeTextureHandleNonResidentARB", 40, -1 }, + { "glIsTextureHandleResidentARB", 40, -1 }, + { "glGetImageHandleARB", 40, -1 }, + { "glMakeImageHandleResidentARB", 40, -1 }, + { "glMakeImageHandleNonResidentARB", 40, -1 }, + { "glIsImageHandleResidentARB", 40, -1 }, + { "glUniformHandleui64ARB", 40, -1 }, + { "glUniformHandleui64vARB", 40, -1 }, + { "glProgramUniformHandleui64ARB", 40, -1 }, + { "glProgramUniformHandleui64vARB", 40, -1 }, + { "glVertexAttribL1ui64ARB", 40, -1 }, + { "glVertexAttribL1ui64vARB", 40, -1 }, + { "glGetVertexAttribLui64vARB", 40, -1 }, + + /* GL_EXT_external_objects */ + { "glGetUnsignedBytevEXT", 45, -1 }, + { "glGetUnsignedBytei_vEXT", 45, -1 }, + { "glDeleteMemoryObjectsEXT", 45, -1 }, + { "glIsMemoryObjectEXT", 45, -1 }, + { "glCreateMemoryObjectsEXT", 45, -1 }, + { "glMemoryObjectParameterivEXT", 45, -1 }, + { "glGetMemoryObjectParameterivEXT", 45, -1 }, + { "glTexStorageMem2DEXT", 45, -1 }, + { "glTexStorageMem2DMultisampleEXT", 45, -1 }, + { "glTexStorageMem3DEXT", 45, -1 }, + { "glTexStorageMem3DMultisampleEXT", 45, -1 }, + { "glBufferStorageMemEXT", 45, -1 }, + { "glTextureStorageMem2DEXT", 45, -1 }, + { "glTextureStorageMem2DMultisampleEXT", 45, -1 }, + { "glTextureStorageMem3DEXT", 45, -1 }, + { "glTextureStorageMem3DMultisampleEXT", 45, -1 }, + { "glNamedBufferStorageMemEXT", 45, -1 }, + { "glTexStorageMem1DEXT", 45, -1 }, + { "glTextureStorageMem1DEXT", 45, -1 }, + { "glGenSemaphoresEXT", 45, -1 }, + { "glDeleteSemaphoresEXT", 45, -1 }, + { "glIsSemaphoreEXT", 45, -1 }, + { "glSemaphoreParameterui64vEXT", 45, -1 }, + { "glGetSemaphoreParameterui64vEXT", 45, -1 }, + { "glWaitSemaphoreEXT", 45, -1 }, + { "glSignalSemaphoreEXT", 45, -1 }, + + /* GL_EXT_external_objects_fd */ + { "glImportMemoryFdEXT", 45, -1 }, + { "glImportSemaphoreFdEXT", 45, -1 }, + + /* GL_ARB_gl_spirv */ + { "glSpecializeShaderARB", 45, -1 }, + + /* GL_EXT_shader_framebuffer_fetch_non_coherent */ + { "glFramebufferFetchBarrierEXT", 20, -1 }, + + /* GL_NV_conservative_raster */ + { "glSubpixelPrecisionBiasNV", 10, -1 }, + + /* GL_NV_conservative_raster_dilate */ + { "glConservativeRasterParameterfNV", 10, -1 }, + + /* GL_NV_conservative_raster_pre_snap_triangles */ + { "glConservativeRasterParameteriNV", 10, -1 }, + + /* GL_ARB_sample_locations */ + { "glFramebufferSampleLocationsfvARB", 30, -1 }, + { "glNamedFramebufferSampleLocationsfvARB", 30, -1 }, + { "glEvaluateDepthValuesARB", 30, -1 }, + + /* GL_ARB_indirect_parameters */ + { "glMultiDrawArraysIndirectCountARB", 11, -1 }, + { "glMultiDrawElementsIndirectCountARB", 11, -1 }, + + /* GL_AMD_framebuffer_multisample_advanced */ + { "glRenderbufferStorageMultisampleAdvancedAMD", 11, -1 }, + { "glNamedRenderbufferStorageMultisampleAdvancedAMD", 11, -1 }, + + { NULL, 0, -1 } +}; + +const struct function gl_compatibility_functions_possible[] = { + { "glBindRenderbufferEXT", 10, -1 }, + { "glBindFramebufferEXT", 10, -1 }, + { "glNewList", 10, _gloffset_NewList }, + { "glEndList", 10, _gloffset_EndList }, + { "glCallList", 10, _gloffset_CallList }, + { "glCallLists", 10, _gloffset_CallLists }, + { "glDeleteLists", 10, _gloffset_DeleteLists }, + { "glGenLists", 10, _gloffset_GenLists }, + { "glListBase", 10, _gloffset_ListBase }, + { "glBegin", 10, _gloffset_Begin }, + { "glBitmap", 10, _gloffset_Bitmap }, + { "glColor3b", 10, _gloffset_Color3b }, + { "glColor3bv", 10, _gloffset_Color3bv }, + { "glColor3d", 10, _gloffset_Color3d }, + { "glColor3dv", 10, _gloffset_Color3dv }, + { "glColor3f", 10, _gloffset_Color3f }, + { "glColor3fv", 10, _gloffset_Color3fv }, + { "glColor3i", 10, _gloffset_Color3i }, + { "glColor3iv", 10, _gloffset_Color3iv }, + { "glColor3s", 10, _gloffset_Color3s }, + { "glColor3sv", 10, _gloffset_Color3sv }, + { "glColor3ub", 10, _gloffset_Color3ub }, + { "glColor3ubv", 10, _gloffset_Color3ubv }, + { "glColor3ui", 10, _gloffset_Color3ui }, + { "glColor3uiv", 10, _gloffset_Color3uiv }, + { "glColor3us", 10, _gloffset_Color3us }, + { "glColor3usv", 10, _gloffset_Color3usv }, + { "glColor4b", 10, _gloffset_Color4b }, + { "glColor4bv", 10, _gloffset_Color4bv }, + { "glColor4d", 10, _gloffset_Color4d }, + { "glColor4dv", 10, _gloffset_Color4dv }, + { "glColor4f", 10, _gloffset_Color4f }, + { "glColor4fv", 10, _gloffset_Color4fv }, + { "glColor4i", 10, _gloffset_Color4i }, + { "glColor4iv", 10, _gloffset_Color4iv }, + { "glColor4s", 10, _gloffset_Color4s }, + { "glColor4sv", 10, _gloffset_Color4sv }, + { "glColor4ub", 10, _gloffset_Color4ub }, + { "glColor4ubv", 10, _gloffset_Color4ubv }, + { "glColor4ui", 10, _gloffset_Color4ui }, + { "glColor4uiv", 10, _gloffset_Color4uiv }, + { "glColor4us", 10, _gloffset_Color4us }, + { "glColor4usv", 10, _gloffset_Color4usv }, + { "glEdgeFlag", 10, _gloffset_EdgeFlag }, + { "glEdgeFlagv", 10, _gloffset_EdgeFlagv }, + { "glEnd", 10, _gloffset_End }, + { "glIndexd", 10, _gloffset_Indexd }, + { "glIndexdv", 10, _gloffset_Indexdv }, + { "glIndexf", 10, _gloffset_Indexf }, + { "glIndexfv", 10, _gloffset_Indexfv }, + { "glIndexi", 10, _gloffset_Indexi }, + { "glIndexiv", 10, _gloffset_Indexiv }, + { "glIndexs", 10, _gloffset_Indexs }, + { "glIndexsv", 10, _gloffset_Indexsv }, + { "glNormal3b", 10, _gloffset_Normal3b }, + { "glNormal3bv", 10, _gloffset_Normal3bv }, + { "glNormal3d", 10, _gloffset_Normal3d }, + { "glNormal3dv", 10, _gloffset_Normal3dv }, + { "glNormal3f", 10, _gloffset_Normal3f }, + { "glNormal3fv", 10, _gloffset_Normal3fv }, + { "glNormal3i", 10, _gloffset_Normal3i }, + { "glNormal3iv", 10, _gloffset_Normal3iv }, + { "glNormal3s", 10, _gloffset_Normal3s }, + { "glNormal3sv", 10, _gloffset_Normal3sv }, + { "glRasterPos2d", 10, _gloffset_RasterPos2d }, + { "glRasterPos2dv", 10, _gloffset_RasterPos2dv }, + { "glRasterPos2f", 10, _gloffset_RasterPos2f }, + { "glRasterPos2fv", 10, _gloffset_RasterPos2fv }, + { "glRasterPos2i", 10, _gloffset_RasterPos2i }, + { "glRasterPos2iv", 10, _gloffset_RasterPos2iv }, + { "glRasterPos2s", 10, _gloffset_RasterPos2s }, + { "glRasterPos2sv", 10, _gloffset_RasterPos2sv }, + { "glRasterPos3d", 10, _gloffset_RasterPos3d }, + { "glRasterPos3dv", 10, _gloffset_RasterPos3dv }, + { "glRasterPos3f", 10, _gloffset_RasterPos3f }, + { "glRasterPos3fv", 10, _gloffset_RasterPos3fv }, + { "glRasterPos3i", 10, _gloffset_RasterPos3i }, + { "glRasterPos3iv", 10, _gloffset_RasterPos3iv }, + { "glRasterPos3s", 10, _gloffset_RasterPos3s }, + { "glRasterPos3sv", 10, _gloffset_RasterPos3sv }, + { "glRasterPos4d", 10, _gloffset_RasterPos4d }, + { "glRasterPos4dv", 10, _gloffset_RasterPos4dv }, + { "glRasterPos4f", 10, _gloffset_RasterPos4f }, + { "glRasterPos4fv", 10, _gloffset_RasterPos4fv }, + { "glRasterPos4i", 10, _gloffset_RasterPos4i }, + { "glRasterPos4iv", 10, _gloffset_RasterPos4iv }, + { "glRasterPos4s", 10, _gloffset_RasterPos4s }, + { "glRasterPos4sv", 10, _gloffset_RasterPos4sv }, + { "glRectd", 10, _gloffset_Rectd }, + { "glRectdv", 10, _gloffset_Rectdv }, + { "glRectf", 10, _gloffset_Rectf }, + { "glRectfv", 10, _gloffset_Rectfv }, + { "glRecti", 10, _gloffset_Recti }, + { "glRectiv", 10, _gloffset_Rectiv }, + { "glRects", 10, _gloffset_Rects }, + { "glRectsv", 10, _gloffset_Rectsv }, + { "glTexCoord1d", 10, _gloffset_TexCoord1d }, + { "glTexCoord1dv", 10, _gloffset_TexCoord1dv }, + { "glTexCoord1f", 10, _gloffset_TexCoord1f }, + { "glTexCoord1fv", 10, _gloffset_TexCoord1fv }, + { "glTexCoord1i", 10, _gloffset_TexCoord1i }, + { "glTexCoord1iv", 10, _gloffset_TexCoord1iv }, + { "glTexCoord1s", 10, _gloffset_TexCoord1s }, + { "glTexCoord1sv", 10, _gloffset_TexCoord1sv }, + { "glTexCoord2d", 10, _gloffset_TexCoord2d }, + { "glTexCoord2dv", 10, _gloffset_TexCoord2dv }, + { "glTexCoord2f", 10, _gloffset_TexCoord2f }, + { "glTexCoord2fv", 10, _gloffset_TexCoord2fv }, + { "glTexCoord2i", 10, _gloffset_TexCoord2i }, + { "glTexCoord2iv", 10, _gloffset_TexCoord2iv }, + { "glTexCoord2s", 10, _gloffset_TexCoord2s }, + { "glTexCoord2sv", 10, _gloffset_TexCoord2sv }, + { "glTexCoord3d", 10, _gloffset_TexCoord3d }, + { "glTexCoord3dv", 10, _gloffset_TexCoord3dv }, + { "glTexCoord3f", 10, _gloffset_TexCoord3f }, + { "glTexCoord3fv", 10, _gloffset_TexCoord3fv }, + { "glTexCoord3i", 10, _gloffset_TexCoord3i }, + { "glTexCoord3iv", 10, _gloffset_TexCoord3iv }, + { "glTexCoord3s", 10, _gloffset_TexCoord3s }, + { "glTexCoord3sv", 10, _gloffset_TexCoord3sv }, + { "glTexCoord4d", 10, _gloffset_TexCoord4d }, + { "glTexCoord4dv", 10, _gloffset_TexCoord4dv }, + { "glTexCoord4f", 10, _gloffset_TexCoord4f }, + { "glTexCoord4fv", 10, _gloffset_TexCoord4fv }, + { "glTexCoord4i", 10, _gloffset_TexCoord4i }, + { "glTexCoord4iv", 10, _gloffset_TexCoord4iv }, + { "glTexCoord4s", 10, _gloffset_TexCoord4s }, + { "glTexCoord4sv", 10, _gloffset_TexCoord4sv }, + { "glVertex2d", 10, _gloffset_Vertex2d }, + { "glVertex2dv", 10, _gloffset_Vertex2dv }, + { "glVertex2f", 10, _gloffset_Vertex2f }, + { "glVertex2fv", 10, _gloffset_Vertex2fv }, + { "glVertex2i", 10, _gloffset_Vertex2i }, + { "glVertex2iv", 10, _gloffset_Vertex2iv }, + { "glVertex2s", 10, _gloffset_Vertex2s }, + { "glVertex2sv", 10, _gloffset_Vertex2sv }, + { "glVertex3d", 10, _gloffset_Vertex3d }, + { "glVertex3dv", 10, _gloffset_Vertex3dv }, + { "glVertex3f", 10, _gloffset_Vertex3f }, + { "glVertex3fv", 10, _gloffset_Vertex3fv }, + { "glVertex3i", 10, _gloffset_Vertex3i }, + { "glVertex3iv", 10, _gloffset_Vertex3iv }, + { "glVertex3s", 10, _gloffset_Vertex3s }, + { "glVertex3sv", 10, _gloffset_Vertex3sv }, + { "glVertex4d", 10, _gloffset_Vertex4d }, + { "glVertex4dv", 10, _gloffset_Vertex4dv }, + { "glVertex4f", 10, _gloffset_Vertex4f }, + { "glVertex4fv", 10, _gloffset_Vertex4fv }, + { "glVertex4i", 10, _gloffset_Vertex4i }, + { "glVertex4iv", 10, _gloffset_Vertex4iv }, + { "glVertex4s", 10, _gloffset_Vertex4s }, + { "glVertex4sv", 10, _gloffset_Vertex4sv }, + { "glClipPlane", 10, _gloffset_ClipPlane }, + { "glColorMaterial", 10, _gloffset_ColorMaterial }, + { "glFogf", 10, _gloffset_Fogf }, + { "glFogfv", 10, _gloffset_Fogfv }, + { "glFogi", 10, _gloffset_Fogi }, + { "glFogiv", 10, _gloffset_Fogiv }, + { "glLightf", 10, _gloffset_Lightf }, + { "glLightfv", 10, _gloffset_Lightfv }, + { "glLighti", 10, _gloffset_Lighti }, + { "glLightiv", 10, _gloffset_Lightiv }, + { "glLightModelf", 10, _gloffset_LightModelf }, + { "glLightModelfv", 10, _gloffset_LightModelfv }, + { "glLightModeli", 10, _gloffset_LightModeli }, + { "glLightModeliv", 10, _gloffset_LightModeliv }, + { "glLineStipple", 10, _gloffset_LineStipple }, + { "glMaterialf", 10, _gloffset_Materialf }, + { "glMaterialfv", 10, _gloffset_Materialfv }, + { "glMateriali", 10, _gloffset_Materiali }, + { "glMaterialiv", 10, _gloffset_Materialiv }, + { "glPolygonStipple", 10, _gloffset_PolygonStipple }, + { "glShadeModel", 10, _gloffset_ShadeModel }, + { "glTexEnvf", 10, _gloffset_TexEnvf }, + { "glTexEnvfv", 10, _gloffset_TexEnvfv }, + { "glTexEnvi", 10, _gloffset_TexEnvi }, + { "glTexEnviv", 10, _gloffset_TexEnviv }, + { "glTexGend", 10, _gloffset_TexGend }, + { "glTexGendv", 10, _gloffset_TexGendv }, + { "glTexGenf", 10, _gloffset_TexGenf }, + { "glTexGenfv", 10, _gloffset_TexGenfv }, + { "glTexGeni", 10, _gloffset_TexGeni }, + { "glTexGeniv", 10, _gloffset_TexGeniv }, + { "glFeedbackBuffer", 10, _gloffset_FeedbackBuffer }, + { "glSelectBuffer", 10, _gloffset_SelectBuffer }, + { "glRenderMode", 10, _gloffset_RenderMode }, + { "glInitNames", 10, _gloffset_InitNames }, + { "glLoadName", 10, _gloffset_LoadName }, + { "glPassThrough", 10, _gloffset_PassThrough }, + { "glPopName", 10, _gloffset_PopName }, + { "glPushName", 10, _gloffset_PushName }, + { "glClearAccum", 10, _gloffset_ClearAccum }, + { "glClearIndex", 10, _gloffset_ClearIndex }, + { "glIndexMask", 10, _gloffset_IndexMask }, + { "glAccum", 10, _gloffset_Accum }, + { "glPopAttrib", 10, _gloffset_PopAttrib }, + { "glPushAttrib", 10, _gloffset_PushAttrib }, + { "glMap1d", 10, _gloffset_Map1d }, + { "glMap1f", 10, _gloffset_Map1f }, + { "glMap2d", 10, _gloffset_Map2d }, + { "glMap2f", 10, _gloffset_Map2f }, + { "glMapGrid1d", 10, _gloffset_MapGrid1d }, + { "glMapGrid1f", 10, _gloffset_MapGrid1f }, + { "glMapGrid2d", 10, _gloffset_MapGrid2d }, + { "glMapGrid2f", 10, _gloffset_MapGrid2f }, + { "glEvalCoord1d", 10, _gloffset_EvalCoord1d }, + { "glEvalCoord1dv", 10, _gloffset_EvalCoord1dv }, + { "glEvalCoord1f", 10, _gloffset_EvalCoord1f }, + { "glEvalCoord1fv", 10, _gloffset_EvalCoord1fv }, + { "glEvalCoord2d", 10, _gloffset_EvalCoord2d }, + { "glEvalCoord2dv", 10, _gloffset_EvalCoord2dv }, + { "glEvalCoord2f", 10, _gloffset_EvalCoord2f }, + { "glEvalCoord2fv", 10, _gloffset_EvalCoord2fv }, + { "glEvalMesh1", 10, _gloffset_EvalMesh1 }, + { "glEvalPoint1", 10, _gloffset_EvalPoint1 }, + { "glEvalMesh2", 10, _gloffset_EvalMesh2 }, + { "glEvalPoint2", 10, _gloffset_EvalPoint2 }, + { "glAlphaFunc", 10, _gloffset_AlphaFunc }, + { "glPixelZoom", 10, _gloffset_PixelZoom }, + { "glPixelTransferf", 10, _gloffset_PixelTransferf }, + { "glPixelTransferi", 10, _gloffset_PixelTransferi }, + { "glPixelMapfv", 10, _gloffset_PixelMapfv }, + { "glPixelMapuiv", 10, _gloffset_PixelMapuiv }, + { "glPixelMapusv", 10, _gloffset_PixelMapusv }, + { "glCopyPixels", 10, _gloffset_CopyPixels }, + { "glDrawPixels", 10, _gloffset_DrawPixels }, + { "glGetClipPlane", 10, _gloffset_GetClipPlane }, + { "glGetLightfv", 10, _gloffset_GetLightfv }, + { "glGetLightiv", 10, _gloffset_GetLightiv }, + { "glGetMapdv", 10, _gloffset_GetMapdv }, + { "glGetMapfv", 10, _gloffset_GetMapfv }, + { "glGetMapiv", 10, _gloffset_GetMapiv }, + { "glGetMaterialfv", 10, _gloffset_GetMaterialfv }, + { "glGetMaterialiv", 10, _gloffset_GetMaterialiv }, + { "glGetPixelMapfv", 10, _gloffset_GetPixelMapfv }, + { "glGetPixelMapuiv", 10, _gloffset_GetPixelMapuiv }, + { "glGetPixelMapusv", 10, _gloffset_GetPixelMapusv }, + { "glGetPolygonStipple", 10, _gloffset_GetPolygonStipple }, + { "glGetTexEnvfv", 10, _gloffset_GetTexEnvfv }, + { "glGetTexEnviv", 10, _gloffset_GetTexEnviv }, + { "glGetTexGendv", 10, _gloffset_GetTexGendv }, + { "glGetTexGenfv", 10, _gloffset_GetTexGenfv }, + { "glGetTexGeniv", 10, _gloffset_GetTexGeniv }, + { "glIsList", 10, _gloffset_IsList }, + { "glFrustum", 10, _gloffset_Frustum }, + { "glLoadIdentity", 10, _gloffset_LoadIdentity }, + { "glLoadMatrixf", 10, _gloffset_LoadMatrixf }, + { "glLoadMatrixd", 10, _gloffset_LoadMatrixd }, + { "glMatrixMode", 10, _gloffset_MatrixMode }, + { "glMultMatrixf", 10, _gloffset_MultMatrixf }, + { "glMultMatrixd", 10, _gloffset_MultMatrixd }, + { "glOrtho", 10, _gloffset_Ortho }, + { "glPopMatrix", 10, _gloffset_PopMatrix }, + { "glPushMatrix", 10, _gloffset_PushMatrix }, + { "glRotated", 10, _gloffset_Rotated }, + { "glRotatef", 10, _gloffset_Rotatef }, + { "glScaled", 10, _gloffset_Scaled }, + { "glScalef", 10, _gloffset_Scalef }, + { "glTranslated", 10, _gloffset_Translated }, + { "glTranslatef", 10, _gloffset_Translatef }, + { "glArrayElement", 10, _gloffset_ArrayElement }, + { "glColorPointer", 10, _gloffset_ColorPointer }, + { "glDisableClientState", 10, _gloffset_DisableClientState }, + { "glEdgeFlagPointer", 10, _gloffset_EdgeFlagPointer }, + { "glEnableClientState", 10, _gloffset_EnableClientState }, + { "glIndexPointer", 10, _gloffset_IndexPointer }, + { "glInterleavedArrays", 10, _gloffset_InterleavedArrays }, + { "glNormalPointer", 10, _gloffset_NormalPointer }, + { "glTexCoordPointer", 10, _gloffset_TexCoordPointer }, + { "glVertexPointer", 10, _gloffset_VertexPointer }, + { "glAreTexturesResident", 10, _gloffset_AreTexturesResident }, + { "glPrioritizeTextures", 10, _gloffset_PrioritizeTextures }, + { "glIndexub", 10, _gloffset_Indexub }, + { "glIndexubv", 10, _gloffset_Indexubv }, + { "glPopClientAttrib", 10, _gloffset_PopClientAttrib }, + { "glPushClientAttrib", 10, _gloffset_PushClientAttrib }, + { "glColorTable", 10, _gloffset_ColorTable }, + { "glColorTableParameterfv", 10, _gloffset_ColorTableParameterfv }, + { "glColorTableParameteriv", 10, _gloffset_ColorTableParameteriv }, + { "glCopyColorTable", 10, _gloffset_CopyColorTable }, + { "glGetColorTable", 10, _gloffset_GetColorTable }, + { "glGetColorTableParameterfv", 10, _gloffset_GetColorTableParameterfv }, + { "glGetColorTableParameteriv", 10, _gloffset_GetColorTableParameteriv }, + { "glColorSubTable", 10, _gloffset_ColorSubTable }, + { "glCopyColorSubTable", 10, _gloffset_CopyColorSubTable }, + { "glConvolutionFilter1D", 10, _gloffset_ConvolutionFilter1D }, + { "glConvolutionFilter2D", 10, _gloffset_ConvolutionFilter2D }, + { "glConvolutionParameterf", 10, _gloffset_ConvolutionParameterf }, + { "glConvolutionParameterfv", 10, _gloffset_ConvolutionParameterfv }, + { "glConvolutionParameteri", 10, _gloffset_ConvolutionParameteri }, + { "glConvolutionParameteriv", 10, _gloffset_ConvolutionParameteriv }, + { "glCopyConvolutionFilter1D", 10, _gloffset_CopyConvolutionFilter1D }, + { "glCopyConvolutionFilter2D", 10, _gloffset_CopyConvolutionFilter2D }, + { "glGetConvolutionFilter", 10, _gloffset_GetConvolutionFilter }, + { "glGetConvolutionParameterfv", 10, _gloffset_GetConvolutionParameterfv }, + { "glGetConvolutionParameteriv", 10, _gloffset_GetConvolutionParameteriv }, + { "glGetSeparableFilter", 10, _gloffset_GetSeparableFilter }, + { "glSeparableFilter2D", 10, _gloffset_SeparableFilter2D }, + { "glGetHistogram", 10, _gloffset_GetHistogram }, + { "glGetHistogramParameterfv", 10, _gloffset_GetHistogramParameterfv }, + { "glGetHistogramParameteriv", 10, _gloffset_GetHistogramParameteriv }, + { "glGetMinmax", 10, _gloffset_GetMinmax }, + { "glGetMinmaxParameterfv", 10, _gloffset_GetMinmaxParameterfv }, + { "glGetMinmaxParameteriv", 10, _gloffset_GetMinmaxParameteriv }, + { "glHistogram", 10, _gloffset_Histogram }, + { "glMinmax", 10, _gloffset_Minmax }, + { "glResetHistogram", 10, _gloffset_ResetHistogram }, + { "glResetMinmax", 10, _gloffset_ResetMinmax }, + { "glClientActiveTexture", 10, _gloffset_ClientActiveTexture }, + { "glMultiTexCoord1d", 10, _gloffset_MultiTexCoord1d }, + { "glMultiTexCoord1dv", 10, _gloffset_MultiTexCoord1dv }, + { "glMultiTexCoord1f", 10, _gloffset_MultiTexCoord1fARB }, + { "glMultiTexCoord1fv", 10, _gloffset_MultiTexCoord1fvARB }, + { "glMultiTexCoord1i", 10, _gloffset_MultiTexCoord1i }, + { "glMultiTexCoord1iv", 10, _gloffset_MultiTexCoord1iv }, + { "glMultiTexCoord1s", 10, _gloffset_MultiTexCoord1s }, + { "glMultiTexCoord1sv", 10, _gloffset_MultiTexCoord1sv }, + { "glMultiTexCoord2d", 10, _gloffset_MultiTexCoord2d }, + { "glMultiTexCoord2dv", 10, _gloffset_MultiTexCoord2dv }, + { "glMultiTexCoord2f", 10, _gloffset_MultiTexCoord2fARB }, + { "glMultiTexCoord2fv", 10, _gloffset_MultiTexCoord2fvARB }, + { "glMultiTexCoord2i", 10, _gloffset_MultiTexCoord2i }, + { "glMultiTexCoord2iv", 10, _gloffset_MultiTexCoord2iv }, + { "glMultiTexCoord2s", 10, _gloffset_MultiTexCoord2s }, + { "glMultiTexCoord2sv", 10, _gloffset_MultiTexCoord2sv }, + { "glMultiTexCoord3d", 10, _gloffset_MultiTexCoord3d }, + { "glMultiTexCoord3dv", 10, _gloffset_MultiTexCoord3dv }, + { "glMultiTexCoord3f", 10, _gloffset_MultiTexCoord3fARB }, + { "glMultiTexCoord3fv", 10, _gloffset_MultiTexCoord3fvARB }, + { "glMultiTexCoord3i", 10, _gloffset_MultiTexCoord3i }, + { "glMultiTexCoord3iv", 10, _gloffset_MultiTexCoord3iv }, + { "glMultiTexCoord3s", 10, _gloffset_MultiTexCoord3s }, + { "glMultiTexCoord3sv", 10, _gloffset_MultiTexCoord3sv }, + { "glMultiTexCoord4d", 10, _gloffset_MultiTexCoord4d }, + { "glMultiTexCoord4dv", 10, _gloffset_MultiTexCoord4dv }, + { "glMultiTexCoord4f", 10, _gloffset_MultiTexCoord4fARB }, + { "glMultiTexCoord4fv", 10, _gloffset_MultiTexCoord4fvARB }, + { "glMultiTexCoord4i", 10, _gloffset_MultiTexCoord4i }, + { "glMultiTexCoord4iv", 10, _gloffset_MultiTexCoord4iv }, + { "glMultiTexCoord4s", 10, _gloffset_MultiTexCoord4s }, + { "glMultiTexCoord4sv", 10, _gloffset_MultiTexCoord4sv }, + { "glLoadTransposeMatrixf", 10, -1 }, + { "glLoadTransposeMatrixd", 10, -1 }, + { "glMultTransposeMatrixf", 10, -1 }, + { "glMultTransposeMatrixd", 10, -1 }, + { "glFogCoordf", 10, -1 }, + { "glFogCoordfv", 10, -1 }, + { "glFogCoordd", 10, -1 }, + { "glFogCoorddv", 10, -1 }, + { "glFogCoordPointer", 10, -1 }, + { "glSecondaryColor3b", 10, -1 }, + { "glSecondaryColor3bv", 10, -1 }, + { "glSecondaryColor3d", 10, -1 }, + { "glSecondaryColor3dv", 10, -1 }, + { "glSecondaryColor3f", 10, -1 }, + { "glSecondaryColor3fv", 10, -1 }, + { "glSecondaryColor3i", 10, -1 }, + { "glSecondaryColor3iv", 10, -1 }, + { "glSecondaryColor3s", 10, -1 }, + { "glSecondaryColor3sv", 10, -1 }, + { "glSecondaryColor3ub", 10, -1 }, + { "glSecondaryColor3ubv", 10, -1 }, + { "glSecondaryColor3ui", 10, -1 }, + { "glSecondaryColor3uiv", 10, -1 }, + { "glSecondaryColor3us", 10, -1 }, + { "glSecondaryColor3usv", 10, -1 }, + { "glSecondaryColorPointer", 10, -1 }, + { "glWindowPos2d", 10, -1 }, + { "glWindowPos2dv", 10, -1 }, + { "glWindowPos2f", 10, -1 }, + { "glWindowPos2fv", 10, -1 }, + { "glWindowPos2i", 10, -1 }, + { "glWindowPos2iv", 10, -1 }, + { "glWindowPos2s", 10, -1 }, + { "glWindowPos2sv", 10, -1 }, + { "glWindowPos3d", 10, -1 }, + { "glWindowPos3dv", 10, -1 }, + { "glWindowPos3f", 10, -1 }, + { "glWindowPos3fv", 10, -1 }, + { "glWindowPos3i", 10, -1 }, + { "glWindowPos3iv", 10, -1 }, + { "glWindowPos3s", 10, -1 }, + { "glWindowPos3sv", 10, -1 }, + { "glProgramStringARB", 10, -1 }, + { "glProgramEnvParameter4dARB", 10, -1 }, + { "glProgramEnvParameter4dvARB", 10, -1 }, + { "glProgramEnvParameter4fARB", 10, -1 }, + { "glProgramEnvParameter4fvARB", 10, -1 }, + { "glProgramLocalParameter4dARB", 10, -1 }, + { "glProgramLocalParameter4dvARB", 10, -1 }, + { "glProgramLocalParameter4fARB", 10, -1 }, + { "glProgramLocalParameter4fvARB", 10, -1 }, + { "glGetProgramEnvParameterdvARB", 10, -1 }, + { "glGetProgramEnvParameterfvARB", 10, -1 }, + { "glGetProgramLocalParameterdvARB", 10, -1 }, + { "glGetProgramLocalParameterfvARB", 10, -1 }, + { "glGetProgramivARB", 10, -1 }, + { "glGetProgramStringARB", 10, -1 }, + { "glColorPointerEXT", 10, -1 }, + { "glEdgeFlagPointerEXT", 10, -1 }, + { "glIndexPointerEXT", 10, -1 }, + { "glNormalPointerEXT", 10, -1 }, + { "glTexCoordPointerEXT", 10, -1 }, + { "glVertexPointerEXT", 10, -1 }, + { "glLockArraysEXT", 10, -1 }, + { "glUnlockArraysEXT", 10, -1 }, + { "glWindowPos4dMESA", 10, -1 }, + { "glWindowPos4dvMESA", 10, -1 }, + { "glWindowPos4fMESA", 10, -1 }, + { "glWindowPos4fvMESA", 10, -1 }, + { "glWindowPos4iMESA", 10, -1 }, + { "glWindowPos4ivMESA", 10, -1 }, + { "glWindowPos4sMESA", 10, -1 }, + { "glWindowPos4svMESA", 10, -1 }, + { "glBindProgramNV", 10, -1 }, + { "glDeleteProgramsNV", 10, -1 }, + { "glGenProgramsNV", 10, -1 }, + { "glIsProgramNV", 10, -1 }, + { "glVertexAttrib1sNV", 10, -1 }, + { "glVertexAttrib1svNV", 10, -1 }, + { "glVertexAttrib2sNV", 10, -1 }, + { "glVertexAttrib2svNV", 10, -1 }, + { "glVertexAttrib3sNV", 10, -1 }, + { "glVertexAttrib3svNV", 10, -1 }, + { "glVertexAttrib4sNV", 10, -1 }, + { "glVertexAttrib4svNV", 10, -1 }, + { "glVertexAttrib1fNV", 10, -1 }, + { "glVertexAttrib1fvNV", 10, -1 }, + { "glVertexAttrib2fNV", 10, -1 }, + { "glVertexAttrib2fvNV", 10, -1 }, + { "glVertexAttrib3fNV", 10, -1 }, + { "glVertexAttrib3fvNV", 10, -1 }, + { "glVertexAttrib4fNV", 10, -1 }, + { "glVertexAttrib4fvNV", 10, -1 }, + { "glVertexAttrib1dNV", 10, -1 }, + { "glVertexAttrib1dvNV", 10, -1 }, + { "glVertexAttrib2dNV", 10, -1 }, + { "glVertexAttrib2dvNV", 10, -1 }, + { "glVertexAttrib3dNV", 10, -1 }, + { "glVertexAttrib3dvNV", 10, -1 }, + { "glVertexAttrib4dNV", 10, -1 }, + { "glVertexAttrib4dvNV", 10, -1 }, + { "glVertexAttrib4ubNV", 10, -1 }, + { "glVertexAttrib4ubvNV", 10, -1 }, + { "glVertexAttribs1svNV", 10, -1 }, + { "glVertexAttribs2svNV", 10, -1 }, + { "glVertexAttribs3svNV", 10, -1 }, + { "glVertexAttribs4svNV", 10, -1 }, + { "glVertexAttribs1fvNV", 10, -1 }, + { "glVertexAttribs2fvNV", 10, -1 }, + { "glVertexAttribs3fvNV", 10, -1 }, + { "glVertexAttribs4fvNV", 10, -1 }, + { "glVertexAttribs1dvNV", 10, -1 }, + { "glVertexAttribs2dvNV", 10, -1 }, + { "glVertexAttribs3dvNV", 10, -1 }, + { "glVertexAttribs4dvNV", 10, -1 }, + { "glVertexAttribs4ubvNV", 10, -1 }, + { "glGenFragmentShadersATI", 10, -1 }, + { "glBindFragmentShaderATI", 10, -1 }, + { "glDeleteFragmentShaderATI", 10, -1 }, + { "glBeginFragmentShaderATI", 10, -1 }, + { "glEndFragmentShaderATI", 10, -1 }, + { "glPassTexCoordATI", 10, -1 }, + { "glSampleMapATI", 10, -1 }, + { "glColorFragmentOp1ATI", 10, -1 }, + { "glColorFragmentOp2ATI", 10, -1 }, + { "glColorFragmentOp3ATI", 10, -1 }, + { "glAlphaFragmentOp1ATI", 10, -1 }, + { "glAlphaFragmentOp2ATI", 10, -1 }, + { "glAlphaFragmentOp3ATI", 10, -1 }, + { "glSetFragmentShaderConstantATI", 10, -1 }, + { "glActiveStencilFaceEXT", 10, -1 }, + { "glStencilFuncSeparateATI", 10, -1 }, + { "glProgramEnvParameters4fvEXT", 10, -1 }, + { "glProgramLocalParameters4fvEXT", 10, -1 }, + { "glPrimitiveRestartNV", 10, -1 }, + + { NULL, 0, -1 } +}; + +const struct function gl_core_functions_possible[] = { + /* GL_ARB_ES3_2_compatibility */ + { "glPrimitiveBoundingBoxARB", 45, -1 }, + + /* GL_ARB_gpu_shader_int64 */ + { "glUniform1i64ARB", 45, -1 }, + { "glUniform2i64ARB", 45, -1 }, + { "glUniform3i64ARB", 45, -1 }, + { "glUniform4i64ARB", 45, -1 }, + { "glUniform1ui64ARB", 45, -1 }, + { "glUniform2ui64ARB", 45, -1 }, + { "glUniform3ui64ARB", 45, -1 }, + { "glUniform4ui64ARB", 45, -1 }, + { "glUniform1i64vARB", 45, -1 }, + { "glUniform2i64vARB", 45, -1 }, + { "glUniform3i64vARB", 45, -1 }, + { "glUniform4i64vARB", 45, -1 }, + { "glUniform1ui64vARB", 45, -1 }, + { "glUniform2ui64vARB", 45, -1 }, + { "glUniform3ui64vARB", 45, -1 }, + { "glUniform4ui64vARB", 45, -1 }, + { "glGetUniformi64vARB", 45, -1 }, + { "glGetUniformui64vARB", 45, -1 }, + { "glGetnUniformi64vARB", 45, -1 }, + { "glGetnUniformui64vARB", 45, -1 }, + { "glProgramUniform1i64ARB", 45, -1 }, + { "glProgramUniform2i64ARB", 45, -1 }, + { "glProgramUniform3i64ARB", 45, -1 }, + { "glProgramUniform4i64ARB", 45, -1 }, + { "glProgramUniform1ui64ARB", 45, -1 }, + { "glProgramUniform2ui64ARB", 45, -1 }, + { "glProgramUniform3ui64ARB", 45, -1 }, + { "glProgramUniform4ui64ARB", 45, -1 }, + { "glProgramUniform1i64vARB", 45, -1 }, + { "glProgramUniform2i64vARB", 45, -1 }, + { "glProgramUniform3i64vARB", 45, -1 }, + { "glProgramUniform4i64vARB", 45, -1 }, + { "glProgramUniform1ui64vARB", 45, -1 }, + { "glProgramUniform2ui64vARB", 45, -1 }, + { "glProgramUniform3ui64vARB", 45, -1 }, + { "glProgramUniform4ui64vARB", 45, -1 }, + + /* GL_ARB_gl_spirv */ + { "glSpecializeShaderARB", 45, -1 }, + { NULL, 0, -1 } }; @@ -1151,7 +1818,8 @@ const struct function gles11_functions_possible[] = { { "glGetLightxv", 11, -1 }, { "glGetMaterialfv", 11, _gloffset_GetMaterialfv }, { "glGetMaterialxv", 11, -1 }, - { "glGetPointerv", 11, _gloffset_GetPointerv }, + // We check for the aliased -KHR version in GLES 1.1 +// { "glGetPointerv", 11, _gloffset_GetPointerv }, { "glGetRenderbufferParameterivOES", 11, -1 }, { "glGetString", 11, _gloffset_GetString }, { "glGetTexEnvfv", 11, _gloffset_GetTexEnvfv }, @@ -1253,6 +1921,32 @@ const struct function gles11_functions_possible[] = { { "glUnmapBufferOES", 11, -1 }, { "glVertexPointer", 11, _gloffset_VertexPointer }, { "glViewport", 11, _gloffset_Viewport }, + + /* GL_KHR_debug */ + { "glPushDebugGroupKHR", 11, -1 }, + { "glPopDebugGroupKHR", 11, -1 }, + { "glDebugMessageCallbackKHR", 11, -1 }, + { "glDebugMessageControlKHR", 11, -1 }, + { "glDebugMessageInsertKHR", 11, -1 }, + { "glGetDebugMessageLogKHR", 11, -1 }, + { "glGetObjectLabelKHR", 11, -1 }, + { "glGetObjectPtrLabelKHR", 11, -1 }, + { "glGetPointervKHR", 11, _gloffset_GetPointerv }, + { "glObjectLabelKHR", 11, -1 }, + { "glObjectPtrLabelKHR", 11, -1 }, + + /* GL_EXT_polygon_offset_clamp */ + { "glPolygonOffsetClampEXT", 11, -1 }, + + /* GL_NV_conservative_raster */ + { "glSubpixelPrecisionBiasNV", 20, -1 }, + + /* GL_NV_conservative_raster_dilate */ + { "glConservativeRasterParameterfNV", 20, -1 }, + + /* GL_NV_conservative_raster_pre_snap_triangles */ + { "glConservativeRasterParameteriNV", 20, -1 }, + { NULL, 0, -1 } }; @@ -1464,6 +2158,19 @@ const struct function gles2_functions_possible[] = { { "glValidateProgramPipelineEXT", 20, -1 }, { "glGetProgramPipelineInfoLogEXT", 20, -1 }, + /* GL_AMD_performance_monitor */ + { "glGetPerfMonitorGroupsAMD", 20, -1 }, + { "glGetPerfMonitorCountersAMD", 20, -1 }, + { "glGetPerfMonitorGroupStringAMD", 20, -1 }, + { "glGetPerfMonitorCounterStringAMD", 20, -1 }, + { "glGetPerfMonitorCounterInfoAMD", 20, -1 }, + { "glGenPerfMonitorsAMD", 20, -1 }, + { "glDeletePerfMonitorsAMD", 20, -1 }, + { "glSelectPerfMonitorCountersAMD", 20, -1 }, + { "glBeginPerfMonitorAMD", 20, -1 }, + { "glEndPerfMonitorAMD", 20, -1 }, + { "glGetPerfMonitorCounterDataAMD", 20, -1 }, + /* GL_INTEL_performance_query */ { "glGetFirstPerfQueryIdINTEL", 20, -1 }, { "glGetNextPerfQueryIdINTEL", 20, -1 }, @@ -1476,11 +2183,65 @@ const struct function gles2_functions_possible[] = { { "glEndPerfQueryINTEL", 20, -1 }, { "glGetPerfQueryDataINTEL", 20, -1 }, + /* GL_KHR_debug */ + { "glPushDebugGroupKHR", 20, -1 }, + { "glPopDebugGroupKHR", 20, -1 }, + { "glDebugMessageCallbackKHR", 20, -1 }, + { "glDebugMessageControlKHR", 20, -1 }, + { "glDebugMessageInsertKHR", 20, -1 }, + { "glGetDebugMessageLogKHR", 20, -1 }, + { "glGetObjectLabelKHR", 20, -1 }, + { "glGetObjectPtrLabelKHR", 20, -1 }, + { "glGetPointervKHR", 20, -1 }, + { "glObjectLabelKHR", 20, -1 }, + { "glObjectPtrLabelKHR", 20, -1 }, + + /* GL_EXT_polygon_offset_clamp */ + { "glPolygonOffsetClampEXT", 11, -1 }, + + /* GL_KHR_robustness */ + { "glGetGraphicsResetStatusKHR", 20, -1 }, + { "glReadnPixelsKHR", 20, -1 }, + { "glGetnUniformfvKHR", 20, -1 }, + { "glGetnUniformivKHR", 20, -1 }, + { "glGetnUniformuivKHR", 20, -1 }, + + /* GL_KHR_blend_equation_advanced */ + { "glBlendBarrierKHR", 20, -1 }, + + /* GL_EXT_occlusion_query_boolean */ + { "glGenQueriesEXT", 20, -1 }, + { "glDeleteQueriesEXT", 20, -1 }, + { "glIsQueryEXT", 20, -1 }, + { "glBeginQueryEXT", 20, -1 }, + { "glEndQueryEXT", 20, -1 }, + { "glGetQueryivEXT", 20, -1 }, + { "glGetQueryObjectivEXT", 20, -1 }, + { "glGetQueryObjectuivEXT", 20, -1 }, + + /* GL_EXT_disjoint_timer_query */ + { "glGetQueryObjecti64vEXT", 20, -1 }, + { "glGetQueryObjectui64vEXT", 20, -1 }, + { "glQueryCounterEXT", 20, -1 }, + + /* GL_EXT_shader_framebuffer_fetch_non_coherent */ + { "glFramebufferFetchBarrierEXT", 20, -1 }, + + /* GL_NV_conservative_raster */ + { "glSubpixelPrecisionBiasNV", 20, -1 }, + + /* GL_NV_conservative_raster_dilate */ + { "glConservativeRasterParameterfNV", 20, -1 }, + + /* GL_NV_conservative_raster_pre_snap_triangles */ + { "glConservativeRasterParameteriNV", 20, -1 }, + { NULL, 0, -1 } }; const struct function gles3_functions_possible[] = { - { "glBeginQuery", 30, -1 }, + // We check for the aliased -EXT version in GLES 2 + // { "glBeginQuery", 30, -1 }, { "glBeginTransformFeedback", 30, -1 }, { "glBindBufferBase", 30, -1 }, { "glBindBufferRange", 30, -1 }, @@ -1501,7 +2262,8 @@ const struct function gles3_functions_possible[] = { { "glCopyBufferSubData", 30, -1 }, // We check for the aliased -OES version in GLES 2 // { "glCopyTexSubImage3D", 30, -1 }, - { "glDeleteQueries", 30, -1 }, + // We check for the aliased -EXT version in GLES 2 + // { "glDeleteQueries", 30, -1 }, { "glDeleteSamplers", 30, -1 }, { "glDeleteSync", 30, -1 }, { "glDeleteTransformFeedbacks", 30, -1 }, @@ -1512,13 +2274,15 @@ const struct function gles3_functions_possible[] = { // { "glDrawBuffers", 30, -1 }, { "glDrawElementsInstanced", 30, -1 }, { "glDrawRangeElements", 30, -1 }, - { "glEndQuery", 30, -1 }, + // We check for the aliased -EXT version in GLES 2 + // { "glEndQuery", 30, -1 }, { "glEndTransformFeedback", 30, -1 }, { "glFenceSync", 30, -1 }, // We check for the aliased -EXT version in GLES 2 // { "glFlushMappedBufferRange", 30, -1 }, { "glFramebufferTextureLayer", 30, -1 }, - { "glGenQueries", 30, -1 }, + // We check for the aliased -EXT version in GLES 2 + // { "glGenQueries", 30, -1 }, { "glGenSamplers", 30, -1 }, { "glGenTransformFeedbacks", 30, -1 }, // We check for the aliased -OES version in GLES 2 @@ -1534,9 +2298,12 @@ const struct function gles3_functions_possible[] = { { "glGetInteger64v", 30, -1 }, { "glGetIntegeri_v", 30, -1 }, { "glGetInternalformativ", 30, -1 }, + { "glGetInternalformati64v", 30, -1 }, // glGetProgramBinary aliases glGetProgramBinaryOES in GLES 2 - { "glGetQueryiv", 30, -1 }, - { "glGetQueryObjectuiv", 30, -1 }, + // We check for the aliased -EXT version in GLES 2 + // { "glGetQueryiv", 30, -1 }, + // We check for the aliased -EXT version in GLES 2 + // { "glGetQueryObjectuiv", 30, -1 }, { "glGetSamplerParameterfv", 30, -1 }, { "glGetSamplerParameteriv", 30, -1 }, { "glGetStringi", 30, -1 }, @@ -1549,7 +2316,8 @@ const struct function gles3_functions_possible[] = { { "glGetVertexAttribIuiv", 30, -1 }, { "glInvalidateFramebuffer", 30, -1 }, { "glInvalidateSubFramebuffer", 30, -1 }, - { "glIsQuery", 30, -1 }, + // We check for the aliased -EXT version in GLES 2 + // { "glIsQuery", 30, -1 }, { "glIsSampler", 30, -1 }, { "glIsSync", 30, -1 }, { "glIsTransformFeedback", 30, -1 }, @@ -1610,5 +2378,175 @@ const struct function gles3_functions_possible[] = { { "glProgramUniform4uiEXT", 30, -1 }, { "glProgramUniform4uivEXT", 30, -1 }, + /* GL_EXT_blend_func_extended */ + { "glBindFragDataLocationIndexedEXT", 30, -1 }, + { "glGetFragDataIndexEXT", 30, -1 }, + { "glBindFragDataLocationEXT", 30, -1 }, + + /* GL_OES_texture_border_clamp */ + { "glTexParameterIivOES", 30, -1 }, + { "glTexParameterIuivOES", 30, -1 }, + { "glGetTexParameterIivOES", 30, -1 }, + { "glGetTexParameterIuivOES", 30, -1 }, + { "glSamplerParameterIivOES", 30, -1 }, + { "glSamplerParameterIuivOES", 30, -1 }, + { "glGetSamplerParameterIivOES", 30, -1 }, + { "glGetSamplerParameterIuivOES", 30, -1 }, + + /* GL_OES_texture_buffer */ + { "glTexBufferOES", 31, -1 }, + { "glTexBufferRangeOES", 31, -1 }, + + /* GL_OES_sample_shading */ + { "glMinSampleShadingOES", 30, -1 }, + + /* GL_OES_copy_image */ + { "glCopyImageSubDataOES", 30, -1 }, + + /* GL_OES_draw_buffers_indexed */ + { "glBlendFunciOES", 30, -1 }, + { "glBlendFuncSeparateiOES", 30, -1 }, + { "glBlendEquationiOES", 30, -1 }, + { "glBlendEquationSeparateiOES", 30, -1 }, + { "glColorMaskiOES", 30, -1 }, + { "glEnableiOES", 30, -1 }, + { "glDisableiOES", 30, -1 }, + { "glIsEnablediOES", 30, -1 }, + + /* GL_EXT_base_instance */ + { "glDrawArraysInstancedBaseInstanceEXT", 30, -1 }, + { "glDrawElementsInstancedBaseInstanceEXT", 30, -1 }, + { "glDrawElementsInstancedBaseVertexBaseInstanceEXT", 30, -1 }, + + /* GL_EXT_window_rectangles */ + { "glWindowRectanglesEXT", 30, -1 }, + + /* GL_AMD_framebuffer_multisample_advanced */ + { "glRenderbufferStorageMultisampleAdvancedAMD", 11, -1 }, + { "glNamedRenderbufferStorageMultisampleAdvancedAMD", 11, -1 }, + { NULL, 0, -1 } }; + +const struct function gles31_functions_possible[] = { + { "glDispatchCompute", 31, -1 }, + { "glDispatchComputeIndirect", 31, -1 }, + { "glDrawArraysIndirect", 31, -1 }, + { "glDrawElementsIndirect", 31, -1 }, + + { "glFramebufferParameteri", 31, -1 }, + { "glGetFramebufferParameteriv", 31, -1 }, + + { "glGetProgramInterfaceiv", 31, -1 }, + { "glGetProgramResourceIndex", 31, -1 }, + { "glGetProgramResourceName", 31, -1 }, + { "glGetProgramResourceiv", 31, -1 }, + { "glGetProgramResourceLocation", 31, -1 }, + + // We check for the aliased EXT versions in GLES 2 + // { "glUseProgramStages", 31, -1 }, + // { "glActiveShaderProgram", 31, -1 }, + // { "glCreateShaderProgramv", 31, -1 }, + // { "glBindProgramPipeline", 31, -1 }, + // { "glDeleteProgramPipelines", 31, -1 }, + // { "glGenProgramPipelines", 31, -1 }, + // { "glIsProgramPipeline", 31, -1 }, + // { "glGetProgramPipelineiv", 31, -1 }, + // { "glProgramUniform1i", 31, -1 }, + // { "glProgramUniform2i", 31, -1 }, + // { "glProgramUniform3i", 31, -1 }, + // { "glProgramUniform4i", 31, -1 }, + // { "glProgramUniform1f", 31, -1 }, + // { "glProgramUniform2f", 31, -1 }, + // { "glProgramUniform3f", 31, -1 }, + // { "glProgramUniform4f", 31, -1 }, + // { "glProgramUniform1iv", 31, -1 }, + // { "glProgramUniform2iv", 31, -1 }, + // { "glProgramUniform3iv", 31, -1 }, + // { "glProgramUniform4iv", 31, -1 }, + // { "glProgramUniform1fv", 31, -1 }, + // { "glProgramUniform2fv", 31, -1 }, + // { "glProgramUniform3fv", 31, -1 }, + // { "glProgramUniform4fv", 31, -1 }, + // { "glProgramUniformMatrix2fv", 31, -1 }, + // { "glProgramUniformMatrix3fv", 31, -1 }, + // { "glProgramUniformMatrix4fv", 31, -1 }, + // { "glProgramUniformMatrix2x3fv", 31, -1 }, + // { "glProgramUniformMatrix3x2fv", 31, -1 }, + // { "glProgramUniformMatrix2x4fv", 31, -1 }, + // { "glProgramUniformMatrix4x2fv", 31, -1 }, + // { "glProgramUniformMatrix3x4fv", 31, -1 }, + // { "glProgramUniformMatrix4x3fv", 31, -1 }, + // { "glValidateProgramPipeline", 31, -1 }, + // { "glGetProgramPipelineInfoLog", 31, -1 }, + + // We check for the aliased EXT versions in GLES 3 + // { "glProgramUniform1ui", 31, -1 }, + // { "glProgramUniform2ui", 31, -1 }, + // { "glProgramUniform3ui", 31, -1 }, + // { "glProgramUniform4ui", 31, -1 }, + // { "glProgramUniform1uiv", 31, -1 }, + // { "glProgramUniform2uiv", 31, -1 }, + // { "glProgramUniform3uiv", 31, -1 }, + // { "glProgramUniform4uiv", 31, -1 }, + + { "glBindImageTexture", 31, -1 }, + { "glGetBooleani_v", 31, -1 }, + { "glMemoryBarrier", 31, -1 }, + + { "glMemoryBarrierByRegion", 31, -1 }, + + { "glTexStorage2DMultisample", 31, -1 }, + { "glGetMultisamplefv", 31, -1 }, + { "glSampleMaski", 31, -1 }, + { "glGetTexLevelParameteriv", 31, -1 }, + { "glGetTexLevelParameterfv", 31, -1 }, + { "glBindVertexBuffer", 31, -1 }, + { "glVertexAttribFormat", 31, -1 }, + { "glVertexAttribIFormat", 31, -1 }, + { "glVertexAttribBinding", 31, -1 }, + { "glVertexBindingDivisor", 31, -1 }, + + /* GL_OES_texture_storage_multisample_2d_array */ + { "glTexStorage3DMultisampleOES", 31, -1 }, + + /* GL_OES_texture_view */ + { "glTextureViewOES", 31, -1 }, + + /* GL_EXT_buffer_storage */ + { "glBufferStorageEXT", 31, -1 }, + + /* GL_EXT_blend_func_extended */ + { "glGetProgramResourceLocationIndexEXT", 31, -1 }, + + /* GL_OES_geometry_shader */ + { "glFramebufferTextureOES", 31, -1}, + + /* GL_EXT_geometry_shader */ + // We check for the aliased OES version above + // { "glFramebufferTextureEXT", 31, -1}, + + /* GL_OES_tessellation_shader */ + { "glPatchParameteriOES", 31, -1 }, + + /* GL_OES_primitive_bound_box */ + { "glPrimitiveBoundingBoxOES", 31, -1 }, + + /* GL_OES_viewport_array */ + { "glViewportArrayvOES", 31, -1 }, + { "glViewportIndexedfOES", 31, -1 }, + { "glViewportIndexedfvOES", 31, -1 }, + { "glScissorArrayvOES", 31, -1 }, + { "glScissorIndexedOES", 31, -1 }, + { "glScissorIndexedvOES", 31, -1 }, + { "glDepthRangeArrayfvOES", 31, -1 }, + { "glDepthRangeIndexedfOES", 31, -1 }, + { "glGetFloati_vOES", 31, -1 }, + + /* GL_ARB_sample_locations */ + { "glFramebufferSampleLocationsfvARB", 31, -1 }, + { "glNamedFramebufferSampleLocationsfvARB", 31, -1 }, + { "glEvaluateDepthValuesARB", 31, -1 }, + + { NULL, 0, -1 }, + };