From 814fdd9a6e742774df1442290dd28ffc4c22ade9 Mon Sep 17 00:00:00 2001 From: slipher Date: Tue, 27 Aug 2024 18:56:00 -0500 Subject: [PATCH] Material system: load GLSL extension needed for Intel Intel's driver won't compile the material system GLSL shaders without this extension, GL_ARB_enhanced_layouts. I haven't attemped to determine which "enhanced" syntactic construct we depend on. Just tried it and it works. Fixes #1260. --- src/engine/renderer/tr_public.h | 1 + src/engine/sys/sdl_glimp.cpp | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/src/engine/renderer/tr_public.h b/src/engine/renderer/tr_public.h index 4372446a25..582d810797 100644 --- a/src/engine/renderer/tr_public.h +++ b/src/engine/renderer/tr_public.h @@ -96,6 +96,7 @@ struct glconfig2_t bool explicitUniformLocationAvailable; bool shaderImageLoadStoreAvailable; bool shaderAtomicCountersAvailable; + bool enhancedLayoutsAvailable; bool materialSystemAvailable; bool gpuShader4Available; bool gpuShader5Available; diff --git a/src/engine/sys/sdl_glimp.cpp b/src/engine/sys/sdl_glimp.cpp index d0600d8aca..2f46a77150 100644 --- a/src/engine/sys/sdl_glimp.cpp +++ b/src/engine/sys/sdl_glimp.cpp @@ -68,6 +68,8 @@ static Cvar::Cvar r_arb_debug_output( "r_arb_debug_output", "Use GL_ARB_debug_output if available", Cvar::NONE, true ); static Cvar::Cvar r_arb_depth_clamp( "r_arb_depth_clamp", "Use GL_ARB_depth_clamp if available", Cvar::NONE, true ); +static Cvar::Cvar r_arb_enhanced_layouts( "r_arb_enhanced_layouts", + "Use GL_ARB_enhanced_layouts if available", Cvar::NONE, true ); static Cvar::Cvar r_arb_explicit_uniform_location( "r_arb_explicit_uniform_location", "Use GL_ARB_explicit_uniform_location if available", Cvar::NONE, true ); static Cvar::Cvar r_arb_gpu_shader5( "r_arb_gpu_shader5", @@ -2111,6 +2113,9 @@ static void GLimp_InitExtensions() // made required in OpenGL 4.2 glConfig2.shaderAtomicCountersAvailable = LOAD_EXTENSION_WITH_TEST( ExtFlag_NONE, ARB_shader_atomic_counters, r_arb_shader_atomic_counters.Get() ); + // made required in OpenGL 4.4 + glConfig2.enhancedLayoutsAvailable = LOAD_EXTENSION_WITH_TEST( ExtFlag_NONE, ARB_enhanced_layouts, r_arb_enhanced_layouts.Get() ); + // not required by any OpenGL version glConfig2.indirectParametersAvailable = LOAD_EXTENSION_WITH_TEST( ExtFlag_NONE, ARB_indirect_parameters, r_arb_indirect_parameters.Get() ); @@ -2119,6 +2124,7 @@ static void GLimp_InitExtensions() && glConfig2.computeShaderAvailable && glConfig2.shadingLanguage420PackAvailable && glConfig2.explicitUniformLocationAvailable && glConfig2.shaderImageLoadStoreAvailable && glConfig2.shaderAtomicCountersAvailable && glConfig2.indirectParametersAvailable + && glConfig2.enhancedLayoutsAvailable && r_materialSystem.Get(); // Allow disabling it without disabling any extensions GL_CheckErrors();