diff options
Diffstat (limited to 'Source/Core/VideoCommon/ShaderCache.cpp')
| -rw-r--r-- | Source/Core/VideoCommon/ShaderCache.cpp | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/Source/Core/VideoCommon/ShaderCache.cpp b/Source/Core/VideoCommon/ShaderCache.cpp index e4d2115c3b..6049fd29a7 100644 --- a/Source/Core/VideoCommon/ShaderCache.cpp +++ b/Source/Core/VideoCommon/ShaderCache.cpp @@ -743,9 +743,17 @@ static GXUberPipelineUid ApplyDriverBugs(const GXUberPipelineUid& in) { GXUberPipelineUid out; memcpy(&out, &in, sizeof(out)); // Copy padding - if (!g_ActiveConfig.backend_info.bSupportsDualSourceBlend || - (DriverDetails::HasBug(DriverDetails::BUG_BROKEN_DUAL_SOURCE_BLENDING) && - !out.blending_state.RequiresDualSrc())) + if (g_ActiveConfig.backend_info.bSupportsFramebufferFetch) + { + // Always blend in shader + out.blending_state.hex = 0; + out.blending_state.colorupdate = in.blending_state.colorupdate.Value(); + out.blending_state.alphaupdate = in.blending_state.alphaupdate.Value(); + out.ps_uid.GetUidData()->no_dual_src = true; + } + else if (!g_ActiveConfig.backend_info.bSupportsDualSourceBlend || + (DriverDetails::HasBug(DriverDetails::BUG_BROKEN_DUAL_SOURCE_BLENDING) && + !out.blending_state.RequiresDualSrc())) { out.blending_state.usedualsrc = false; out.ps_uid.GetUidData()->no_dual_src = true; |
