mirror of
https://github.com/ARMSX2/ARMSX2.git
synced 2026-08-24 16:50:16 -07:00
GSDeviceVK: exclude Turnip from the Adreno colorWriteMask-with-depthtest workaround
The 0x801EA000 driverVersion threshold is in the proprietary Qualcomm blob's version encoding, but Mesa/Turnip reports driverVersion in Mesa's own encoding (e.g. Mesa 26.1.2 packs to 0x06801002), which is always below the threshold. Result: the Adreno-5xx blob workaround fired on every Turnip device regardless of GPU generation, forcing FBMASK draws with depth test through the blend emulation path unnecessarily (confirmed active on Turnip A650, Mesa 26.1.2, deviceID 0x06050002). The blob bug does not exist in Mesa, so gate the workaround off when driverID reports VK_DRIVER_ID_MESA_TURNIP.
This commit is contained in:
@@ -3348,7 +3348,11 @@ bool GSDeviceVK::CheckFeatures()
|
||||
// depth test is active, so masked RGBA channels get written. PS2 FBMASK relies on the
|
||||
// write mask; we emulate the one case Vulkan blend can express (RGB fully masked, alpha
|
||||
// independent) in CreateTFXPipeline. No user toggle; excludes Adreno 6xx/7xx/8xx.
|
||||
m_broken_colormask_with_depth = IsDeviceAdreno() &&
|
||||
// The 0x801EA000 threshold is in the PROPRIETARY blob's driverVersion encoding; Turnip
|
||||
// reports Mesa's version (e.g. Mesa 26.1.2 -> 0x06801002), which is always below it and
|
||||
// made the workaround misfire on every Turnip device. The blob bug does not exist in
|
||||
// Mesa, so exclude Turnip outright.
|
||||
m_broken_colormask_with_depth = IsDeviceAdreno() && !is_turnip &&
|
||||
(m_device_properties.deviceID < 0x06000000u || m_device_properties.driverVersion < 0x801EA000u);
|
||||
if (m_broken_colormask_with_depth)
|
||||
Console.WriteLn("VK: Adreno colorWriteMask-with-depthtest workaround active (deviceID=0x%08X driver=0x%08X)",
|
||||
|
||||
Reference in New Issue
Block a user