From 4d8de282f9e4a325f59f717c127478eac1031d36 Mon Sep 17 00:00:00 2001 From: kd-11 Date: Thu, 23 Jul 2020 22:46:42 +0300 Subject: [PATCH] vk: Improve typeless texture succession - Ensure incoming texture is large enough that the original one fits inside it to avoid back-and-forth succession. - Make use of the resource manager to remove the obsolete textures to avoid holding on to the them which "leaks" VRAM. The memory isn't leaking, it's just wasting space in temporary pool until renderer is closed. --- rpcs3/Emu/RSX/VK/VKHelpers.cpp | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/rpcs3/Emu/RSX/VK/VKHelpers.cpp b/rpcs3/Emu/RSX/VK/VKHelpers.cpp index 4df5470a5b..4870460ff3 100644 --- a/rpcs3/Emu/RSX/VK/VKHelpers.cpp +++ b/rpcs3/Emu/RSX/VK/VKHelpers.cpp @@ -77,9 +77,6 @@ namespace vk // TODO: Clean this up and integrate cleanly with VKGSRender data_heap g_upload_heap; - // Garbage collection - std::vector> g_deleted_typeless_textures; - VkSampler g_null_sampler = nullptr; rsx::atomic_bitmask_t g_runtime_state; @@ -335,8 +332,9 @@ namespace vk { if (ptr) { - // Safely move to deleted pile - g_deleted_typeless_textures.emplace_back(std::move(ptr)); + requested_width = std::max(requested_width, ptr->width()); + requested_height = std::max(requested_height, ptr->height()); + get_resource_manager()->dispose(ptr); } ptr.reset(create_texture()); @@ -417,7 +415,6 @@ namespace vk g_upload_heap.destroy(); g_typeless_textures.clear(); - g_deleted_typeless_textures.clear(); if (g_null_sampler) {