diff --git a/renderdoc/driver/gl/gl_driver.cpp b/renderdoc/driver/gl/gl_driver.cpp index 88134c32b..b7abd241d 100644 --- a/renderdoc/driver/gl/gl_driver.cpp +++ b/renderdoc/driver/gl/gl_driver.cpp @@ -332,6 +332,7 @@ WrappedOpenGL::WrappedOpenGL(const char *logfile, const GLHookSet &funcs) glExts.push_back("GL_ARB_internalformat_query2"); glExts.push_back("GL_ARB_ES2_compatibility"); glExts.push_back("GL_EXT_texture_filter_anisotropic"); + glExts.push_back("GL_EXT_texture_sRGB_decode"); #if !defined(_RELEASE) CaptureOptions &opts = (CaptureOptions &)RenderDoc::Inst().GetCaptureOptions(); diff --git a/renderdoc/driver/gl/gl_manager.cpp b/renderdoc/driver/gl/gl_manager.cpp index f95c8cf36..cddbe42fc 100644 --- a/renderdoc/driver/gl/gl_manager.cpp +++ b/renderdoc/driver/gl/gl_manager.cpp @@ -92,6 +92,7 @@ struct TextureStateInitialData int32_t baseLevel, maxLevel; float minLod, maxLod; + GLenum srgbDecode; GLenum depthMode; GLenum compareFunc, compareMode; GLenum minFilter, magFilter; @@ -228,6 +229,7 @@ bool GLResourceManager::Prepare_InitialState(GLResource res) // only non-ms textures have sampler state if(!ms) { + gl.glGetTextureParameterivEXT(res.name, details.curType, eGL_TEXTURE_SRGB_DECODE_EXT, (GLint *)&state->srgbDecode); gl.glGetTextureParameterivEXT(res.name, details.curType, eGL_TEXTURE_COMPARE_FUNC, (GLint *)&state->compareFunc); gl.glGetTextureParameterivEXT(res.name, details.curType, eGL_TEXTURE_COMPARE_MODE, (GLint *)&state->compareMode); gl.glGetTextureParameterivEXT(res.name, details.curType, eGL_TEXTURE_MIN_FILTER, (GLint *)&state->minFilter); @@ -826,6 +828,7 @@ void GLResourceManager::Apply_InitialState(GLResource live, InitialContentData i if(!ms) { + 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, (GLint *)&state->compareMode); gl.glTextureParameterivEXT(live.name, details.curType, eGL_TEXTURE_MIN_FILTER, (GLint *)&state->minFilter); diff --git a/renderdoc/driver/gl/gl_resources.cpp b/renderdoc/driver/gl/gl_resources.cpp index 9d15f2ea9..e4006f0c8 100644 --- a/renderdoc/driver/gl/gl_resources.cpp +++ b/renderdoc/driver/gl/gl_resources.cpp @@ -539,6 +539,13 @@ bool IsSRGBFormat(GLenum internalFormat) { case eGL_SRGB8: case eGL_SRGB8_ALPHA8: + case eGL_SLUMINANCE8: + case eGL_SLUMINANCE8_ALPHA8: + case eGL_COMPRESSED_SRGB_S3TC_DXT1_EXT: + case eGL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT: + case eGL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT: + case eGL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT: + case eGL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB: return true; default: break;