diff options
| author | bunnei <bunneidev@gmail.com> | 2018-04-28 20:40:03 -0400 | 
|---|---|---|
| committer | bunnei <bunneidev@gmail.com> | 2018-04-28 20:40:03 -0400 | 
| commit | f87ea8fa8b5c28f0af2fe1e7ccffa52c43d5a099 (patch) | |
| tree | f087a390c3c99076216bb42065690dc19d01ac41 /src/video_core | |
| parent | 3d9126ba8775398b761ad6246ff4db5f2363149c (diff) | |
fermi_2d: Fix surface copy block height.
Diffstat (limited to 'src/video_core')
| -rw-r--r-- | src/video_core/engines/fermi_2d.cpp | 4 | ||||
| -rw-r--r-- | 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<GPUVAddr>((static_cast<GPUVAddr>(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"); | 
