From 7ed82c0791ee91a589716e9b33f6e9ec862662d1 Mon Sep 17 00:00:00 2001 From: kd-11 Date: Tue, 22 Sep 2020 00:00:11 +0300 Subject: [PATCH] rsx: Always force typeless copy if memory is crossing aspect boundary --- rpcs3/Emu/RSX/Common/texture_cache.h | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/rpcs3/Emu/RSX/Common/texture_cache.h b/rpcs3/Emu/RSX/Common/texture_cache.h index bcf7c9fdb3..d7ac7d7ca4 100644 --- a/rpcs3/Emu/RSX/Common/texture_cache.h +++ b/rpcs3/Emu/RSX/Common/texture_cache.h @@ -2807,15 +2807,20 @@ namespace rsx if (helpers::is_gcm_depth_format(typeless_info.src_gcm_format) != helpers::is_gcm_depth_format(typeless_info.dst_gcm_format)) { - if (!typeless_info.src_is_typeless && !typeless_info.dst_is_typeless) + // Make the depth side typeless because the other side is guaranteed to be color + if (helpers::is_gcm_depth_format(typeless_info.src_gcm_format)) { - // Make the depth side typeless - if (helpers::is_gcm_depth_format(typeless_info.src_gcm_format)) + // SRC is depth, transfer must be done typelessly + if (!typeless_info.src_is_typeless) { typeless_info.src_is_typeless = true; typeless_info.src_gcm_format = helpers::get_sized_blit_format(src_is_argb8, false, false); } - else + } + else + { + // DST is depth, transfer must be done typelessly + if (!typeless_info.dst_is_typeless) { typeless_info.dst_is_typeless = true; typeless_info.dst_gcm_format = helpers::get_sized_blit_format(dst_is_argb8, false, false);