diff --git a/rpcs3/Emu/RSX/VK/VKRenderTargets.cpp b/rpcs3/Emu/RSX/VK/VKRenderTargets.cpp
index cfcd4fd742..48d693f7a0 100644
--- a/rpcs3/Emu/RSX/VK/VKRenderTargets.cpp
+++ b/rpcs3/Emu/RSX/VK/VKRenderTargets.cpp
@@ -190,28 +190,33 @@ namespace vk
 				return false;
 			}
 
-			if (rtt->resolve_surface && memory_pressure >= rsx::problem_severity::moderate)
-			{
-				// We do not need to keep resolve targets around.
-				vk::get_resource_manager()->dispose(rtt->resolve_surface);
-			}
-
 			if (rtt->frame_tag >= last_finished_frame)
 			{
 				// RTT itself still in use by the frame.
 				return false;
 			}
 
+			if (!rtt->old_contents.empty())
+			{
+				rtt->clear_rw_barrier();
+			}
+
+			if (rtt->resolve_surface && memory_pressure >= rsx::problem_severity::moderate)
+			{
+				// We do not need to keep resolve targets around.
+				// TODO: We should surrender this to an image cache immediately for reuse.
+				vk::get_resource_manager()->dispose(rtt->resolve_surface);
+			}
+
 			switch (memory_pressure)
 			{
 			case rsx::problem_severity::low:
 				return (rtt->unused_check_count() >= 2);
 			case rsx::problem_severity::moderate:
-			case rsx::problem_severity::severe:
 				return (rtt->unused_check_count() >= 1);
+			case rsx::problem_severity::severe:
 			case rsx::problem_severity::fatal:
 				// We're almost dead anyway. Remove forcefully.
-				rtt->clear_rw_barrier();
 				vk::get_resource_manager()->dispose(rtt);
 				return true;
 			default: