diff --git a/renderdoc/driver/shaders/spirv/spirv_debug.cpp b/renderdoc/driver/shaders/spirv/spirv_debug.cpp index c81934fdd..a3a9508d3 100644 --- a/renderdoc/driver/shaders/spirv/spirv_debug.cpp +++ b/renderdoc/driver/shaders/spirv/spirv_debug.cpp @@ -973,6 +973,14 @@ void ThreadState::StepNext(ShaderDebugState *state, const rdcarray for(uint32_t i = 0; i < shuffle.components.size(); i++) { uint32_t c = shuffle.components[i]; + + // "A Component literal may also be FFFFFFFF, which means the corresponding result component + // has no source and is undefined." + // If it has no defined source, we can use 0 safely and know that it's at least going to + // index validly + if(c == ~0U) + c = 0; + if(c < vec1Cols) copyComp(var, i, src1, c); else