From 04e92edf207969a4a7a3511ce084d8ae83692743 Mon Sep 17 00:00:00 2001 From: baldurk Date: Mon, 29 Jul 2019 10:36:28 +0100 Subject: [PATCH] Handle 16-bit backbuffer colour as RGB565 in GLES captures --- renderdoc/driver/gl/gl_driver.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/renderdoc/driver/gl/gl_driver.cpp b/renderdoc/driver/gl/gl_driver.cpp index 8c7750d3f..19d3ad451 100644 --- a/renderdoc/driver/gl/gl_driver.cpp +++ b/renderdoc/driver/gl/gl_driver.cpp @@ -743,11 +743,27 @@ void WrappedOpenGL::CreateReplayBackbuffer(const GLInitParams ¶ms, ResourceI GLenum colfmt = eGL_RGBA8; if(params.colorBits == 32) + { colfmt = params.isSRGB ? eGL_SRGB8_ALPHA8 : eGL_RGBA8; + } else if(params.colorBits == 24) + { colfmt = params.isSRGB ? eGL_SRGB8 : eGL_RGB8; + } + else if(params.colorBits == 16) + { + RDCASSERT(!params.isSRGB); + // 5:6:5 is almost certainly not used in desktop GL as a backbuffer format, and is only required + // to be supported from 4.2 onwards, so only replicate it on a GLES capture. + if(IsGLES) + colfmt = eGL_RGB565; + else + colfmt = eGL_RGB8; + } else + { RDCERR("Unexpected # colour bits: %d", params.colorBits); + } GLenum target = eGL_TEXTURE_2D; if(params.multiSamples > 1)