diff --git a/renderdoc/core/replay_proxy.cpp b/renderdoc/core/replay_proxy.cpp index 0b54c16ac..f4cc50b4d 100644 --- a/renderdoc/core/replay_proxy.cpp +++ b/renderdoc/core/replay_proxy.cpp @@ -1733,6 +1733,10 @@ void ReplayProxy::RemapProxyTextureIfNeeded(TextureDescription &tex, GetTextureD params.remap = RemapTexture::RGBA8; } + // since the texture type is unsupported, remove the bgraOrder flag and remap it to RGBA + if(tex.format.bgraOrder && m_APIProps.localRenderer == GraphicsAPI::OpenGL) + tex.format.bgraOrder = false; + switch(params.remap) { case RemapTexture::NoRemap: RDCERR("IsTextureSupported == false, but we have no remap"); break; diff --git a/renderdoc/driver/gl/gl_common.h b/renderdoc/driver/gl/gl_common.h index c6173eb56..2147bd43e 100644 --- a/renderdoc/driver/gl/gl_common.h +++ b/renderdoc/driver/gl/gl_common.h @@ -450,6 +450,7 @@ extern bool IsGLES; EXT_TO_CHECK(99, 99, EXT_clip_cull_distance) \ EXT_TO_CHECK(99, 99, EXT_multisample_compatibility) \ EXT_TO_CHECK(99, 99, EXT_read_format_bgra) \ + EXT_TO_CHECK(99, 99, EXT_texture_format_BGRA8888) \ EXT_TO_CHECK(99, 99, NV_polygon_mode) \ EXT_TO_CHECK(99, 99, NV_read_depth) \ EXT_TO_CHECK(99, 99, NV_read_stencil) \ diff --git a/renderdoc/driver/gl/gl_replay.cpp b/renderdoc/driver/gl/gl_replay.cpp index c206dd023..1d7573671 100644 --- a/renderdoc/driver/gl/gl_replay.cpp +++ b/renderdoc/driver/gl/gl_replay.cpp @@ -3141,6 +3141,11 @@ bool GLReplay::IsTextureSupported(const ResourceFormat &format) if(format.type == ResourceFormatType::ASTC) return false; + // BGRA is not accepted as an internal format in case of GL + // EXT_texture_format_BGRA8888 is required for creating BGRA proxy textures in case of GLES + if(format.bgraOrder) + return IsGLES && HasExt[EXT_texture_format_BGRA8888]; + return true; }