Simplify DXIL Disassembler/Debugger SSA ID name strings and aliases

Store SSA ID name strings in a container which is shared between the disassembler and the debugger.
The SSA ID name strings are guaranteed to be unique by appending the SSA ID value.

Do not use resource names for SSA ID names, only show resource names when a DXIL handle is created i.e. DXOp::CreateHandle, DXOp::CreateHandleFromBinding & DXOp::CreateHandleFromHeap

This means the debugger now has a unique name for each ShaderVariable generated.

Revert the ShaderViewer consistency changes which were only required because the DXIL debugger did not generate unique names for ShaderVariables.
This commit is contained in:
Jake Turner
2025-11-13 13:05:24 +13:00
parent edf9ddacf0
commit ccbb516610
5 changed files with 268 additions and 298 deletions
+10 -24
View File
@@ -2789,24 +2789,17 @@ void ShaderViewer::applyBackwardsChange()
if(v)
{
#if SHADER_VARIABLE_CHANGE_CONSISTENCY_CHECKS
if(!(c.after.type == VarType::ReadOnlyResource || c.after.type == VarType::ReadWriteResource))
{
if(!ShaderVariableEqual(c.after, *v))
qCritical("ShaderVariableChange for '%s' after does not match existing entry",
c.before.name.c_str());
}
if(!ShaderVariableEqual(c.after, *v))
qCritical("ShaderVariableChange for '%s' after does not match existing entry",
c.before.name.c_str());
#endif // #if SHADER_VARIABLE_CHANGE_CONSISTENCY_CHECKS
*v = c.before;
}
else
{
#if SHADER_VARIABLE_CHANGE_CONSISTENCY_CHECKS
if(!(c.after.type == VarType::ReadOnlyResource || c.after.type == VarType::ReadWriteResource))
{
if(!(c.after == nullChange))
qCritical("ShaderVariableChange for '%s' does not have NULL after",
c.before.name.c_str());
}
if(!(c.after == nullChange))
qCritical("ShaderVariableChange for '%s' does not have NULL after", c.before.name.c_str());
#endif // #if SHADER_VARIABLE_CHANGE_CONSISTENCY_CHECKS
m_Variables.insert(0, c.before);
}
@@ -2886,24 +2879,17 @@ void ShaderViewer::applyForwardsChange()
if(v)
{
#if SHADER_VARIABLE_CHANGE_CONSISTENCY_CHECKS
if(!(c.after.type == VarType::ReadOnlyResource || c.after.type == VarType::ReadWriteResource))
{
if(!ShaderVariableEqual(c.before, *v))
qCritical("ShaderVariableChange for '%s' before does not match existing entry",
c.after.name.c_str());
}
if(!ShaderVariableEqual(c.before, *v))
qCritical("ShaderVariableChange for '%s' before does not match existing entry",
c.after.name.c_str());
#endif // #if SHADER_VARIABLE_CHANGE_CONSISTENCY_CHECKS
*v = c.after;
}
else
{
#if SHADER_VARIABLE_CHANGE_CONSISTENCY_CHECKS
if(!(c.after.type == VarType::ReadOnlyResource || c.after.type == VarType::ReadWriteResource))
{
if(!(c.before == nullChange) && c.before.type != VarType::ReadOnlyResource)
qCritical("ShaderVariableChange for '%s' does not have NULL before",
c.after.name.c_str());
}
if(!(c.before == nullChange))
qCritical("ShaderVariableChange for '%s' does not have NULL before", c.after.name.c_str());
#endif // #if SHADER_VARIABLE_CHANGE_CONSISTENCY_CHECKS
m_Variables.insert(0, c.after);
}