summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon/VertexManagerBase.cpp
diff options
context:
space:
mode:
authorStenzek <stenzek@gmail.com>2018-03-01 18:03:24 +1000
committerStenzek <stenzek@gmail.com>2018-03-10 15:56:45 +1000
commit9fa24700b69b98b2569f4bd1353482cbfb1ec2d7 (patch)
tree124457d7aceb32d5aea6447bb5bda08fe7875225 /Source/Core/VideoCommon/VertexManagerBase.cpp
parent590307b94c5865c0a75a18e9a593d251ce38407a (diff)
VideoConfig: Collapse ubershader configuration fields to a single value
Diffstat (limited to 'Source/Core/VideoCommon/VertexManagerBase.cpp')
-rw-r--r--Source/Core/VideoCommon/VertexManagerBase.cpp27
1 files changed, 12 insertions, 15 deletions
diff --git a/Source/Core/VideoCommon/VertexManagerBase.cpp b/Source/Core/VideoCommon/VertexManagerBase.cpp
index f32ac72b0a..b54b8060b9 100644
--- a/Source/Core/VideoCommon/VertexManagerBase.cpp
+++ b/Source/Core/VideoCommon/VertexManagerBase.cpp
@@ -566,27 +566,24 @@ void VertexManagerBase::UpdatePipelineObject()
m_current_pipeline_object = nullptr;
m_pipeline_config_changed = false;
- // Try for specialized shaders.
- if (!g_ActiveConfig.bDisableSpecializedShaders)
+ if (g_ActiveConfig.iUberShaderMode == UberShaderMode::Disabled)
+ {
+ // Ubershaders disabled? Block and compile the specialized shader.
+ m_current_pipeline_object = g_shader_cache->GetPipelineForUid(m_current_pipeline_config);
+ return;
+ }
+ else if (g_ActiveConfig.iUberShaderMode == UberShaderMode::Hybrid)
{
// Can we background compile shaders? If so, get the pipeline asynchronously.
- if (g_ActiveConfig.bBackgroundShaderCompiling)
- {
- auto res = g_shader_cache->GetPipelineForUidAsync(m_current_pipeline_config);
- if (res)
- {
- // Specialized shaders are ready.
- m_current_pipeline_object = *res;
- return;
- }
- }
- else
+ auto res = g_shader_cache->GetPipelineForUidAsync(m_current_pipeline_config);
+ if (res)
{
- m_current_pipeline_object = g_shader_cache->GetPipelineForUid(m_current_pipeline_config);
+ // Specialized shaders are ready, prefer these.
+ m_current_pipeline_object = *res;
return;
}
}
- // Fallback to ubershaders.
+ // Exclusive ubershader mode, or hybrid and shaders are still compiling.
m_current_pipeline_object = g_shader_cache->GetUberPipelineForUid(m_current_uber_pipeline_config);
}