From 5efe9bc0b2ecb9c9b04f3b3fb278d60dfa7a74d2 Mon Sep 17 00:00:00 2001 From: baldurk Date: Thu, 16 Feb 2023 11:21:58 +0000 Subject: [PATCH] Fix some edge cases on DXIL function disassembly --- renderdoc/driver/shaders/dxil/dxil_disassemble.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/renderdoc/driver/shaders/dxil/dxil_disassemble.cpp b/renderdoc/driver/shaders/dxil/dxil_disassemble.cpp index 39c4e860f..377ebe52b 100644 --- a/renderdoc/driver/shaders/dxil/dxil_disassemble.cpp +++ b/renderdoc/driver/shaders/dxil/dxil_disassemble.cpp @@ -562,9 +562,12 @@ void Program::MakeDisassemblyString() if(func.attrs && func.attrs->functionSlot) { - m_Disassembly += StringFormat::Fmt("; Function Attrs: %s\n", - func.attrs->functionSlot->toString(false).c_str()); - instructionLine++; + rdcstr funcAttrs = func.attrs->functionSlot->toString(false).c_str(); + if(!funcAttrs.empty()) + { + m_Disassembly += StringFormat::Fmt("; Function Attrs: %s\n", funcAttrs.c_str()); + instructionLine++; + } } m_Disassembly += (func.external ? "declare " : "define "); @@ -577,6 +580,9 @@ void Program::MakeDisassemblyString() m_Disassembly += StringFormat::Fmt( " comdat($%s)", escapeStringIfNeeded(m_Comdats[func.comdatIdx].second).c_str()); + if(func.align) + m_Disassembly += StringFormat::Fmt(" align %u", (1U << func.align) >> 1); + if(func.attrs && func.attrs->functionSlot) m_Disassembly += StringFormat::Fmt(" #%u", funcAttrGroups.indexOf(func.attrs->functionSlot));