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; }