From bcf794b0194ce45c60ec5792c0a87d72dd20df41 Mon Sep 17 00:00:00 2001 From: baldurk Date: Tue, 2 Apr 2024 16:08:20 +0100 Subject: [PATCH] Add component clarifier for multiple outputs * This prevents multiple outputs being declared with the same name and aliasing. --- renderdoc/driver/shaders/spirv/spirv_debug_setup.cpp | 6 ++++++ renderdoc/driver/shaders/spirv/spirv_reflect.cpp | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/renderdoc/driver/shaders/spirv/spirv_debug_setup.cpp b/renderdoc/driver/shaders/spirv/spirv_debug_setup.cpp index c650f4f73..5aa9b00d2 100644 --- a/renderdoc/driver/shaders/spirv/spirv_debug_setup.cpp +++ b/renderdoc/driver/shaders/spirv/spirv_debug_setup.cpp @@ -938,6 +938,12 @@ ShaderDebugTrace *Debugger::BeginDebug(DebugAPIWrapper *api, const ShaderStage s StringFormat::Fmt("_%s%u", isInput ? "input" : "output", decorations[v.id].location); else sourceName = StringFormat::Fmt("_sig%u", v.id.value()); + + for(const DecorationAndParamData &d : decorations[v.id].others) + { + if(d.value == Decoration::Component) + sourceName += StringFormat::Fmt("_%u", d.component); + } } const DataType &type = dataTypes[v.type]; diff --git a/renderdoc/driver/shaders/spirv/spirv_reflect.cpp b/renderdoc/driver/shaders/spirv/spirv_reflect.cpp index 5aa8cfc6b..961ddd1ab 100644 --- a/renderdoc/driver/shaders/spirv/spirv_reflect.cpp +++ b/renderdoc/driver/shaders/spirv/spirv_reflect.cpp @@ -1204,6 +1204,12 @@ void Reflector::MakeReflection(const GraphicsAPI sourceAPI, const ShaderStage st decorations[global.id].location); else name = StringFormat::Fmt("_sig%u", global.id.value()); + + for(const DecorationAndParamData &d : decorations[global.id].others) + { + if(d.value == Decoration::Component) + name += StringFormat::Fmt("_%u", d.component); + } } const bool used = usedIds.find(global.id) != usedIds.end();