diff options
author | Fernando Sahmkow <fsahmkow27@gmail.com> | 2019-06-12 22:20:20 +0200 |
---|---|---|
committer | ReinUsesLisp <reinuseslisp@airmail.cc> | 2019-06-21 02:38:34 +0200 |
commit | cb728797b0cec79d756ba9395d24924882222103 (patch) | |
tree | 80d3a1fced04f9b86402e0b86ab66047e6c44d4f | |
parent | texture_cache: correct texture buffer on surface params (diff) | |
download | yuzu-cb728797b0cec79d756ba9395d24924882222103.tar yuzu-cb728797b0cec79d756ba9395d24924882222103.tar.gz yuzu-cb728797b0cec79d756ba9395d24924882222103.tar.bz2 yuzu-cb728797b0cec79d756ba9395d24924882222103.tar.lz yuzu-cb728797b0cec79d756ba9395d24924882222103.tar.xz yuzu-cb728797b0cec79d756ba9395d24924882222103.tar.zst yuzu-cb728797b0cec79d756ba9395d24924882222103.zip |
-rw-r--r-- | src/video_core/engines/fermi_2d.cpp | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/src/video_core/engines/fermi_2d.cpp b/src/video_core/engines/fermi_2d.cpp index d63b82838..0ee228e28 100644 --- a/src/video_core/engines/fermi_2d.cpp +++ b/src/video_core/engines/fermi_2d.cpp @@ -38,11 +38,16 @@ void Fermi2D::HandleSurfaceCopy() { const u32 src_blit_x1{static_cast<u32>(regs.blit_src_x >> 32)}; const u32 src_blit_y1{static_cast<u32>(regs.blit_src_y >> 32)}; - const u32 src_blit_x2{ - static_cast<u32>((regs.blit_src_x + (regs.blit_dst_width * regs.blit_du_dx)) >> 32)}; - const u32 src_blit_y2{ - static_cast<u32>((regs.blit_src_y + (regs.blit_dst_height * regs.blit_dv_dy)) >> 32)}; - + u32 src_blit_x2, src_blit_y2; + if (regs.blit_control.origin == Origin::Corner) { + src_blit_x2 = + static_cast<u32>((regs.blit_src_x + (regs.blit_du_dx * regs.blit_dst_width)) >> 32); + src_blit_y2 = + static_cast<u32>((regs.blit_src_y + (regs.blit_dv_dy * regs.blit_dst_height)) >> 32); + } else { + src_blit_x2 = static_cast<u32>((regs.blit_src_x >> 32) + regs.blit_dst_width); + src_blit_y2 = static_cast<u32>((regs.blit_src_y >> 32) + regs.blit_dst_height); + } const Common::Rectangle<u32> src_rect{src_blit_x1, src_blit_y1, src_blit_x2, src_blit_y2}; const Common::Rectangle<u32> dst_rect{regs.blit_dst_x, regs.blit_dst_y, regs.blit_dst_x + regs.blit_dst_width, |