- delay destruction of VkHardwareTexture resources until current frame has finished rendering

This commit is contained in:
Magnus Norddahl 2019-03-17 20:36:08 +01:00
commit 29a30037cb
4 changed files with 34 additions and 4 deletions

View file

@ -99,6 +99,8 @@ VulkanFrameBuffer::~VulkanFrameBuffer()
delete mViewpoints;
delete mLights;
mShadowMap.Reset();
DeleteFrameObjects();
}
void VulkanFrameBuffer::InitializeState()
@ -205,13 +207,21 @@ void VulkanFrameBuffer::Update()
mDrawCommands.reset();
mUploadCommands.reset();
mFrameDeleteList.clear();
DeleteFrameObjects();
Finish.Unclock();
Super::Update();
}
void VulkanFrameBuffer::DeleteFrameObjects()
{
FrameDeleteList.Images.clear();
FrameDeleteList.ImageViews.clear();
FrameDeleteList.Buffers.clear();
FrameDeleteList.Descriptors.clear();
}
void VulkanFrameBuffer::SubmitCommands(bool finish)
{
mDrawCommands->end();
@ -270,7 +280,7 @@ void VulkanFrameBuffer::SubmitCommands(bool finish)
vkResetFences(device->device, 1, &mRenderFinishedFence->fence);
mDrawCommands.reset();
mUploadCommands.reset();
mFrameDeleteList.clear();
DeleteFrameObjects();
}
}