diff --git a/renderdoc/driver/vulkan/vk_manager.cpp b/renderdoc/driver/vulkan/vk_manager.cpp index 779f0d613..c23af01b5 100644 --- a/renderdoc/driver/vulkan/vk_manager.cpp +++ b/renderdoc/driver/vulkan/vk_manager.cpp @@ -199,7 +199,7 @@ void VulkanResourceManager::RecordSingleBarrier(vector > &states, - map &layouts, + const map &layouts, uint32_t numBarriers, const VkImageMemoryBarrier *barriers) { TRDBG("Recording %u barriers", numBarriers); @@ -218,10 +218,24 @@ void VulkanResourceManager::RecordBarriers(vectorsecond.levelCount - t.subresourceRange.baseMipLevel; + else + nummips = 1; + } + if(numslices == VK_REMAINING_ARRAY_LAYERS) - numslices = layouts[id].layerCount - t.subresourceRange.baseArrayLayer; + { + if(it != layouts.end()) + numslices = it->second.layerCount - t.subresourceRange.baseArrayLayer; + else + numslices = 1; + } RecordSingleBarrier(states, id, t, nummips, numslices); } diff --git a/renderdoc/driver/vulkan/vk_manager.h b/renderdoc/driver/vulkan/vk_manager.h index 222de2196..ac43ee0c0 100644 --- a/renderdoc/driver/vulkan/vk_manager.h +++ b/renderdoc/driver/vulkan/vk_manager.h @@ -105,7 +105,7 @@ public: const SrcBarrierType &t, uint32_t nummips, uint32_t numslices); void RecordBarriers(vector > &states, - map &layouts, uint32_t numBarriers, + const map &layouts, uint32_t numBarriers, const VkImageMemoryBarrier *barriers); void MergeBarriers(vector > &dststates,