&driver_functions);
_vbo_CreateContext(&ctx);
+ _mesa_override_extensions(&ctx);
ctx.Version = version;
_mesa_initialize_dispatch_tables(&ctx);
{ "glDrawArraysInstanced", 31, -1 },
{ "glDrawElementsInstanced", 31, -1 },
{ "glPrimitiveRestartIndex", 31, -1 },
+ { "glTexBuffer", 31, -1 },
+
+ /* GL_ARB_texture_buffer_range */
+ { "glTexBufferRange", 43, -1 },
/* GL_ARB_shader_objects */
{ "glDeleteObjectARB", 31, -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 },
+ { "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.3 */
{ "glIsRenderbuffer", 43, -1 },
{ "glBindRenderbuffer", 43, -1 },
// { "glVertexArrayVertexAttribIFormatEXT", 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
{ "glGetProgramResourceiv", 43, -1 },
{ "glGetProgramResourceLocation", 43, -1 },
{ "glGetProgramResourceLocationIndex", 43, -1 },
-// { "glShaderStorageBlockBinding", 43, -1 }, // XXX: Add to xml
+ { "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 4.5 */
+ /* aliased versions checked above */
+ //{ "glGetGraphicsResetStatus", 45, -1 },
+ //{ "glReadnPixels", 45, -1 },
+ //{ "glGetnUniformfv", 45, -1 },
+ //{ "glGetnUniformiv", 45, -1 },
+ //{ "glGetnUniformuiv", 45, -1 },
+ { "glMemoryBarrierByRegion", 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 },
{ "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 },
+
{ NULL, 0, -1 }
};
const struct function gl_compatibility_functions_possible[] = {
- { "glBindVertexArrayAPPLE", 10, -1 },
- { "glGenVertexArraysAPPLE", 10, -1 },
{ "glBindRenderbufferEXT", 10, -1 },
{ "glBindFramebufferEXT", 10, -1 },
{ "glNewList", 10, _gloffset_NewList },
{ "glGetProgramLocalParameterfvARB", 10, -1 },
{ "glGetProgramivARB", 10, -1 },
{ "glGetProgramStringARB", 10, -1 },
- { "glPolygonOffsetEXT", 10, -1 },
{ "glColorPointerEXT", 10, -1 },
{ "glEdgeFlagPointerEXT", 10, -1 },
{ "glIndexPointerEXT", 10, -1 },
};
const struct function gl_core_functions_possible[] = {
- /* GL 3.1 */
- { "glTexBuffer", 31, -1 },
-
/* GL 3.2 */
{ "glFramebufferTexture", 32, -1 },
+ /* GL 4.0 */
+ { "glGetSubroutineUniformLocation", 40, -1 },
+ { "glGetSubroutineIndex", 40, -1 },
+ { "glGetActiveSubroutineUniformiv", 40, -1 },
+ { "glGetActiveSubroutineUniformName", 40, -1 },
+ { "glGetActiveSubroutineName", 40, -1 },
+ { "glUniformSubroutinesuiv", 40, -1 },
+ { "glGetUniformSubroutineuiv", 40, -1 },
+ { "glGetProgramStageiv", 40, -1 },
+
/* GL 4.3 */
{ "glIsRenderbuffer", 43, -1 },
{ "glBindRenderbuffer", 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 },
{ "glGetProgramResourceLocation", 43, -1 },
{ "glGetProgramResourceLocationIndex", 43, -1 },
// { "glShaderStorageBlockBinding", 43, -1 }, // XXX: Add to xml
- { "glTexBufferRange", 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 4.5 */
+ { "glMemoryBarrierByRegion", 45, -1 },
+
/* GL_ARB_direct_state_access */
{ "glCreateTransformFeedbacks", 45, -1 },
{ "glTransformFeedbackBufferBase", 45, -1 },
{ "glGetQueryBufferObjecti64v", 45, -1 },
{ "glGetQueryBufferObjectui64v", 45, -1 },
+ /* GL_ARB_indirect_parameters */
+ { "glMultiDrawArraysIndirectCountARB", 31, -1 },
+ { "glMultiDrawElementsIndirectCountARB", 31, -1 },
+
+ /* 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 }
};
{ "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 },
{ "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 }
};
{ "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 },
{ "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 },
// { "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
{ "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 },
{ "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 },
{ "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 },
+
{ NULL, 0, -1 }
};
{ "glDrawArraysIndirect", 31, -1 },
{ "glDrawElementsIndirect", 31, -1 },
- // FINISHME: These two functions have not been implemented yet. They come
- // FINISHME: from the ARB_framebuffer_no_attachments extension.
- // { "glFramebufferParameteri", 31, -1 },
- // { "glGetFramebufferParameteriv", 31, -1 },
+ { "glFramebufferParameteri", 31, -1 },
+ { "glGetFramebufferParameteriv", 31, -1 },
{ "glGetProgramInterfaceiv", 31, -1 },
{ "glGetProgramResourceIndex", 31, -1 },
{ "glGetBooleani_v", 31, -1 },
{ "glMemoryBarrier", 31, -1 },
- // FINISHME: This function has not been implemented yet.
- // { "glMemoryBarrierByRegion", 31, -1 },
+ { "glMemoryBarrierByRegion", 31, -1 },
{ "glTexStorage2DMultisample", 31, -1 },
{ "glGetMultisamplefv", 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 },
};