Optimize render targets freeing on the start of the game

This commit is contained in:
Wojtek Figat
2024-01-28 23:11:24 +01:00
parent 10bed94357
commit 1b33a2aa0d
3 changed files with 16 additions and 22 deletions

View File

@@ -356,14 +356,12 @@ DeferredDeletionQueueVulkan::~DeferredDeletionQueueVulkan()
void DeferredDeletionQueueVulkan::ReleaseResources(bool deleteImmediately)
{
ScopeLock lock(_locker);
const uint64 checkFrame = Engine::FrameCount - VULKAN_RESOURCE_DELETE_SAFE_FRAMES_COUNT;
ScopeLock lock(_locker);
for (int32 i = 0; i < _entries.Count(); i++)
{
Entry* e = &_entries[i];
if (deleteImmediately || (checkFrame > e->FrameNumber && (e->CmdBuffer == nullptr || e->FenceCounter < e->CmdBuffer->GetFenceSignaledCounter()))
)
Entry* e = &_entries.Get()[i];
if (deleteImmediately || (checkFrame > e->FrameNumber && (e->CmdBuffer == nullptr || e->FenceCounter < e->CmdBuffer->GetFenceSignaledCounter())))
{
if (e->AllocationHandle == VK_NULL_HANDLE)
{
@@ -402,14 +400,15 @@ void DeferredDeletionQueueVulkan::ReleaseResources(bool deleteImmediately)
{
vmaDestroyBuffer(_device->Allocator, (VkBuffer)e->Handle, e->AllocationHandle);
}
#if !BUILD_RELEASE
else
{
CRASH;
}
#endif
}
_entries.RemoveAt(i--);
if (_entries.IsEmpty())
break;
}
@@ -418,19 +417,17 @@ void DeferredDeletionQueueVulkan::ReleaseResources(bool deleteImmediately)
void DeferredDeletionQueueVulkan::EnqueueGenericResource(Type type, uint64 handle, VmaAllocation allocation)
{
ASSERT(handle != 0);
const auto queue = _device->GraphicsQueue;
ASSERT_LOW_LAYER(handle != 0);
Entry entry;
queue->GetLastSubmittedInfo(entry.CmdBuffer, entry.FenceCounter);
_device->GraphicsQueue->GetLastSubmittedInfo(entry.CmdBuffer, entry.FenceCounter);
entry.Handle = handle;
entry.AllocationHandle = allocation;
entry.StructureType = type;
entry.FrameNumber = Engine::FrameCount;
ScopeLock lock(_locker);
#if BUILD_DEBUG
#if BUILD_DEBUG && 0
const Function<bool(const Entry&)> ContainsHandle = [handle](const Entry& e)
{
return e.Handle == handle;