mirror of
https://github.com/PCSX2/pcsx2.git
synced 2026-10-12 02:08:45 +00:00
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.
This commit is contained in:
@@ -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)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user