diff options
| author | Stenzek <stenzek@gmail.com> | 2018-03-01 18:03:24 +1000 |
|---|---|---|
| committer | Stenzek <stenzek@gmail.com> | 2018-03-10 15:56:45 +1000 |
| commit | 9fa24700b69b98b2569f4bd1353482cbfb1ec2d7 (patch) | |
| tree | 124457d7aceb32d5aea6447bb5bda08fe7875225 /Source/Core/VideoCommon/VertexManagerBase.cpp | |
| parent | 590307b94c5865c0a75a18e9a593d251ce38407a (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.cpp | 27 |
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); } |
