From f2f95a20a392c85a35518965520b3966c9b2d212 Mon Sep 17 00:00:00 2001 From: kd-11 Date: Thu, 1 Jun 2023 02:52:26 +0300 Subject: [PATCH] vk: Minor improvement to descriptor and garbage collector interaction --- rpcs3/Emu/RSX/VK/VKGSRender.cpp | 10 ++++++---- rpcs3/Emu/RSX/VK/VKResourceManager.h | 5 +++++ 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/rpcs3/Emu/RSX/VK/VKGSRender.cpp b/rpcs3/Emu/RSX/VK/VKGSRender.cpp index a008806947..e9a31a24e7 100644 --- a/rpcs3/Emu/RSX/VK/VKGSRender.cpp +++ b/rpcs3/Emu/RSX/VK/VKGSRender.cpp @@ -876,6 +876,9 @@ VKGSRender::~VKGSRender() g_fxo->get().destroy(); } + // GC cleanup + vk::get_resource_manager()->flush(); + // Host data if (m_host_object_data) { @@ -945,7 +948,9 @@ VKGSRender::~VKGSRender() // Overlay text handler m_text_writer.reset(); - //Pipeline descriptors + // Pipeline descriptors + m_descriptor_pool.destroy(); + vkDestroyPipelineLayout(*m_device, m_pipeline_layout, nullptr); vkDestroyDescriptorSetLayout(*m_device, m_descriptor_layouts, nullptr); @@ -963,9 +968,6 @@ VKGSRender::~VKGSRender() // Global resources vk::destroy_global_resources(); - // Destroy at the end in case of lingering callbacks - m_descriptor_pool.destroy(); - // Device handles/contexts m_swapchain->destroy(); m_instance.destroy(); diff --git a/rpcs3/Emu/RSX/VK/VKResourceManager.h b/rpcs3/Emu/RSX/VK/VKResourceManager.h index 4bc914250e..1bb2057566 100644 --- a/rpcs3/Emu/RSX/VK/VKResourceManager.h +++ b/rpcs3/Emu/RSX/VK/VKResourceManager.h @@ -75,6 +75,11 @@ namespace vk ~resource_manager() = default; void destroy() + { + flush(); + } + + void flush() { m_eid_map.clear(); m_sampler_pool.clear();