Fix some issues with resource management
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user