diff --git a/renderdoc/driver/shaders/spirv/spirv_disassemble.cpp b/renderdoc/driver/shaders/spirv/spirv_disassemble.cpp index 649ab3765..04d5bbd71 100644 --- a/renderdoc/driver/shaders/spirv/spirv_disassemble.cpp +++ b/renderdoc/driver/shaders/spirv/spirv_disassemble.cpp @@ -4104,7 +4104,7 @@ void AddSignatureParameter(bool isInput, ShaderStage stage, uint32_t id, uint32_ sig.regIndex += RDCMAX(1U, type->matrixSize); if(isArray) - patch.accessChain.back()++; + patch.ID = patch.structID = 0; } } diff --git a/renderdoc/driver/vulkan/vk_postvs.cpp b/renderdoc/driver/vulkan/vk_postvs.cpp index 8600f09cd..78a26f0e8 100644 --- a/renderdoc/driver/vulkan/vk_postvs.cpp +++ b/renderdoc/driver/vulkan/vk_postvs.cpp @@ -1247,7 +1247,7 @@ static void AddXFBAnnotations(const ShaderReflection &refl, const SPIRVPatchData spv::OpMemberDecorate, {outpatch[i].structID, outpatch[i].accessChain.back(), spv::DecorationOffset, xfbStride})); } - else + else if(outpatch[i].ID) { editor.AddDecoration(SPIRVOperation( spv::OpDecorate, {outpatch[i].ID, (uint32_t)spv::DecorationOffset, xfbStride})); @@ -1265,7 +1265,7 @@ static void AddXFBAnnotations(const ShaderReflection &refl, const SPIRVPatchData for(size_t i = 0; i < outpatch.size(); i++) { - if(vars.find(outpatch[i].ID) == vars.end()) + if(outpatch[i].ID && vars.find(outpatch[i].ID) == vars.end()) { editor.AddDecoration( SPIRVOperation(spv::OpDecorate, {outpatch[i].ID, (uint32_t)spv::DecorationXfbBuffer, 0}));