From 77d06d61d4a69395a42783f135c5eb572a0645a5 Mon Sep 17 00:00:00 2001 From: baldurk Date: Tue, 5 Dec 2023 11:43:08 +0000 Subject: [PATCH] Use proper component type for storing results of samples. Closes #3152 --- renderdoc/driver/vulkan/vk_shaderdebug.cpp | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/renderdoc/driver/vulkan/vk_shaderdebug.cpp b/renderdoc/driver/vulkan/vk_shaderdebug.cpp index ad520e8d0..580ca06dd 100644 --- a/renderdoc/driver/vulkan/vk_shaderdebug.cpp +++ b/renderdoc/driver/vulkan/vk_shaderdebug.cpp @@ -1385,13 +1385,23 @@ public: m_pDriver->FlushQ(); } - float *ret = (float *)m_DebugData.ReadbackBuffer.Map(NULL, 0); - if(!ret) + float *retf = (float *)m_DebugData.ReadbackBuffer.Map(NULL, 0); + if(!retf) return false; - // convert float results, we did all sampling at 32-bit precision + uint32_t *retu = (uint32_t *)retf; + int32_t *reti = (int32_t *)retf; + + // convert full precision results, we did all sampling at 32-bit precision for(uint8_t c = 0; c < 4; c++) - setFloatComp(output, c, ret[c]); + { + if(VarTypeCompType(output.type) == CompType::Float) + setFloatComp(output, c, retf[c]); + else if(VarTypeCompType(output.type) == CompType::SInt) + setIntComp(output, c, reti[c]); + else + setUintComp(output, c, retu[c]); + } m_DebugData.ReadbackBuffer.Unmap();