From 25e0612a50de81d628a743fd8102864fb67caa02 Mon Sep 17 00:00:00 2001 From: Jake Turner Date: Sun, 16 Mar 2025 15:23:53 +0000 Subject: [PATCH] Improve SSA variable name and accessed resource name for resource arrays For a dynamic index resolve the name to the actual array index i.e. res2[1] instead of res2[_70 - 7] --- renderdoc/driver/shaders/dxil/dxil_debug.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/renderdoc/driver/shaders/dxil/dxil_debug.cpp b/renderdoc/driver/shaders/dxil/dxil_debug.cpp index e4a0e8149..a87aadaee 100644 --- a/renderdoc/driver/shaders/dxil/dxil_debug.cpp +++ b/renderdoc/driver/shaders/dxil/dxil_debug.cpp @@ -2333,11 +2333,13 @@ bool ThreadState::ExecuteInstruction(DebugAPIWrapper *apiWrapper, ShaderVariable arg; RDCASSERT(GetShaderVariable(inst.args[resIndexArgId], opCode, dxOpCode, arg)); uint32_t arrayIndex = arg.value.u32v[0]; + RDCASSERT(arrayIndex >= resRef->resourceBase.regBase); + arrayIndex -= resRef->resourceBase.regBase; bool isSRV = (resRef->resourceBase.resClass == ResourceClass::SRV); DescriptorCategory category = isSRV ? DescriptorCategory::ReadOnlyResource : DescriptorCategory::ReadWriteResource; result.SetBindIndex(ShaderBindIndex(category, resRef->resourceIndex, arrayIndex)); - result.name = baseResource; + result.name = resRef->resourceBase.name + StringFormat::Fmt("[%u]", arrayIndex); result.type = isSRV ? VarType::ReadOnlyResource : VarType::ReadWriteResource; // Default to unannotated handle ClearAnnotatedHandle(result); @@ -6120,7 +6122,6 @@ ResourceReferenceInfo ThreadState::GetResource(Id handleId, bool &annotatedHandl const ResourceReference *resRef = m_Program.GetResourceReference(handleId); if(resRef) { - alias = m_Program.GetHandleAlias(resRef->handleID); resRefInfo.Create(resRef, bindIndex.arrayElement); } else