From aec2f8db79c8bcd9528633a7a69d0db50b67f58a Mon Sep 17 00:00:00 2001 From: baldurk Date: Fri, 7 May 2021 16:04:56 +0100 Subject: [PATCH] Store whether or not a shader uses debug printf * Shaders that use printf will go through the feedback path, even though they may not use arrayed descriptors. --- renderdoc/driver/shaders/spirv/spirv_reflect.cpp | 4 ++++ renderdoc/driver/shaders/spirv/spirv_reflect.h | 2 ++ 2 files changed, 6 insertions(+) diff --git a/renderdoc/driver/shaders/spirv/spirv_reflect.cpp b/renderdoc/driver/shaders/spirv/spirv_reflect.cpp index f236bdc81..152a9031d 100644 --- a/renderdoc/driver/shaders/spirv/spirv_reflect.cpp +++ b/renderdoc/driver/shaders/spirv/spirv_reflect.cpp @@ -1186,6 +1186,10 @@ void Reflector::MakeReflection(const GraphicsAPI sourceAPI, const ShaderStage st patchData.outTopo = e.executionModes.outTopo; } + for(auto it = extSets.begin(); it != extSets.end(); it++) + if(it->second == "NonSemantic.DebugPrintf") + patchData.usesPrintf = true; + // sort system value semantics to the start of the list struct sig_param_sort { diff --git a/renderdoc/driver/shaders/spirv/spirv_reflect.h b/renderdoc/driver/shaders/spirv/spirv_reflect.h index e0ee49a32..1ea7823b2 100644 --- a/renderdoc/driver/shaders/spirv/spirv_reflect.h +++ b/renderdoc/driver/shaders/spirv/spirv_reflect.h @@ -65,6 +65,8 @@ struct SPIRVPatchData // the output topology for tessellation and geometry shaders Topology outTopo = Topology::Unknown; + + bool usesPrintf = false; }; namespace rdcspv