diff --git a/renderdoc/driver/vulkan/vk_resources.h b/renderdoc/driver/vulkan/vk_resources.h index 5dbdab073..3ad3a3e5f 100644 --- a/renderdoc/driver/vulkan/vk_resources.h +++ b/renderdoc/driver/vulkan/vk_resources.h @@ -1761,6 +1761,13 @@ struct ImageBarrierSequence if(maxQueueFamilyIndex > MaxQueueFamilyIndex) MaxQueueFamilyIndex = maxQueueFamilyIndex; } + + void ResizeForMaxQueueFamilyIndex(uint32_t maxQueueFamilyIndex) + { + for(uint32_t i = 0; i < MAX_BATCH_COUNT; i++) + batches[i].resize_for_index(maxQueueFamilyIndex); + } + ImageBarrierSequence() { for(uint32_t i = 0; i < MAX_BATCH_COUNT; i++) diff --git a/renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp index 6cd160916..89752c239 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp @@ -4061,6 +4061,11 @@ bool WrappedVulkan::Serialise_vkCreateDevice(SerialiserType &ser, VkPhysicalDevi uint32_t qidx = createInfo.pQueueCreateInfos[i].queueFamilyIndex; m_ExternalQueues.resize(RDCMAX((uint32_t)m_ExternalQueues.size(), qidx + 1)); + // Resize also the image barriers, as ImageBarrierSequence::SetMaxQueueFamilyIndex + // just sets the static MaxQueueFamilyIndex + m_setupImageBarriers.ResizeForMaxQueueFamilyIndex(qidx); + m_cleanupImageBarriers.ResizeForMaxQueueFamilyIndex(qidx); + ImageBarrierSequence::SetMaxQueueFamilyIndex(qidx); VkCommandPoolCreateInfo poolInfo = { @@ -4548,6 +4553,11 @@ VkResult WrappedVulkan::vkCreateDevice(VkPhysicalDevice physicalDevice, uint32_t qidx = createInfo.pQueueCreateInfos[i].queueFamilyIndex; m_ExternalQueues.resize(RDCMAX((uint32_t)m_ExternalQueues.size(), qidx + 1)); + // Resize also the image barriers, as ImageBarrierSequence::SetMaxQueueFamilyIndex + // just sets the static MaxQueueFamilyIndex + m_setupImageBarriers.ResizeForMaxQueueFamilyIndex(qidx); + m_cleanupImageBarriers.ResizeForMaxQueueFamilyIndex(qidx); + ImageBarrierSequence::SetMaxQueueFamilyIndex(qidx); VkCommandPoolCreateInfo poolInfo = {