diff --git a/renderdoc/driver/gl/gl_common.h b/renderdoc/driver/gl/gl_common.h index 68e941880..7cbb8705e 100644 --- a/renderdoc/driver/gl/gl_common.h +++ b/renderdoc/driver/gl/gl_common.h @@ -664,6 +664,7 @@ extern bool IsGLES; EXT_TO_CHECK(44, 99, ARB_enhanced_layouts) \ EXT_TO_CHECK(44, 99, ARB_query_buffer_object) \ EXT_TO_CHECK(45, 99, ARB_clip_control) \ + EXT_TO_CHECK(45, 99, ARB_direct_state_access) \ EXT_TO_CHECK(46, 99, ARB_polygon_offset_clamp) \ EXT_TO_CHECK(46, 99, ARB_texture_filter_anisotropic) \ EXT_TO_CHECK(46, 99, ARB_pipeline_statistics_query) \ diff --git a/renderdoc/driver/gl/wrappers/gl_emulated.cpp b/renderdoc/driver/gl/wrappers/gl_emulated.cpp index 9566a76a7..c17958e0b 100644 --- a/renderdoc/driver/gl/wrappers/gl_emulated.cpp +++ b/renderdoc/driver/gl/wrappers/gl_emulated.cpp @@ -2193,6 +2193,21 @@ void GLDispatchTable::EmulateRequiredExtensions() EMULATE_FUNC(glVertexArrayVertexAttribOffsetEXT); EMULATE_FUNC(glVertexArrayVertexBindingDivisorEXT); } + + // some functions we use from ARB that have no EXT equivalent, need to emulate them as well + if(!HasExt[ARB_direct_state_access]) + { + RDCLOG("Emulating ARB_direct_state_access"); + EMULATE_FUNC(glTransformFeedbackBufferBase) + EMULATE_FUNC(glTransformFeedbackBufferRange) + EMULATE_FUNC(glClearNamedFramebufferiv) + EMULATE_FUNC(glClearNamedFramebufferuiv) + EMULATE_FUNC(glClearNamedFramebufferfv) + EMULATE_FUNC(glClearNamedFramebufferfi) + EMULATE_FUNC(glBlitNamedFramebuffer) + EMULATE_FUNC(glVertexArrayElementBuffer); + EMULATE_FUNC(glVertexArrayVertexBuffers) + } } void GLDispatchTable::DriverForEmulation(WrappedOpenGL *driver)