From 88f817f77d93e2ecd4774e9c1fe273689afba6cb Mon Sep 17 00:00:00 2001 From: Jake Turner Date: Mon, 24 Feb 2025 16:36:13 +0000 Subject: [PATCH] Handle callstacks to class/struct member functions --- renderdoc/driver/shaders/dxil/dxil_debug.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/renderdoc/driver/shaders/dxil/dxil_debug.cpp b/renderdoc/driver/shaders/dxil/dxil_debug.cpp index 31655080e..836c46d4c 100644 --- a/renderdoc/driver/shaders/dxil/dxil_debug.cpp +++ b/renderdoc/driver/shaders/dxil/dxil_debug.cpp @@ -8070,6 +8070,22 @@ ShaderDebugTrace *Debugger::BeginDebug(uint32_t eventId, const DXBC::DXBCContain scopeMD = NULL; break; } + else if(dwarf->type == DIBase::CompositeType) + { + const DICompositeType *compType = dwarf->As(); + // Detect a member function + if((compType->tag == DW_TAG_class_type) || (compType->tag == DW_TAG_structure_type)) + { + const rdcstr *typeName = compType->name; + if(typeName && !typeName->empty()) + { + if(!callstack.empty()) + callstack[0] = *typeName + "::" + callstack[0]; + } + } + scopeMD = compType->scope; + break; + } else { RDCERR("Unhandled scope type %s", ToStr(dwarf->type).c_str());