From 4ba37f1dde9ea3da96716f5613498bbb4228fe4c Mon Sep 17 00:00:00 2001 From: Starlightbotanist Date: Thu, 1 Oct 2026 13:28:38 -0400 Subject: VideoCommon: Work around Adreno TEV zero input miscompilation Some Qualcomm Android drivers from version 700 onward miscompile specialized TEV pixel shaders when color input A or B is TevColorArg::Zero. Use konstLookup[8].rgb, which PixelShaderManager initializes to zero, to keep these inputs dependent on a uniform value. Use the existing driver bug gate for OpenGL and Vulkan. Other inputs and unaffected drivers retain their original shader expressions. --- Source/Core/VideoCommon/DriverDetails.cpp | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'Source/Core/VideoCommon/DriverDetails.cpp') diff --git a/Source/Core/VideoCommon/DriverDetails.cpp b/Source/Core/VideoCommon/DriverDetails.cpp index b657d7721c..3027aab154 100644 --- a/Source/Core/VideoCommon/DriverDetails.cpp +++ b/Source/Core/VideoCommon/DriverDetails.cpp @@ -161,6 +161,10 @@ constexpr BugInfo m_known_bugs[] = { BUG_BROKEN_DYNAMIC_SAMPLER_INDEXING, -1.0, -1.0, true}, {API_VULKAN, OS_ANDROID, VENDOR_QUALCOMM, DRIVER_QUALCOMM, Family::UNKNOWN, BUG_SLOW_OPTIMAL_IMAGE_TO_BUFFER_COPY, -1.0, -1.0, true}, + {API_OPENGL, OS_ANDROID, VENDOR_QUALCOMM, DRIVER_QUALCOMM, Family::UNKNOWN, + BUG_BROKEN_TEV_COLOR_ZERO, 700.0, -1.0, true}, + {API_VULKAN, OS_ANDROID, VENDOR_QUALCOMM, DRIVER_QUALCOMM, Family::UNKNOWN, + BUG_BROKEN_TEV_COLOR_ZERO, 0x802bc000, -1.0, true}, {API_VULKAN, OS_ALL, VENDOR_ATI, DRIVER_ATI, Family::UNKNOWN, BUG_BROKEN_DEPTH_CLAMP_CONTROL, -1.0, -1.0, true}, }; @@ -312,6 +316,7 @@ static const char* to_string(Bug bug) case BUG_BROKEN_DISCARD_WITH_EARLY_Z: return "broken-discard-with-early-z"; case BUG_BROKEN_DYNAMIC_SAMPLER_INDEXING: return "broken-dynamic-sampler-indexing"; case BUG_SLOW_OPTIMAL_IMAGE_TO_BUFFER_COPY: return "slow-optimal-image-to-buffer-copy"; + case BUG_BROKEN_TEV_COLOR_ZERO: return "broken-tev-color-zero"; case BUG_BROKEN_DEPTH_CLAMP_CONTROL: return "broken-depth-clamp-control"; } return "Unknown"; -- cgit v1.2.3