From a7a4583c843e7488f1476b3dd94f25d9170ccf9f Mon Sep 17 00:00:00 2001 From: lightningterror <18107717+lightningterror@users.noreply.github.com> Date: Fri, 10 Oct 2025 08:36:41 +0200 Subject: [PATCH] GS/HW: Enable any fbmask emulation if Blending is above minimum. Since dx11/12 now supports sw blending and copies/draw area/quads optimizations have been made perf impact will be lower so we can use the same unified path if texture barriers are disabled. --- pcsx2/GS/Renderers/HW/GSRendererHW.cpp | 29 +------------------------- 1 file changed, 1 insertion(+), 28 deletions(-) diff --git a/pcsx2/GS/Renderers/HW/GSRendererHW.cpp b/pcsx2/GS/Renderers/HW/GSRendererHW.cpp index 7111770d28..b5f46f6e9a 100644 --- a/pcsx2/GS/Renderers/HW/GSRendererHW.cpp +++ b/pcsx2/GS/Renderers/HW/GSRendererHW.cpp @@ -5147,35 +5147,8 @@ void GSRendererHW::EmulateTextureShuffleAndFbmask(GSTextureCache::Target* rt, GS // Uncomment to disable texture shuffle emulation. // m_texture_shuffle = false; - bool enable_fbmask_emulation = false; + const bool enable_fbmask_emulation = GSConfig.AccurateBlendingUnit != AccBlendLevel::Minimum; const GSDevice::FeatureSupport features = g_gs_device->Features(); - if (features.texture_barrier || features.multidraw_fb_copy) - { - enable_fbmask_emulation = GSConfig.AccurateBlendingUnit != AccBlendLevel::Minimum; - } - else - { - // FBmask blend level selection. - // We do this becaue: - // 1. D3D sucks. - // 2. FB copy is slow, especially on triangle primitives which is unplayable with some games. - // 3. SW blending isn't implemented yet. - switch (GSConfig.AccurateBlendingUnit) - { - case AccBlendLevel::Maximum: - case AccBlendLevel::Full: - case AccBlendLevel::High: - case AccBlendLevel::Medium: - enable_fbmask_emulation = true; - break; - case AccBlendLevel::Basic: - // Enable Fbmask emulation excluding triangle class because it is quite slow. - enable_fbmask_emulation = (m_vt.m_primclass != GS_TRIANGLE_CLASS); - break; - case AccBlendLevel::Minimum: - break; - } - } if (m_texture_shuffle) {