diff --git a/renderdoc/driver/gl/gl_common.h b/renderdoc/driver/gl/gl_common.h index 2edec60ea..41ddafb5c 100644 --- a/renderdoc/driver/gl/gl_common.h +++ b/renderdoc/driver/gl/gl_common.h @@ -624,6 +624,7 @@ extern bool IsGLES; EXT_TO_CHECK(99, 99, EXT_raster_multisample) \ EXT_TO_CHECK(99, 30, EXT_texture_swizzle) \ EXT_TO_CHECK(99, 99, KHR_blend_equation_advanced_coherent) \ + EXT_TO_CHECK(99, 99, EXT_texture_sRGB_decode) \ /* OpenGL ES extensions */ \ EXT_TO_CHECK(99, 32, EXT_color_buffer_float) \ EXT_TO_CHECK(99, 32, EXT_primitive_bounding_box) \ diff --git a/renderdoc/driver/gl/gl_initstate.cpp b/renderdoc/driver/gl/gl_initstate.cpp index d9ce8dec1..5f52b148b 100644 --- a/renderdoc/driver/gl/gl_initstate.cpp +++ b/renderdoc/driver/gl/gl_initstate.cpp @@ -658,8 +658,11 @@ void GLResourceManager::PrepareTextureInitialContents(ResourceId liveid, Resourc // only non-ms textures have sampler state if(!ms) { - GL.glGetTextureParameterivEXT(res.name, details.curType, eGL_TEXTURE_SRGB_DECODE_EXT, - (GLint *)&state.srgbDecode); + if(HasExt[EXT_texture_sRGB_decode]) + GL.glGetTextureParameterivEXT(res.name, details.curType, eGL_TEXTURE_SRGB_DECODE_EXT, + (GLint *)&state.srgbDecode); + else + state.srgbDecode = eGL_DECODE_EXT; GL.glGetTextureParameterivEXT(res.name, details.curType, eGL_TEXTURE_COMPARE_FUNC, (GLint *)&state.compareFunc); GL.glGetTextureParameterivEXT(res.name, details.curType, eGL_TEXTURE_COMPARE_MODE, @@ -1861,8 +1864,9 @@ void GLResourceManager::Apply_InitialState(GLResource live, GLInitialContents in if(!ms) { - GL.glTextureParameterivEXT(live.name, details.curType, eGL_TEXTURE_SRGB_DECODE_EXT, - (GLint *)&state.srgbDecode); + if(HasExt[EXT_texture_sRGB_decode]) + GL.glTextureParameterivEXT(live.name, details.curType, eGL_TEXTURE_SRGB_DECODE_EXT, + (GLint *)&state.srgbDecode); GL.glTextureParameterivEXT(live.name, details.curType, eGL_TEXTURE_COMPARE_FUNC, (GLint *)&state.compareFunc); GL.glTextureParameterivEXT(live.name, details.curType, eGL_TEXTURE_COMPARE_MODE,