From 97ea5df00287d73a09276219514166d36adea8a2 Mon Sep 17 00:00:00 2001 From: baldurk Date: Mon, 6 Jul 2020 10:47:00 +0100 Subject: [PATCH] Fix tracking of topologies during load for drawcalls --- renderdoc/driver/vulkan/wrappers/vk_cmd_funcs.cpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/renderdoc/driver/vulkan/wrappers/vk_cmd_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_cmd_funcs.cpp index 206e51d17..1a673462f 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_cmd_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_cmd_funcs.cpp @@ -2463,14 +2463,23 @@ bool WrappedVulkan::Serialise_vkCmdBindPipeline(SerialiserType &ser, VkCommandBu } else { + ResourceId liveid = GetResID(pipeline); + // track while reading, as we need to bind current topology & index byte width in AddDrawcall if(pipelineBindPoint == VK_PIPELINE_BIND_POINT_COMPUTE) { - m_BakedCmdBufferInfo[m_LastCmdBufferID].state.compute.pipeline = GetResID(pipeline); + m_BakedCmdBufferInfo[m_LastCmdBufferID].state.compute.pipeline = liveid; } else { - m_BakedCmdBufferInfo[m_LastCmdBufferID].state.graphics.pipeline = GetResID(pipeline); + m_BakedCmdBufferInfo[m_LastCmdBufferID].state.graphics.pipeline = liveid; + + const VulkanCreationInfo::Pipeline &pipeInfo = m_CreationInfo.m_Pipeline[liveid]; + + if(!pipeInfo.dynamicStates[VkDynamicPrimitiveTopologyEXT]) + { + m_BakedCmdBufferInfo[m_LastCmdBufferID].state.primitiveTopology = pipeInfo.topology; + } } }