From e29d48a2a8d05ca7658f913b60f5aa11b0b2052f Mon Sep 17 00:00:00 2001 From: baldurk Date: Wed, 10 Aug 2022 12:21:51 +0100 Subject: [PATCH] Propagate command line arguments from DebugEntryPoint --- renderdoc/driver/shaders/spirv/spirv_reflect.cpp | 13 ++++++++++--- renderdoc/driver/shaders/spirv/spirv_reflect.h | 1 + 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/renderdoc/driver/shaders/spirv/spirv_reflect.cpp b/renderdoc/driver/shaders/spirv/spirv_reflect.cpp index 0310c5ba9..59853c293 100644 --- a/renderdoc/driver/shaders/spirv/spirv_reflect.cpp +++ b/renderdoc/driver/shaders/spirv/spirv_reflect.cpp @@ -597,6 +597,7 @@ void Reflector::RegisterOp(Iter it) else if(dbg.inst == ShaderDbg::EntryPoint) { funcToBaseFile[dbg.arg(0)] = compUnitToFileIndex[dbg.arg(1)]; + funcToCmdLine[dbg.arg(0)] = strings[dbg.arg(3)]; } else if(dbg.inst == ShaderDbg::GlobalVariable) { @@ -831,9 +832,6 @@ void Reflector::MakeReflection(const GraphicsAPI sourceAPI, const ShaderStage st reflection.dispatchThreadsDimension[2] = 0; } - if(!cmdline.empty()) - reflection.debugInfo.compileFlags.flags = {{"@cmdline", cmdline}}; - for(size_t i = 0; i < sources.size(); i++) { switch(sources[i].lang) @@ -866,6 +864,15 @@ void Reflector::MakeReflection(const GraphicsAPI sourceAPI, const ShaderStage st reflection.debugInfo.editBaseFile = (int32_t)it->second; } + if(!cmdline.empty()) + reflection.debugInfo.compileFlags.flags = {{"@cmdline", cmdline}}; + + { + auto it = funcToCmdLine.find(entry->id); + if(it != funcToCmdLine.end()) + reflection.debugInfo.compileFlags.flags = {{"@cmdline", it->second}}; + } + PreprocessLineDirectives(reflection.debugInfo.files); // we do a mini-preprocess of the files from the debug info to handle #line directives. diff --git a/renderdoc/driver/shaders/spirv/spirv_reflect.h b/renderdoc/driver/shaders/spirv/spirv_reflect.h index 9a5e5b3b0..9664277d8 100644 --- a/renderdoc/driver/shaders/spirv/spirv_reflect.h +++ b/renderdoc/driver/shaders/spirv/spirv_reflect.h @@ -131,6 +131,7 @@ private: SparseIdMap debugSources; SparseIdMap compUnitToFileIndex; SparseIdMap funcToBaseFile; + SparseIdMap funcToCmdLine; SparseIdMap debugFuncToLocation; SparseIdMap funcToLocation;