From f2752f72304ed818a75498bde804650928077206 Mon Sep 17 00:00:00 2001 From: Vladislav Belov Date: Tue, 14 Oct 2025 12:44:44 +0200 Subject: [PATCH] Removes ARBShader capability --- source/graphics/ShaderManager.cpp | 2 +- source/renderer/Renderer.cpp | 19 +------------------ source/renderer/backend/IDevice.h | 1 - source/renderer/backend/dummy/Device.cpp | 1 - source/renderer/backend/gl/Device.cpp | 5 ++++- source/renderer/backend/vulkan/Device.cpp | 1 - .../tools/lint/cppcheck/suppressions-list.txt | 2 ++ 7 files changed, 8 insertions(+), 23 deletions(-) diff --git a/source/graphics/ShaderManager.cpp b/source/graphics/ShaderManager.cpp index f2035febd3..ed87e335e6 100644 --- a/source/graphics/ShaderManager.cpp +++ b/source/graphics/ShaderManager.cpp @@ -222,7 +222,7 @@ bool CShaderManager::LoadTechnique(CShaderTechniquePtr& tech) XMBElement root = XeroFile.GetRoot(); PS::StaticVector supportedShaders; - if (m_Device->GetBackend() == Renderer::Backend::Backend::GL_ARB && m_Device->GetCapabilities().ARBShaders) + if (m_Device->GetBackend() == Renderer::Backend::Backend::GL_ARB) supportedShaders.emplace_back("arb"); if (m_Device->GetBackend() == Renderer::Backend::Backend::GL) supportedShaders.emplace_back("glsl"); diff --git a/source/renderer/Renderer.cpp b/source/renderer/Renderer.cpp index fd1e2a97ce..ab80ba8169 100644 --- a/source/renderer/Renderer.cpp +++ b/source/renderer/Renderer.cpp @@ -431,25 +431,8 @@ void CRenderer::SetRenderPath(RenderPath rp) } // Renderer has been opened, so validate the selected renderpath - const bool hasShadersSupport = - m->device->GetCapabilities().ARBShaders || - m->device->GetBackend() != Renderer::Backend::Backend::GL_ARB; if (rp == RenderPath::DEFAULT) - { - if (hasShadersSupport) - rp = RenderPath::SHADER; - else - rp = RenderPath::FIXED; - } - - if (rp == RenderPath::SHADER) - { - if (!hasShadersSupport) - { - LOGWARNING("Falling back to fixed function\n"); - rp = RenderPath::FIXED; - } - } + rp = RenderPath::SHADER; // TODO: remove this once capabilities have been properly extracted and the above checks have been moved elsewhere. g_RenderingOptions.m_RenderPath = rp; diff --git a/source/renderer/backend/IDevice.h b/source/renderer/backend/IDevice.h index 54427ed886..0ee2fbb7db 100644 --- a/source/renderer/backend/IDevice.h +++ b/source/renderer/backend/IDevice.h @@ -62,7 +62,6 @@ public: struct Capabilities { bool S3TC; - bool ARBShaders; bool computeShaders; bool debugLabels; bool debugScopedLabels; diff --git a/source/renderer/backend/dummy/Device.cpp b/source/renderer/backend/dummy/Device.cpp index 43c48b0d3c..4c27c785d4 100644 --- a/source/renderer/backend/dummy/Device.cpp +++ b/source/renderer/backend/dummy/Device.cpp @@ -52,7 +52,6 @@ CDevice::CDevice() m_Backbuffer = CFramebuffer::Create(this); m_Capabilities.S3TC = true; - m_Capabilities.ARBShaders = false; m_Capabilities.computeShaders = true; m_Capabilities.debugLabels = true; m_Capabilities.debugScopedLabels = true; diff --git a/source/renderer/backend/gl/Device.cpp b/source/renderer/backend/gl/Device.cpp index 73b165ebae..b2f0c21fee 100644 --- a/source/renderer/backend/gl/Device.cpp +++ b/source/renderer/backend/gl/Device.cpp @@ -324,6 +324,10 @@ std::unique_ptr CDevice::Create(SDL_Window* window, const bool arb) if (!arb && !ogl_HaveVersion(2, 0)) return nullptr; + // We can't render without ARB shaders. + if (arb && ogl_HaveExtensions(0, "GL_ARB_vertex_program", "GL_ARB_fragment_program", nullptr)) + return nullptr; + if ((ogl_HaveExtensions(0, "GL_ARB_vertex_program", "GL_ARB_fragment_program", nullptr) // ARB && !ogl_HaveVersion(2, 0)) // GLSL || !ogl_HaveExtension("GL_ARB_vertex_buffer_object") // VBO @@ -375,7 +379,6 @@ std::unique_ptr CDevice::Create(SDL_Window* window, const bool arb) } Capabilities& capabilities = device->m_Capabilities; - capabilities.ARBShaders = !ogl_HaveExtensions(0, "GL_ARB_vertex_program", "GL_ARB_fragment_program", nullptr); capabilities.computeShaders = !device->m_ARB && ogl_HaveVersion(4, 3); #if CONFIG2_GLES // Some GLES implementations have GL_EXT_texture_compression_dxt1 diff --git a/source/renderer/backend/vulkan/Device.cpp b/source/renderer/backend/vulkan/Device.cpp index 3d144f2663..a921acb4ee 100644 --- a/source/renderer/backend/vulkan/Device.cpp +++ b/source/renderer/backend/vulkan/Device.cpp @@ -578,7 +578,6 @@ std::unique_ptr CDevice::Create(SDL_Window* window) capabilities.debugLabels = enableDebugLabels; capabilities.debugScopedLabels = enableDebugScopedLabels; capabilities.S3TC = choosenDevice.features.textureCompressionBC; - capabilities.ARBShaders = false; capabilities.computeShaders = true; capabilities.storage = choosenDevice.properties.limits.maxStorageBufferRange >= GiB; capabilities.instancing = true; diff --git a/source/tools/lint/cppcheck/suppressions-list.txt b/source/tools/lint/cppcheck/suppressions-list.txt index c2dd85f167..c4a0415a33 100644 --- a/source/tools/lint/cppcheck/suppressions-list.txt +++ b/source/tools/lint/cppcheck/suppressions-list.txt @@ -63,3 +63,5 @@ unknownMacro:source/lib/sysdep/os/win/wposix/wutsname.cpp unknownMacro:source/ps/CStr.cpp uninitvar:source/graphics/MapReader.cpp + +danglingLifetime:source/renderer/backend/gl/Device.cpp