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.
This commit is contained in:
lightningterror 2022-01-20 10:25:48 +01:00
parent 2cf6b5052d
commit 33f88039d7
1 changed files with 4 additions and 2 deletions

View File

@ -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: