From c42f274e220e8987b996889a8e663bff302e7f8f Mon Sep 17 00:00:00 2001 From: degasus Date: Sun, 5 Jan 2014 10:38:45 +0100 Subject: [PATCH] OpenGL: use shader 420pack if available to staticly bind ubo location Bindung locations after compiling a shader stalls the driver. So if we manage not to bind anything after compilation, the lag would be reduced much. --- Source/Core/VideoBackends/OGL/ProgramShaderCache.cpp | 5 +++-- Source/Core/VideoBackends/OGL/Render.cpp | 2 ++ Source/Core/VideoCommon/PixelShaderGen.cpp | 2 +- Source/Core/VideoCommon/VertexShaderGen.cpp | 2 +- Source/Core/VideoCommon/VideoConfig.h | 1 + 5 files changed, 8 insertions(+), 4 deletions(-) diff --git a/Source/Core/VideoBackends/OGL/ProgramShaderCache.cpp b/Source/Core/VideoBackends/OGL/ProgramShaderCache.cpp index f4e7dcb6a7..e81c6d2d84 100644 --- a/Source/Core/VideoBackends/OGL/ProgramShaderCache.cpp +++ b/Source/Core/VideoBackends/OGL/ProgramShaderCache.cpp @@ -96,7 +96,7 @@ void SHADER::SetProgramVariables() Bind(); // Bind UBO - if (g_ActiveConfig.backend_info.bSupportsGLSLUBO) + if (g_ActiveConfig.backend_info.bSupportsGLSLUBO && !g_ActiveConfig.backend_info.bSupportShadingLanguage420pack) { GLint PSBlock_id = glGetUniformBlockIndex(glprogid, "PSBlock"); GLint VSBlock_id = glGetUniformBlockIndex(glprogid, "VSBlock"); @@ -135,7 +135,6 @@ void SHADER::SetProgramVariables() } } - // Bind Texture Sampler for (int a = 0; a <= 9; ++a) { @@ -569,6 +568,7 @@ void ProgramShaderCache::CreateHeader ( void ) "%s\n" "%s\n" // ubo "%s\n" // early-z + "%s\n" // 420pack // Precision defines for GLSLES3 "%s\n" @@ -597,6 +597,7 @@ void ProgramShaderCache::CreateHeader ( void ) , v==GLSLES3 ? "#version 300 es" : v==GLSL_130 ? "#version 130" : v==GLSL_140 ? "#version 140" : "#version 150" , g_ActiveConfig.backend_info.bSupportsGLSLUBO && v