From 5911749596f4b594693f810bc68fceffd968861a Mon Sep 17 00:00:00 2001 From: baldurk Date: Thu, 1 Oct 2015 13:10:32 +0200 Subject: [PATCH] Update local descriptor set tracking when replaying vkUpdateDescSets --- .../vulkan/wrappers/vk_descriptor_funcs.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/renderdoc/driver/vulkan/wrappers/vk_descriptor_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_descriptor_funcs.cpp index 96c08b844..070358531 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_descriptor_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_descriptor_funcs.cpp @@ -398,11 +398,29 @@ bool WrappedVulkan::Serialise_vkUpdateDescriptorSets( } if(valid) + { ObjDisp(device)->UpdateDescriptorSets(Unwrap(device), 1, &writeDesc, 0, NULL); + + // update our local tracking + vector &bindings = m_DescriptorSetInfo[GetResourceManager()->GetOriginalID(GetResourceManager()->GetNonDispWrapper(writeDesc.destSet)->id)].currentBindings; + + { + RDCASSERT(writeDesc.destBinding < bindings.size()); + RDCASSERT(writeDesc.destArrayElement == 0); + + VkDescriptorInfo *bind = bindings[writeDesc.destBinding]; + + for(uint32_t d=0; d < writeDesc.count; d++) + bind[d] = writeDesc.pDescriptors[d]; + } + } } else { ObjDisp(device)->UpdateDescriptorSets(Unwrap(device), 0, NULL, 1, ©Desc); + + // don't want to implement this blindly + RDCUNIMPLEMENTED("Copying descriptors not implemented"); } }