diff --git a/rpcs3/Emu/RSX/Common/texture_cache.h b/rpcs3/Emu/RSX/Common/texture_cache.h index 664eb65d1a..7c92dffc8d 100644 --- a/rpcs3/Emu/RSX/Common/texture_cache.h +++ b/rpcs3/Emu/RSX/Common/texture_cache.h @@ -3264,7 +3264,13 @@ namespace rsx else { // Unlikely situation, but the only one which would allow re-upload from CPU to overlap this section. - ensure(!found->is_flushable()); + if (found->is_flushable()) + { + // Technically this is possible in games that may change surface pitch at random (insomniac engine) + // FIXME: A proper fix includes pitch conversion and surface inheritance chains between surface targets and blit targets (unified cache) which is a very long-term thing. + const auto range = found->get_section_range(); + rsx_log.error("[Pitch Mismatch] GPU-resident data at 0x%x->0x%x is discarded due to surface cache data clobbering it.", range.start, range.end); + } found->discard(true); } }