Fix some issues with resource management

This commit is contained in:
2021-02-20 20:29:11 +01:00
parent 556d5d8e2b
commit 5dd56847d8
2 changed files with 17 additions and 4 deletions

View File

@@ -147,6 +147,18 @@ namespace openVulkanoCpp::Vulkan
ManagedBuffer* ResourceManager::CreateSharedMemoryBuffer(const size_t size)
{
const std::unique_lock lock(mutex);
if (!recycleBuffers.empty())
{
for(auto buff : recycleBuffers)
{
if (buff->size == size)
{
Logger::DATA->info("Recycle Buffer");
Utils::Remove(recycleBuffers, buff);
return buff;
}
}
}
ManagedBuffer* buffer = CreateBuffer(size, vk::BufferUsageFlagBits::eVertexBuffer, vk::MemoryPropertyFlagBits::eHostCoherent);
return buffer;
}
@@ -158,7 +170,8 @@ namespace openVulkanoCpp::Vulkan
void ResourceManager::FreeBuffer(ManagedBuffer* buffer)
{
toFree[currentBuffer].push_back(buffer);
if (buffer)
toFree[currentBuffer].push_back(buffer);
}
void ResourceManager::DoFreeBuffer(ManagedBuffer* buffer)
@@ -228,7 +241,7 @@ namespace openVulkanoCpp::Vulkan
break;
}
}
if(!alloc && createIfAllFull) alloc = CreateMemoryAllocation(256 * 1024 * 1024, type, true);
if(!alloc && createIfAllFull) alloc = CreateMemoryAllocation(64 * 1024 * 1024, type, true);
if(alloc) lastAllocation = alloc;
return alloc;
}