From 705693ecf8ca00f22f6f4fbbdaa84eb357be6eb7 Mon Sep 17 00:00:00 2001 From: kd-11 Date: Tue, 17 Aug 2021 22:58:33 +0300 Subject: [PATCH] rsx: Fixup image-in data length calculations --- rpcs3/Emu/RSX/rsx_methods.cpp | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/rpcs3/Emu/RSX/rsx_methods.cpp b/rpcs3/Emu/RSX/rsx_methods.cpp index c986628a1e..5f15152f39 100644 --- a/rpcs3/Emu/RSX/rsx_methods.cpp +++ b/rpcs3/Emu/RSX/rsx_methods.cpp @@ -1206,9 +1206,8 @@ namespace rsx const u32 nb_lines = std::min(clip_h, in_h); const u32 data_length = nb_lines * src_line_length; - src_address = get_address(src_offset, src_dma, data_length); - - if (!src_address || !dst_address) + if (src_address = get_address(src_offset, src_dma, data_length); + !src_address || !dst_address) { rsx->recover_fifo(); return; @@ -1228,11 +1227,11 @@ namespace rsx } else { - const u32 data_length = in_pitch * (in_h - 1) + src_line_length; + const u16 read_h = std::min(static_cast(clip_h / scale_y), in_h); + const u32 data_length = in_pitch * (read_h - 1) + src_line_length; - src_address = get_address(src_offset, src_dma, data_length); - - if (!src_address || !dst_address) + if (src_address = get_address(src_offset, src_dma, data_length); + !src_address || !dst_address) { rsx->recover_fifo(); return;