From 47bbfdd2aaab3efc764c5104586c4a5f39dbed7e Mon Sep 17 00:00:00 2001 From: kd-11 Date: Wed, 11 Mar 2020 12:45:50 +0300 Subject: [PATCH] vk: Change texture cache memory management for disposed textures - Use global resource manager instead of using the 2-frame hold behavior. - Fixes high VRAM usage in some games --- rpcs3/Emu/RSX/VK/VKResourceManager.h | 5 +++++ rpcs3/Emu/RSX/VK/VKTextureCache.h | 3 +-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/rpcs3/Emu/RSX/VK/VKResourceManager.h b/rpcs3/Emu/RSX/VK/VKResourceManager.h index aeb058cab0..e7ebbee85e 100644 --- a/rpcs3/Emu/RSX/VK/VKResourceManager.h +++ b/rpcs3/Emu/RSX/VK/VKResourceManager.h @@ -137,6 +137,11 @@ namespace vk get_current_eid_scope().m_disposed_images.emplace_back(std::move(img)); } + void dispose(std::unique_ptr& img) + { + get_current_eid_scope().m_disposed_images.emplace_back(std::move(img)); + } + void dispose(std::unique_ptr& event) { get_current_eid_scope().m_disposed_events.emplace_back(std::move(event)); diff --git a/rpcs3/Emu/RSX/VK/VKTextureCache.h b/rpcs3/Emu/RSX/VK/VKTextureCache.h index 23771322e0..781edb8d44 100644 --- a/rpcs3/Emu/RSX/VK/VKTextureCache.h +++ b/rpcs3/Emu/RSX/VK/VKTextureCache.h @@ -485,8 +485,7 @@ namespace vk { if (tex.is_managed()) { - m_temporary_memory_size += tex.get_section_size(); - m_temporary_storage.emplace_back(tex); + vk::get_resource_manager()->dispose(tex.get_texture()); } }