GS/HW: Adjust color_dest_blend, color_dest_blend2, blend_zero_to_one_range conditions.

Don't enable color_dest_blend if it's a channel shuffle or dithering draw.

Don't enable color_dest_blend2 if it's preferring sw blend or dithering draw.

Don't enable blend_zero_to_one_range if it's preferring sw blend or dithering draw.
This commit is contained in:
lightningterror 2025-12-06 07:07:37 +01:00
parent 38f61b9658
commit 4eb0b097d6

View File

@ -5876,9 +5876,9 @@ void GSRendererHW::EmulateBlending(int rt_alpha_min, int rt_alpha_max, const boo
case AccBlendLevel::Basic: case AccBlendLevel::Basic:
default: default:
// Prefer sw blend if possible. // Prefer sw blend if possible.
color_dest_blend &= !prefer_sw_blend; color_dest_blend &= !(m_channel_shuffle || m_conf.ps.dither);
color_dest_blend2 &= !prefer_sw_blend; color_dest_blend2 &= !(prefer_sw_blend || m_conf.ps.dither);
blend_zero_to_one_range &= !prefer_sw_blend; blend_zero_to_one_range &= !(prefer_sw_blend || m_conf.ps.dither);
accumulation_blend &= !prefer_sw_blend; accumulation_blend &= !prefer_sw_blend;
// Enable sw blending for barriers. // Enable sw blending for barriers.
sw_blending |= blend_requires_barrier || prefer_sw_blend; sw_blending |= blend_requires_barrier || prefer_sw_blend;