From ac6b4912870ab381619bf0ffa8cdc12766adf54d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Rydg=C3=A5rd?= Date: Sun, 3 Dec 2017 11:10:40 +0100 Subject: [PATCH] Fix memory-scan bug in VulkanDeviceAllocator that probably causes some fragmentation. --- Common/Vulkan/VulkanMemory.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Common/Vulkan/VulkanMemory.cpp b/Common/Vulkan/VulkanMemory.cpp index be56e9b51a..5539f45286 100644 --- a/Common/Vulkan/VulkanMemory.cpp +++ b/Common/Vulkan/VulkanMemory.cpp @@ -246,15 +246,16 @@ bool VulkanDeviceAllocator::AllocateFromSlab(Slab &slab, size_t &start, size_t b return false; } + // Slow linear scan. for (size_t i = 0; i < blocks; ++i) { if (slab.usage[start + i]) { // If we just ran into one, there's probably an allocation size. auto it = slab.allocSizes.find(start + i); if (it != slab.allocSizes.end()) { - start += i + it->second; + start += it->second; } else { // We don't know how big it is, so just skip to the next one. - start += i + 1; + start += 1; } return false; }