diff --git a/rpcs3/Emu/RSX/rsx_methods.cpp b/rpcs3/Emu/RSX/rsx_methods.cpp index 29a8fc0952..fb4dcaa238 100644 --- a/rpcs3/Emu/RSX/rsx_methods.cpp +++ b/rpcs3/Emu/RSX/rsx_methods.cpp @@ -1143,6 +1143,16 @@ namespace rsx const u32 src_address = get_address(src_offset, src_dma); const u32 dst_address = get_address(dst_offset, dst_dma); + if (src_address == dst_address && + in_w == clip_w && in_h == clip_h && + in_pitch == out_pitch && + rsx::fcmp(scale_x, 1.f) && rsx::fcmp(scale_y, 1.f)) + { + // NULL operation + rsx_log.warning("NV3089_IMAGE_IN: Operation writes memory onto itself with no modification (move-to-self). Will ignore."); + return; + } + const u32 src_line_length = (in_w * in_bpp); if (is_block_transfer && (clip_h == 1 || (in_pitch == out_pitch && src_line_length == in_pitch)))