From 8615c5fc14aaad9f1a6e1937f9df3dbbcb8cf8dc Mon Sep 17 00:00:00 2001 From: baldurk Date: Mon, 14 Sep 2020 15:30:49 +0100 Subject: [PATCH] Speculative support for 10-bit backbuffers on GL --- renderdoc/driver/gl/egl_hooks.cpp | 8 ++++++++ renderdoc/driver/gl/gl_driver.cpp | 10 +++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/renderdoc/driver/gl/egl_hooks.cpp b/renderdoc/driver/gl/egl_hooks.cpp index e5edbb5cb..c19b2f674 100644 --- a/renderdoc/driver/gl/egl_hooks.cpp +++ b/renderdoc/driver/gl/egl_hooks.cpp @@ -328,6 +328,14 @@ HOOK_EXPORT EGLContext EGLAPIENTRY eglCreateContext_renderdoc_hooked(EGLDisplay // We will set isSRGB when we see the surface. init.isSRGB = 0; + EGLint rgbSize[3] = {}; + EGL.GetConfigAttrib(display, config, EGL_RED_SIZE, &rgbSize[0]); + EGL.GetConfigAttrib(display, config, EGL_GREEN_SIZE, &rgbSize[1]); + EGL.GetConfigAttrib(display, config, EGL_BLUE_SIZE, &rgbSize[2]); + + if(rgbSize[0] == rgbSize[1] && rgbSize[1] == rgbSize[2] && rgbSize[2] == 10) + init.colorBits = 10; + GLWindowingData data; data.egl_dpy = display; data.wnd = 0; diff --git a/renderdoc/driver/gl/gl_driver.cpp b/renderdoc/driver/gl/gl_driver.cpp index c9829328d..0cb1eb354 100644 --- a/renderdoc/driver/gl/gl_driver.cpp +++ b/renderdoc/driver/gl/gl_driver.cpp @@ -741,7 +741,11 @@ void WrappedOpenGL::CreateReplayBackbuffer(const GLInitParams ¶ms, ResourceI GLenum colfmt = eGL_RGBA8; - if(params.colorBits == 32) + if(params.colorBits == 64) + { + colfmt = eGL_RGBA16F; + } + else if(params.colorBits == 32) { colfmt = params.isSRGB ? eGL_SRGB8_ALPHA8 : eGL_RGBA8; } @@ -759,6 +763,10 @@ void WrappedOpenGL::CreateReplayBackbuffer(const GLInitParams ¶ms, ResourceI else colfmt = eGL_RGB8; } + else if(params.colorBits == 10) + { + colfmt = eGL_RGB10_A2; + } else { RDCERR("Unexpected # colour bits: %d", params.colorBits);