From 5d6bab9f858a1f97e354c52f7ae79505bcfcc553 Mon Sep 17 00:00:00 2001 From: Thomas Debesse Date: Sat, 5 Jul 2025 09:53:34 +0200 Subject: [PATCH 1/3] sdl_glimp: require VAO explicitly --- src/engine/sys/sdl_glimp.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/engine/sys/sdl_glimp.cpp b/src/engine/sys/sdl_glimp.cpp index 19d4087ac0..c75b191bcb 100644 --- a/src/engine/sys/sdl_glimp.cpp +++ b/src/engine/sys/sdl_glimp.cpp @@ -1768,8 +1768,8 @@ static rserr_t GLimp_StartDriverAndSetMode( int mode, bool fullscreen, bool bord rserr_t err = GLimp_SetMode(mode, fullscreen, bordered); const char* glRequirements = - "You need a graphics card with drivers supporting at least\n" - "OpenGL 3.2 or OpenGL 2.1 with EXT_framebuffer_object."; + "You need a graphics card with drivers supporting at least OpenGL 3.2\n" + "or OpenGL 2.1 with EXT_framebuffer_object and ARB_vertex_array_object."; switch ( err ) { @@ -2283,6 +2283,9 @@ static void GLimp_InitExtensions() glConfig2.textureAnisotropy = std::max( std::min( r_ext_texture_filter_anisotropic.Get(), glConfig2.maxTextureAnisotropy ), 1.0f ); } + // made required in OpenGL 3.0 + LOAD_EXTENSION( ExtFlag_REQUIRED | ExtFlag_CORE, ARB_vertex_array_object ); + /* We call RV300 the first generation of R300 cards, to make a difference with RV400 and RV500 cards that are also supported by the Mesa r300 driver. From ae4be89d0c4b7bc8366b0281996822020f21519b Mon Sep 17 00:00:00 2001 From: Thomas Debesse Date: Sat, 5 Jul 2025 09:53:34 +0200 Subject: [PATCH 2/3] sdl_glimp: require VBO explicitly --- src/engine/sys/sdl_glimp.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/engine/sys/sdl_glimp.cpp b/src/engine/sys/sdl_glimp.cpp index c75b191bcb..8b7b72d4ba 100644 --- a/src/engine/sys/sdl_glimp.cpp +++ b/src/engine/sys/sdl_glimp.cpp @@ -2286,6 +2286,9 @@ static void GLimp_InitExtensions() // made required in OpenGL 3.0 LOAD_EXTENSION( ExtFlag_REQUIRED | ExtFlag_CORE, ARB_vertex_array_object ); + // made required in OpenGL 2.1 + LOAD_EXTENSION( ExtFlag_REQUIRED | ExtFlag_CORE, ARB_vertex_buffer_object ); + /* We call RV300 the first generation of R300 cards, to make a difference with RV400 and RV500 cards that are also supported by the Mesa r300 driver. From aa2de141148577eba9c2865ca617c93b6faa9bf4 Mon Sep 17 00:00:00 2001 From: Thomas Debesse Date: Sat, 5 Jul 2025 09:53:34 +0200 Subject: [PATCH 3/3] sdl_glimp: minor rewording --- src/engine/sys/sdl_glimp.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/engine/sys/sdl_glimp.cpp b/src/engine/sys/sdl_glimp.cpp index 8b7b72d4ba..4eece4791b 100644 --- a/src/engine/sys/sdl_glimp.cpp +++ b/src/engine/sys/sdl_glimp.cpp @@ -2261,9 +2261,10 @@ static void GLimp_InitExtensions() // made required in OpenGL 1.3 glConfig.textureCompression = textureCompression_t::TC_NONE; + /* ExtFlag_REQUIRED could be turned into ExtFlag_NONE if s3tc-to-rgba is implemented. See https://github.com/DaemonEngine/Daemon/pull/738 */ - if( LOAD_EXTENSION( ExtFlag_REQUIRED, EXT_texture_compression_s3tc ) ) + if ( LOAD_EXTENSION( ExtFlag_REQUIRED, EXT_texture_compression_s3tc ) ) { glConfig.textureCompression = textureCompression_t::TC_S3TC; } @@ -2283,6 +2284,8 @@ static void GLimp_InitExtensions() glConfig2.textureAnisotropy = std::max( std::min( r_ext_texture_filter_anisotropic.Get(), glConfig2.maxTextureAnisotropy ), 1.0f ); } + // VAO and VBO + // made required in OpenGL 3.0 LOAD_EXTENSION( ExtFlag_REQUIRED | ExtFlag_CORE, ARB_vertex_array_object ); @@ -2352,7 +2355,6 @@ static void GLimp_InitExtensions() } } - // VAO and VBO // made required in OpenGL 3.0 glConfig2.halfFloatVertexAvailable = LOAD_EXTENSION_WITH_TEST( ExtFlag_CORE, ARB_half_float_vertex, halfFloatVertexEnabled ); @@ -2362,6 +2364,8 @@ static void GLimp_InitExtensions() } } + // FBO + if ( !workaround_glExtension_missingArbFbo_useExtFbo.Get() ) { // made required in OpenGL 3.0 @@ -2394,7 +2398,6 @@ static void GLimp_InitExtensions() glFboSetExt(); } - // FBO glGetIntegerv( GL_MAX_RENDERBUFFER_SIZE, &glConfig2.maxRenderbufferSize ); glGetIntegerv( GL_MAX_COLOR_ATTACHMENTS, &glConfig2.maxColorAttachments );