From cbcba5a438aa600a1073402565b3a3f1cb13f5c4 Mon Sep 17 00:00:00 2001 From: Jake Turner Date: Wed, 23 Sep 2026 12:53:31 +0100 Subject: [PATCH] Add DXIL DebugInfo support for LEXICAL_BLOCK_FILE --- renderdoc/driver/shaders/dxil/dxil_debuginfo.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/renderdoc/driver/shaders/dxil/dxil_debuginfo.cpp b/renderdoc/driver/shaders/dxil/dxil_debuginfo.cpp index 0cc7f046b..2d54ae18d 100644 --- a/renderdoc/driver/shaders/dxil/dxil_debuginfo.cpp +++ b/renderdoc/driver/shaders/dxil/dxil_debuginfo.cpp @@ -297,6 +297,8 @@ const Metadata *Program::GetDebugScopeParent(const DIBase *d) const return d->As()->scope; else if(d->type == DIBase::LexicalBlock) return d->As()->scope; + else if(d->type == DIBase::LexicalBlockFile) + return d->As()->scope; else if(d->type == DIBase::CompositeType) return d->As()->file; else if(d->type == DIBase::Namespace) @@ -311,6 +313,8 @@ uint64_t Program::GetDebugScopeLine(const DIBase *d) const return d->As()->line; else if(d->type == DIBase::LexicalBlock) return d->As()->line; + else if(d->type == DIBase::LexicalBlockFile) + return 0; else if(d->type == DIBase::File) return 0; @@ -353,6 +357,10 @@ rdcstr Program::GetDebugScopeFilePath(const DIBase *d) const scope = dwarf->As()->scope; newFileMD = dwarf->As()->file; break; + case DIBase::LexicalBlockFile: + scope = dwarf->As()->scope; + newFileMD = dwarf->As()->file; + break; case DIBase::Namespace: scope = dwarf->As()->scope; newFileMD = dwarf->As()->file; @@ -439,6 +447,8 @@ rdcstr Program::GetFunctionScopeName(const DIBase *d) const scope = d->As()->scope; else if(d->type == DIBase::LexicalBlock) scope = d->As()->scope; + else if(d->type == DIBase::LexicalBlockFile) + scope = d->As()->scope; while(scope && scope->dwarf) { @@ -452,6 +462,11 @@ rdcstr Program::GetFunctionScopeName(const DIBase *d) const scope = scope->dwarf->As()->scope; continue; } + else if(scope->dwarf->type == DIBase::LexicalBlockFile) + { + scope = scope->dwarf->As()->scope; + continue; + } break; }