From b5890155b5db19d0cbb1d9b38b9b985a3f2b3c44 Mon Sep 17 00:00:00 2001 From: Gert Wollny Date: Mon, 11 Nov 2019 12:40:31 +0100 Subject: [PATCH] gl: Consider also ARB_shader_bit_encoding to enable bit conversion On drivers only supportinmg OpenGL 3.3, like llvmpipe, ARB_gpu_shader5 may not be available, but (u)intBitsToFloat and floatBitsTo* are part of GLSL 330, and are also availabe by enabling the extension ARB_shader_bit_encoding. Consequently, check for this extension when ARB_gpu_shader5 is not available, require it when available, and enable the bit code path using these bit cast functions accordingly. Signed-off-by: Gert Wollny --- renderdoc/driver/gl/gl_common.h | 1 + renderdoc/driver/gl/gl_debug.cpp | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/renderdoc/driver/gl/gl_common.h b/renderdoc/driver/gl/gl_common.h index 37e4d14a0..7ea36390c 100644 --- a/renderdoc/driver/gl/gl_common.h +++ b/renderdoc/driver/gl/gl_common.h @@ -684,6 +684,7 @@ extern bool IsGLES; EXT_TO_CHECK(33, 30, ARB_texture_swizzle) \ EXT_TO_CHECK(33, 99, ARB_occlusion_query2) \ EXT_TO_CHECK(33, 99, ARB_timer_query) \ + EXT_TO_CHECK(33, 30, ARB_shader_bit_encoding) \ EXT_TO_CHECK(40, 32, ARB_draw_buffers_blend) \ EXT_TO_CHECK(40, 31, ARB_draw_indirect) \ EXT_TO_CHECK(40, 32, ARB_gpu_shader5) \ diff --git a/renderdoc/driver/gl/gl_debug.cpp b/renderdoc/driver/gl/gl_debug.cpp index 7ffd35786..daec001a7 100644 --- a/renderdoc/driver/gl/gl_debug.cpp +++ b/renderdoc/driver/gl/gl_debug.cpp @@ -417,6 +417,10 @@ void GLReplay::InitDebugData() texSampleDefines += "#define HAS_BIT_CONVERSION 1\n" "#extension GL_ARB_gpu_shader5 : require\n"; + else if(HasExt[ARB_shader_bit_encoding]) + texSampleDefines += + "#define HAS_BIT_CONVERSION 1\n" + "#extension GL_ARB_shader_bit_encoding : require\n"; } vs = GenerateGLSLShader(GetEmbeddedResource(glsl_blit_vert), shaderType, glslBaseVer);