diff --git a/rpcs3/Emu/RSX/VK/VKTextureCache.h b/rpcs3/Emu/RSX/VK/VKTextureCache.h index aede466763..ff8457cf96 100644 --- a/rpcs3/Emu/RSX/VK/VKTextureCache.h +++ b/rpcs3/Emu/RSX/VK/VKTextureCache.h @@ -32,6 +32,7 @@ namespace vk std::vector m_cache; std::pair texture_cache_range = std::make_pair(0xFFFFFFFF, 0); std::vector > m_temporary_image_view; + std::vector> m_dirty_textures; bool lock_memory_region(u32 start, u32 size) { @@ -99,7 +100,7 @@ namespace vk { if (tex.exists) { - tex.uploaded_texture.reset(); + m_dirty_textures.push_back(std::move(tex.uploaded_texture)); tex.exists = false; } @@ -133,18 +134,6 @@ namespace vk unlock_memory_region(static_cast(obj.protected_rgn_start), static_cast(obj.native_rsx_size)); } - void purge_dirty_textures() - { - for (cached_texture_object &tex : m_cache) - { - if (tex.dirty && tex.exists) - { - tex.uploaded_texture.reset(); - tex.exists = false; - } - } - } - public: texture_cache() {} @@ -293,6 +282,7 @@ namespace vk void flush() { + m_dirty_textures.clear(); m_temporary_image_view.clear(); } };