RD DXIL Disassembly add compute shader inputs and thread group size

e.g.

[numthreads(3, 2, 1)]
void main()
{
  InitialiseHandle(bufOut); //  index = 1
  InitialiseHandle(bufIn); //  index = 0
  InitialiseHandle(consts); //  index = 0

Inputs
  float3 threadId;

Inputs
  float flattenedThreadIdInGroup;
This commit is contained in:
Jake Turner committed 2024-06-26 08:27:56 +01:00
1 parent 6cddf16263
commit 419d321a4a
1 file changed
+60 -1
@@ -2764,6 +2764,28 @@ void Program::MakeRDDisassemblyString(const DXBC::Reflection *reflection)
}
DisassemblyAddNewLine();
}
else if(reflection && !reflection->InputSig.empty())
{
m_Disassembly += "Inputs";
DisassemblyAddNewLine();
for(size_t j = 0; j < reflection->InputSig.size(); ++j)
{
if(needBlankLine)
DisassemblyAddNewLine();
const SigParameter &sig = reflection->InputSig[j];
m_Disassembly += " ";
m_Disassembly += ToStr(sig.varType).c_str();
if(sig.compCount > 1)
m_Disassembly += ToStr(sig.compCount);
m_Disassembly += " " + sig.semanticIdxName;
m_Disassembly += ";";
needBlankLine = true;
}
DisassemblyAddNewLine();
}
if(!entryPoint->outputs.empty())
{
@@ -2807,6 +2829,34 @@ void Program::MakeRDDisassemblyString(const DXBC::Reflection *reflection)
}
DisassemblyAddNewLine();
}
else if(reflection && !reflection->OutputSig.empty())
{
if(needBlankLine)
{
DisassemblyAddNewLine();
needBlankLine = false;
}
m_Disassembly += "Outputs";
DisassemblyAddNewLine();
for(size_t j = 0; j < reflection->OutputSig.size(); ++j)
{
if(needBlankLine)
DisassemblyAddNewLine();
const SigParameter &sig = reflection->OutputSig[j];
m_Disassembly += " ";
m_Disassembly += ToStr(sig.varType).c_str();
if(sig.compCount > 1)
m_Disassembly += ToStr(sig.compCount);
m_Disassembly += " " + sig.semanticIdxName;
m_Disassembly += ";";
needBlankLine = true;
}
DisassemblyAddNewLine();
}
if(!entryPoint->srvs.empty())
{
@@ -2950,9 +3000,18 @@ void Program::MakeRDDisassemblyString(const DXBC::Reflection *reflection)
DisassemblyAddNewLine();
}
// Show the compute shader thread group size
if(reflection && m_Type == DXBC::ShaderType::Compute)
{
m_Disassembly += StringFormat::Fmt(
"[numthreads(%u, %u, %u)]", reflection->DispatchThreadsDimension[0],
reflection->DispatchThreadsDimension[1], reflection->DispatchThreadsDimension[2]);
DisassemblyAddNewLine();
}
if(func.internalLinkage)
m_Disassembly += "internal ";
m_Disassembly += func.type->declFunction("@" + escapeStringIfNeeded(func.name), func.args,
m_Disassembly += func.type->declFunction(escapeStringIfNeeded(func.name), func.args,
func.attrs, dxcStyleFormatting);
if(func.comdatIdx < m_Comdats.size())