From c79d939445993666d2355079f5a38fe4c00e7ab0 Mon Sep 17 00:00:00 2001 From: baldurk Date: Tue, 5 May 2026 18:00:28 +0100 Subject: [PATCH] Add manual emulation of IsHelperLane() on SM <6.6 * The default dxc emulation does not work when running in MSAA as our shader runs at sample rate and SV_Coverage can be non-zero even for helper lanes. --- renderdoc/driver/shaders/dxbc/dx_debug.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/renderdoc/driver/shaders/dxbc/dx_debug.cpp b/renderdoc/driver/shaders/dxbc/dx_debug.cpp index d9cd245cd..59787aa7f 100644 --- a/renderdoc/driver/shaders/dxbc/dx_debug.cpp +++ b/renderdoc/driver/shaders/dxbc/dx_debug.cpp @@ -964,7 +964,13 @@ void ExtractInputs(Inputs IN quadLaneIndex = (2u * (uint(debug_pixelPos.y) & 1u)) + (uint(debug_pixelPos.x) & 1u); derivValid = ddx(debug_pixelPos.x); + +#if __SHADER_TARGET_MINOR >= 6 + // IsHelperLane() can fail when software emulated on MSAA, because it checks SV_Coverage != 0 isHelper = IsHelperLane() ? 1 : 0; +#else + isHelper = (coverage & (1u << sample)) == 0; +#endif helperBallot = WaveActiveBallot(isHelper != 0);