Skip to content

Commit d442add

Browse files
committed
renderer: disable EXT_gpu_shader4 on GLSL 1.20
EXT_gpu_shader4 behaves slightly differently on GLSL 1.20. See: https://gitlab.freedesktop.org/mesa/mesa/-/issues/12803#note_2819461
1 parent 4145bac commit d442add

File tree

1 file changed

+19
-1
lines changed

1 file changed

+19
-1
lines changed

src/engine/sys/sdl_glimp.cpp

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,10 @@ static Cvar::Cvar<bool> workaround_glExtension_glsl120_disableShaderDrawParamete
179179
"workaround.glExtension.glsl120.disableShaderDrawParameters",
180180
"Disable ARB_shader_draw_parameters on GLSL 1.20",
181181
Cvar::NONE, true );
182+
static Cvar::Cvar<bool> workaround_glExtension_glsl120_disableGpuShader4(
183+
"workaround.glExtension.glsl120.disableGpuShader4",
184+
"Disable EXT_gpu_shader4 on GLSL 1.20",
185+
Cvar::NONE, true );
182186
static Cvar::Cvar<bool> workaround_glHardware_intel_useFirstProvokinVertex(
183187
"workaround.glHardware.intel.useFirstProvokinVertex",
184188
"Use first provoking vertex on Intel hardware supporting ARB_provoking_vertex",
@@ -2173,8 +2177,21 @@ static void GLimp_InitExtensions()
21732177
}
21742178
}
21752179

2180+
bool gpuShader4Enabled = r_ext_gpu_shader4.Get();
2181+
2182+
if ( gpuShader4Enabled
2183+
&& SILENTLY_CHECK_EXTENSION( EXT_gpu_shader4 )
2184+
&& glConfig2.shadingLanguageVersion <= 120
2185+
&& workaround_glExtension_glsl120_disableGpuShader4.Get() )
2186+
{
2187+
// EXT_gpu_shader4 behaves slightly differently when running on GLSL 1.20.
2188+
// See: https://gitlab.freedesktop.org/mesa/mesa/-/issues/12803#note_2819461
2189+
logger.Warn( "Found EXT_gpu_shader4 with incompatible GLSL 1.20, disabling EXT_gpu_shader4." );
2190+
gpuShader4Enabled = false;
2191+
}
2192+
21762193
// made required in OpenGL 3.0
2177-
glConfig2.gpuShader4Available = LOAD_EXTENSION_WITH_TEST( ExtFlag_CORE, EXT_gpu_shader4, r_ext_gpu_shader4.Get() );
2194+
glConfig2.gpuShader4Available = LOAD_EXTENSION_WITH_TEST( ExtFlag_CORE, EXT_gpu_shader4, gpuShader4Enabled );
21782195

21792196
// made required in OpenGL 4.0
21802197
glConfig2.gpuShader5Available = LOAD_EXTENSION_WITH_TEST( ExtFlag_NONE, ARB_gpu_shader5, r_arb_gpu_shader5.Get() );
@@ -2687,6 +2704,7 @@ bool GLimp_Init()
26872704
Cvar::Latch( workaround_glDriver_nvidia_v340_disableTextureGather );
26882705
Cvar::Latch( workaround_glExtension_missingArbFbo_useExtFbo );
26892706
Cvar::Latch( workaround_glExtension_glsl120_disableShaderDrawParameters );
2707+
Cvar::Latch( workaround_glExtension_glsl120_disableGpuShader4 );
26902708
Cvar::Latch( workaround_glHardware_intel_useFirstProvokinVertex );
26912709

26922710
/* Enable S3TC on Mesa even if libtxc-dxtn is not available

0 commit comments

Comments
 (0)