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"); } }