From 93ab50c55584c416d32b5bbdf39f37e9c67f4105 Mon Sep 17 00:00:00 2001 From: Stenzek Date: Sat, 10 Mar 2018 14:54:44 +1000 Subject: [PATCH] OGL: Move primitive restart enable logic to GLUtil --- Source/Core/Common/GL/GLUtil.cpp | 23 +++++++++++++++++++ Source/Core/Common/GL/GLUtil.h | 1 + .../VideoBackends/OGL/ProgramShaderCache.cpp | 20 +--------------- Source/Core/VideoBackends/OGL/Render.cpp | 20 +--------------- 4 files changed, 26 insertions(+), 38 deletions(-) diff --git a/Source/Core/Common/GL/GLUtil.cpp b/Source/Core/Common/GL/GLUtil.cpp index 0cbe77a1ba..02a38d8654 100644 --- a/Source/Core/Common/GL/GLUtil.cpp +++ b/Source/Core/Common/GL/GLUtil.cpp @@ -102,4 +102,27 @@ GLuint CompileProgram(const std::string& vertexShader, const std::string& fragme return programID; } + +void EnablePrimitiveRestart() +{ + constexpr GLuint PRIMITIVE_RESTART_INDEX = 65535; + + if (GLInterface->GetMode() == GLInterfaceMode::MODE_OPENGLES3) + { + glEnable(GL_PRIMITIVE_RESTART_FIXED_INDEX); + } + else + { + if (GLExtensions::Version() >= 310) + { + glEnable(GL_PRIMITIVE_RESTART); + glPrimitiveRestartIndex(PRIMITIVE_RESTART_INDEX); + } + else + { + glEnableClientState(GL_PRIMITIVE_RESTART_NV); + glPrimitiveRestartIndexNV(PRIMITIVE_RESTART_INDEX); + } + } +} } diff --git a/Source/Core/Common/GL/GLUtil.h b/Source/Core/Common/GL/GLUtil.h index f7030f8a7a..d4714026f0 100644 --- a/Source/Core/Common/GL/GLUtil.h +++ b/Source/Core/Common/GL/GLUtil.h @@ -12,4 +12,5 @@ namespace GLUtil { void InitInterface(); GLuint CompileProgram(const std::string& vertexShader, const std::string& fragmentShader); +void EnablePrimitiveRestart(); } diff --git a/Source/Core/VideoBackends/OGL/ProgramShaderCache.cpp b/Source/Core/VideoBackends/OGL/ProgramShaderCache.cpp index 60b7da82b9..95d5b0a9cd 100644 --- a/Source/Core/VideoBackends/OGL/ProgramShaderCache.cpp +++ b/Source/Core/VideoBackends/OGL/ProgramShaderCache.cpp @@ -824,25 +824,7 @@ bool SharedContextAsyncShaderCompiler::WorkerThreadInitWorkerThread(void* param) s_is_shared_context = true; if (g_ActiveConfig.backend_info.bSupportsPrimitiveRestart) - { - if (GLInterface->GetMode() == GLInterfaceMode::MODE_OPENGLES3) - { - glEnable(GL_PRIMITIVE_RESTART_FIXED_INDEX); - } - else - { - if (GLExtensions::Version() >= 310) - { - glEnable(GL_PRIMITIVE_RESTART); - glPrimitiveRestartIndex(65535); - } - else - { - glEnableClientState(GL_PRIMITIVE_RESTART_NV); - glPrimitiveRestartIndexNV(65535); - } - } - } + GLUtil::EnablePrimitiveRestart(); return true; } diff --git a/Source/Core/VideoBackends/OGL/Render.cpp b/Source/Core/VideoBackends/OGL/Render.cpp index 945dbadcf1..8f2ca8a05c 100644 --- a/Source/Core/VideoBackends/OGL/Render.cpp +++ b/Source/Core/VideoBackends/OGL/Render.cpp @@ -788,25 +788,7 @@ Renderer::Renderer() glClearDepthf(1.0f); if (g_ActiveConfig.backend_info.bSupportsPrimitiveRestart) - { - if (GLInterface->GetMode() == GLInterfaceMode::MODE_OPENGLES3) - { - glEnable(GL_PRIMITIVE_RESTART_FIXED_INDEX); - } - else - { - if (GLExtensions::Version() >= 310) - { - glEnable(GL_PRIMITIVE_RESTART); - glPrimitiveRestartIndex(65535); - } - else - { - glEnableClientState(GL_PRIMITIVE_RESTART_NV); - glPrimitiveRestartIndexNV(65535); - } - } - } + GLUtil::EnablePrimitiveRestart(); IndexGenerator::Init(); UpdateActiveConfig();