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:
Brian Degenhardt
2026-07-19 20:15:04 -07:00
parent c8d736c042
commit db0939d28b
+5 -1
View File
@@ -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)",