From 12c1a8efeb22323d4575a42d9fc5772de71b2064 Mon Sep 17 00:00:00 2001 From: baldurk Date: Thu, 13 May 2021 15:00:54 +0100 Subject: [PATCH] Bitcast loaded pre-existing variables to uint for printf location --- renderdoc/driver/vulkan/vk_shader_feedback.cpp | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/renderdoc/driver/vulkan/vk_shader_feedback.cpp b/renderdoc/driver/vulkan/vk_shader_feedback.cpp index 00fdf1ec4..f164416c5 100644 --- a/renderdoc/driver/vulkan/vk_shader_feedback.cpp +++ b/renderdoc/driver/vulkan/vk_shader_feedback.cpp @@ -510,10 +510,20 @@ void AnnotateShader(const ShaderReflection &refl, const SPIRVPatchData &patchDat { if(refl.inputSignature[i].systemValue == builtin) { + rdcspv::Id loadType = varType; + if(refl.inputSignature[i].varType == VarType::SInt) + { + if(refl.inputSignature[i].compCount == 1) + loadType = editor.DeclareType(rdcspv::scalar()); + else + loadType = editor.DeclareType( + rdcspv::Vector(rdcspv::scalar(), refl.inputSignature[i].compCount)); + } + if(patchData.inputs[i].accessChain.empty()) { ret = - locationGather.add(rdcspv::OpLoad(varType, editor.MakeId(), patchData.inputs[i].ID)); + locationGather.add(rdcspv::OpLoad(loadType, editor.MakeId(), patchData.inputs[i].ID)); } else { @@ -532,8 +542,11 @@ void AnnotateShader(const ShaderReflection &refl, const SPIRVPatchData &patchDat rdcspv::OpAccessChain(ptrType, editor.MakeId(), patchData.inputs[i].ID, chain)); ret = - locationGather.add(rdcspv::OpLoad(varType, editor.MakeId(), patchData.inputs[i].ID)); + locationGather.add(rdcspv::OpLoad(loadType, editor.MakeId(), patchData.inputs[i].ID)); } + + if(loadType != varType) + ret = locationGather.add(rdcspv::OpBitcast(varType, editor.MakeId(), ret)); } }