From bae2f44bf1054ded6189dcd06cb98abb9edd2521 Mon Sep 17 00:00:00 2001 From: baldurk Date: Mon, 4 Oct 2021 18:40:06 +0100 Subject: [PATCH] Support bool parameters in vulkan debug printf --- renderdoc/driver/vulkan/vk_shader_feedback.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/renderdoc/driver/vulkan/vk_shader_feedback.cpp b/renderdoc/driver/vulkan/vk_shader_feedback.cpp index 2135e2924..68b9f3673 100644 --- a/renderdoc/driver/vulkan/vk_shader_feedback.cpp +++ b/renderdoc/driver/vulkan/vk_shader_feedback.cpp @@ -265,6 +265,9 @@ void AnnotateShader(const ShaderReflection &refl, const SPIRVPatchData &patchDat rdcspv::Id maxPrintfWordOffset = editor.AddConstantImmediate(Vulkan_Debug_PrintfBufferSize() / sizeof(uint32_t)); + rdcspv::Id falsePrintfValue = editor.AddConstantImmediate(0U); + rdcspv::Id truePrintfValue = editor.AddConstantImmediate(1U); + rdcspv::Id uint32Type = editor.DeclareType(rdcspv::scalar()); rdcspv::Id int32Type = editor.DeclareType(rdcspv::scalar()); rdcspv::Id f32Type = editor.DeclareType(rdcspv::scalar()); @@ -930,7 +933,7 @@ void AnnotateShader(const ShaderReflection &refl, const SPIRVPatchData &patchDat it++; } - // handle ints and floats + // handle ints, floats, and bools if(typeIt.opcode() == rdcspv::Op::TypeInt) { rdcspv::OpTypeInt intType(typeIt); @@ -988,6 +991,13 @@ void AnnotateShader(const ShaderReflection &refl, const SPIRVPatchData &patchDat packetWords.push_back(param); } } + else if(typeIt.opcode() == rdcspv::Op::TypeBool) + { + packetWords.push_back( + editor.AddOperation(it, rdcspv::OpSelect(uint32Type, editor.MakeId(), input, + truePrintfValue, falsePrintfValue))); + it++; + } else if(typeIt.opcode() == rdcspv::Op::TypeFloat) { rdcspv::OpTypeFloat floatType(typeIt);