From 33f88039d71dd7cdd2abcee9a90dfbb99882ba18 Mon Sep 17 00:00:00 2001 From: lightningterror <18107717+lightningterror@users.noreply.github.com> Date: Thu, 20 Jan 2022 10:25:48 +0100 Subject: [PATCH] GS-hw: Disable accumulation blend when there is fbmask with no overlap. Using a mix of hw/sw will be slower, so let's just do full sw blend, we already read the fb. --- pcsx2/GS/Renderers/HW/GSRendererNew.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pcsx2/GS/Renderers/HW/GSRendererNew.cpp b/pcsx2/GS/Renderers/HW/GSRendererNew.cpp index e48ea10005..d7a6c97a66 100644 --- a/pcsx2/GS/Renderers/HW/GSRendererNew.cpp +++ b/pcsx2/GS/Renderers/HW/GSRendererNew.cpp @@ -589,8 +589,8 @@ void GSRendererNew::EmulateBlending(bool& DATE_PRIMID, bool& DATE_BARRIER) else { // FBMASK already reads the fb so it is safe to enable sw blend when there is no overlap. - const bool fbmask_no_overlap = !accumulation_blend && m_conf.require_one_barrier - && m_conf.ps.fbmask && m_prim_overlap == PRIM_OVERLAP_NO; + const bool fbmask_no_overlap = !accumulation_blend && m_conf.require_one_barrier && m_conf.ps.fbmask && m_prim_overlap == PRIM_OVERLAP_NO; + switch (GSConfig.AccurateBlendingUnit) { case AccBlendLevel::Ultra: @@ -604,6 +604,8 @@ void GSRendererNew::EmulateBlending(bool& DATE_PRIMID, bool& DATE_BARRIER) [[fallthrough]]; case AccBlendLevel::Medium: case AccBlendLevel::Basic: + // Disable accumulation blend when there is fbmask with no overlap, will be faster. + accumulation_blend &= !fbmask_no_overlap; sw_blending |= accumulation_blend || blend_non_recursive || fbmask_no_overlap; [[fallthrough]]; case AccBlendLevel::Minimum: