diff options
| author | Starlightbotanist <starlightbotanist@gmail.com> | 2026-10-01 13:28:38 -0400 |
|---|---|---|
| committer | Starlightbotanist <starlightbotanist@gmail.com> | 2026-10-04 00:25:01 -0400 |
| commit | 4ba37f1dde9ea3da96716f5613498bbb4228fe4c (patch) | |
| tree | 33120114957a9958e725f2ffb174b0d9c8ad345c /Source/Core/VideoCommon/DriverDetails.cpp | |
| parent | 003c61b78bec7955dbe765afd61abca0c6bfabf2 (diff) | |
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.
Diffstat (limited to 'Source/Core/VideoCommon/DriverDetails.cpp')
| -rw-r--r-- | Source/Core/VideoCommon/DriverDetails.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
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"; |
