From f87ea8fa8b5c28f0af2fe1e7ccffa52c43d5a099 Mon Sep 17 00:00:00 2001 From: bunnei Date: Sat, 28 Apr 2018 20:40:03 -0400 Subject: fermi_2d: Fix surface copy block height. --- src/video_core/engines/fermi_2d.cpp | 4 ++-- src/video_core/engines/fermi_2d.h | 5 +++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/video_core/engines/fermi_2d.cpp b/src/video_core/engines/fermi_2d.cpp index 9019f2504..6b9382f06 100644 --- a/src/video_core/engines/fermi_2d.cpp +++ b/src/video_core/engines/fermi_2d.cpp @@ -59,12 +59,12 @@ void Fermi2D::HandleSurfaceCopy() { // If the input is tiled and the output is linear, deswizzle the input and copy it over. Texture::CopySwizzledData(regs.src.width, regs.src.height, src_bytes_per_pixel, dst_bytes_per_pixel, src_buffer, dst_buffer, true, - regs.src.block_height); + regs.src.BlockHeight()); } else { // If the input is linear and the output is tiled, swizzle the input and copy it over. Texture::CopySwizzledData(regs.src.width, regs.src.height, src_bytes_per_pixel, dst_bytes_per_pixel, dst_buffer, src_buffer, false, - regs.dst.block_height); + regs.dst.BlockHeight()); } } diff --git a/src/video_core/engines/fermi_2d.h b/src/video_core/engines/fermi_2d.h index 0c5b413cc..70667cb94 100644 --- a/src/video_core/engines/fermi_2d.h +++ b/src/video_core/engines/fermi_2d.h @@ -49,6 +49,11 @@ public: return static_cast((static_cast(address_high) << 32) | address_low); } + + u32 BlockHeight() const { + // The block height is stored in log2 format. + return 1 << block_height; + } }; static_assert(sizeof(Surface) == 0x28, "Surface has incorrect size"); -- cgit v1.2.3