From 1de90bdb1f8e31914c875c5b3b8cb1e9626ee094 Mon Sep 17 00:00:00 2001 From: kd-11 Date: Sat, 20 Jul 2019 19:18:11 +0300 Subject: [PATCH] rsx: Improve aliased data preservation - Carve out inherited region if any - Perform pitch compatibility test before assigning old_surface --- rpcs3/Emu/RSX/Common/surface_store.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/rpcs3/Emu/RSX/Common/surface_store.h b/rpcs3/Emu/RSX/Common/surface_store.h index d3d6a9778b..108acf573a 100644 --- a/rpcs3/Emu/RSX/Common/surface_store.h +++ b/rpcs3/Emu/RSX/Common/surface_store.h @@ -469,7 +469,11 @@ namespace rsx auto aliased_surface = secondary_storage->find(address); if (aliased_surface != secondary_storage->end()) { - old_surface = Traits::get(aliased_surface->second); + if (Traits::surface_is_pitch_compatible(aliased_surface->second, pitch)) + { + old_surface = Traits::get(aliased_surface->second); + split_surface_region(command_list, address, old_surface, (u16)width, (u16)height, bpp, antialias); + } Traits::notify_surface_invalidated(aliased_surface->second); invalidated_resources.push_back(std::move(aliased_surface->second));