From 0d0ed26fb0197f017628cc4dd50fea7651823e53 Mon Sep 17 00:00:00 2001 From: baldurk Date: Wed, 21 Jul 2021 14:22:57 +0100 Subject: [PATCH] Handle 0xFFFFFFFF as a component in OpVectorShuffle --- renderdoc/driver/shaders/spirv/spirv_debug.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) 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