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

@@ -130,9 +130,9 @@ namespace openVulkanoCpp::Vulkan
if (size == VK_WHOLE_SIZE) size = this->size; if (size == VK_WHOLE_SIZE) size = this->size;
mapped = allocation->MapChild(this->offset + offset, size); mapped = allocation->MapChild(this->offset + offset, size);
} }
return static_cast<T*>(mapped);
} }
return static_cast<T*>(mapped);
} }
/** /**

View File

@@ -147,6 +147,18 @@ namespace openVulkanoCpp::Vulkan
ManagedBuffer* ResourceManager::CreateSharedMemoryBuffer(const size_t size) ManagedBuffer* ResourceManager::CreateSharedMemoryBuffer(const size_t size)
{ {
const std::unique_lock lock(mutex); 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); ManagedBuffer* buffer = CreateBuffer(size, vk::BufferUsageFlagBits::eVertexBuffer, vk::MemoryPropertyFlagBits::eHostCoherent);
return buffer; return buffer;
} }
@@ -158,7 +170,8 @@ namespace openVulkanoCpp::Vulkan
void ResourceManager::FreeBuffer(ManagedBuffer* buffer) void ResourceManager::FreeBuffer(ManagedBuffer* buffer)
{ {
toFree[currentBuffer].push_back(buffer); if (buffer)
toFree[currentBuffer].push_back(buffer);
} }
void ResourceManager::DoFreeBuffer(ManagedBuffer* buffer) void ResourceManager::DoFreeBuffer(ManagedBuffer* buffer)
@@ -228,7 +241,7 @@ namespace openVulkanoCpp::Vulkan
break; 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; if(alloc) lastAllocation = alloc;
return alloc; return alloc;
} }