From 7dda3770e4c4429db88307b26898468dd5e58866 Mon Sep 17 00:00:00 2001 From: baldurk Date: Fri, 5 Jun 2020 14:32:54 +0100 Subject: [PATCH] Generate consistent names for unnamed shader I/O signatures --- renderdoc/driver/shaders/spirv/spirv_debug_setup.cpp | 2 ++ renderdoc/driver/shaders/spirv/spirv_reflect.cpp | 12 ++++++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/renderdoc/driver/shaders/spirv/spirv_debug_setup.cpp b/renderdoc/driver/shaders/spirv/spirv_debug_setup.cpp index 08e742f06..b1c358dc9 100644 --- a/renderdoc/driver/shaders/spirv/spirv_debug_setup.cpp +++ b/renderdoc/driver/shaders/spirv/spirv_debug_setup.cpp @@ -542,6 +542,8 @@ ShaderDebugTrace *Debugger::BeginDebug(DebugAPIWrapper *apiWrapper, const Shader else if(decorations[v.id].flags & Decorations::HasLocation) sourceName = StringFormat::Fmt("_%s%u", isInput ? "input" : "output", decorations[v.id].location); + else + sourceName = StringFormat::Fmt("_sig%u", v.id.value()); } 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 3d6046b32..40de2c1c6 100644 --- a/renderdoc/driver/shaders/spirv/spirv_reflect.cpp +++ b/renderdoc/driver/shaders/spirv/spirv_reflect.cpp @@ -769,9 +769,17 @@ void Reflector::MakeReflection(const GraphicsAPI sourceAPI, const ShaderStage st if(name.empty() && baseType.type == DataType::StructType) name = baseType.name; - // otherwise fall back to naming after the ID + // otherwise fall back to naming after the builtin or location if(name.empty()) - name = StringFormat::Fmt("sig%u", global.id.value()); + { + if(decorations[global.id].flags & Decorations::HasBuiltIn) + name = StringFormat::Fmt("_%s", ToStr(decorations[global.id].builtIn).c_str()); + else if(decorations[global.id].flags & Decorations::HasLocation) + name = StringFormat::Fmt("_%s%u", isInput ? "input" : "output", + decorations[global.id].location); + else + name = StringFormat::Fmt("_sig%u", global.id.value()); + } const bool used = usedIds.find(global.id) != usedIds.end();