diff --git a/renderdoc/driver/shaders/dxil/dxil_debug.cpp b/renderdoc/driver/shaders/dxil/dxil_debug.cpp index 3ccce7acb..5194270ae 100644 --- a/renderdoc/driver/shaders/dxil/dxil_debug.cpp +++ b/renderdoc/driver/shaders/dxil/dxil_debug.cpp @@ -7979,10 +7979,11 @@ ScopedDebugData *Debugger::FindScopedDebugData(const DXIL::Metadata *md) const const DXIL::Metadata *Debugger::GetMDScope(const DXIL::Metadata *scopeMD) const { - // Iterate upwards to find DIFile, DISubprogram or DILexicalBlock scope + // Iterate upwards to find DIFile, DISubprogram, DILexicalBlock or DILexicalBlockFile scope while(scopeMD && (scopeMD->dwarf->type != DIBase::File) && (scopeMD->dwarf->type != DIBase::Subprogram) && - (scopeMD->dwarf->type != DIBase::LexicalBlock)) + (scopeMD->dwarf->type != DIBase::LexicalBlock) && + (scopeMD->dwarf->type != DIBase::LexicalBlockFile)) scopeMD = m_Program->GetDebugScopeParent(scopeMD->dwarf); return scopeMD; @@ -9738,6 +9739,10 @@ ShaderDebugTrace *Debugger::BeginDebug(DebugAPIWrapper *apiWrapper, uint32_t eve { scopeMD = dwarf->As()->scope; } + else if(dwarf->type == DIBase::LexicalBlockFile) + { + scopeMD = dwarf->As()->scope; + } else if(dwarf->type == DIBase::File) { scopeMD = NULL;