From 84f8ebd95fc70bc3482a53f31d5ebcc5266bb4b7 Mon Sep 17 00:00:00 2001 From: Stenzek Date: Tue, 5 Sep 2017 23:33:15 +1000 Subject: VideoBackends: Clear uid bits that are unused for the current backend Currently, this is only the logic op bit, but this will be extended to the framebuffer fetch/blend modes. In the future, when/if we move to VideoCommon pipelines, this state will be part of the pipeline UID anyway, and we can mask it out in the backend by using a two-level map, so the shaders/programs are shared. --- Source/Core/VideoBackends/Vulkan/StateTracker.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'Source/Core/VideoBackends/Vulkan/StateTracker.cpp') diff --git a/Source/Core/VideoBackends/Vulkan/StateTracker.cpp b/Source/Core/VideoBackends/Vulkan/StateTracker.cpp index 33baa86c4c..ae583374e8 100644 --- a/Source/Core/VideoBackends/Vulkan/StateTracker.cpp +++ b/Source/Core/VideoBackends/Vulkan/StateTracker.cpp @@ -338,8 +338,9 @@ bool StateTracker::CheckForShaderChanges(u32 gx_primitive_type) { VertexShaderUid vs_uid = GetVertexShaderUid(); PixelShaderUid ps_uid = GetPixelShaderUid(); - bool changed = false; + ClearUnusedPixelShaderUidBits(APIType::Vulkan, &ps_uid); + bool changed = false; bool use_ubershaders = g_ActiveConfig.bDisableSpecializedShaders; if (g_ActiveConfig.CanBackgroundCompileShaders() && !g_ActiveConfig.bDisableSpecializedShaders) { @@ -405,6 +406,7 @@ bool StateTracker::CheckForShaderChanges(u32 gx_primitive_type) } UberShader::PixelShaderUid uber_ps_uid = UberShader::GetPixelShaderUid(); + UberShader::ClearUnusedPixelShaderUidBits(APIType::Vulkan, &uber_ps_uid); VkShaderModule ps = g_shader_cache->GetPixelUberShaderForUid(uber_ps_uid); if (ps != m_pipeline_state.ps) { @@ -983,6 +985,7 @@ VkPipeline StateTracker::GetPipelineAndCacheUID() PipelineInfo uber_info = m_pipeline_state; UberShader::VertexShaderUid uber_vuid = UberShader::GetVertexShaderUid(); UberShader::PixelShaderUid uber_puid = UberShader::GetPixelShaderUid(); + UberShader::ClearUnusedPixelShaderUidBits(APIType::Vulkan, &uber_puid); uber_info.vs = g_shader_cache->GetVertexUberShaderForUid(uber_vuid); uber_info.ps = g_shader_cache->GetPixelUberShaderForUid(uber_puid); -- cgit v1.2.3