From 56decb5d8ccaaceca1cac7dbb6def0bec84fac99 Mon Sep 17 00:00:00 2001 From: baldurk Date: Mon, 3 Feb 2025 16:47:42 +0000 Subject: [PATCH] Pass current active mask of workgroup to threads when stepping --- renderdoc/driver/shaders/spirv/spirv_debug.cpp | 3 ++- renderdoc/driver/shaders/spirv/spirv_debug.h | 3 ++- renderdoc/driver/shaders/spirv/spirv_debug_setup.cpp | 4 ++-- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/renderdoc/driver/shaders/spirv/spirv_debug.cpp b/renderdoc/driver/shaders/spirv/spirv_debug.cpp index 3d4f71751..deb7f9591 100644 --- a/renderdoc/driver/shaders/spirv/spirv_debug.cpp +++ b/renderdoc/driver/shaders/spirv/spirv_debug.cpp @@ -643,7 +643,8 @@ void ThreadState::EnterEntryPoint(ShaderDebugState *state) m_State = NULL; } -void ThreadState::StepNext(ShaderDebugState *state, const rdcarray &workgroup) +void ThreadState::StepNext(ShaderDebugState *state, const rdcarray &workgroup, + const rdcarray &activeMask) { m_State = state; diff --git a/renderdoc/driver/shaders/spirv/spirv_debug.h b/renderdoc/driver/shaders/spirv/spirv_debug.h index 5876b50d6..aca9c4111 100644 --- a/renderdoc/driver/shaders/spirv/spirv_debug.h +++ b/renderdoc/driver/shaders/spirv/spirv_debug.h @@ -180,7 +180,8 @@ struct ThreadState ~ThreadState(); void EnterEntryPoint(ShaderDebugState *state); - void StepNext(ShaderDebugState *state, const rdcarray &workgroup); + void StepNext(ShaderDebugState *state, const rdcarray &workgroup, + const rdcarray &activeMask); enum DerivDir { diff --git a/renderdoc/driver/shaders/spirv/spirv_debug_setup.cpp b/renderdoc/driver/shaders/spirv/spirv_debug_setup.cpp index ddd74b265..4bda77d29 100644 --- a/renderdoc/driver/shaders/spirv/spirv_debug_setup.cpp +++ b/renderdoc/driver/shaders/spirv/spirv_debug_setup.cpp @@ -2479,7 +2479,7 @@ rdcarray Debugger::ContinueDebug() funcRet = thread.callstack.back()->funcCallInstruction; state.stepIndex = steps; - thread.StepNext(&state, workgroup); + thread.StepNext(&state, workgroup, activeMask); if(thread.callstack.size() > prevStackSize) instOffs = @@ -2538,7 +2538,7 @@ rdcarray Debugger::ContinueDebug() } else { - thread.StepNext(NULL, workgroup); + thread.StepNext(NULL, workgroup, activeMask); } } }