Browse Source
Merge pull request #418 from bunnei/copy-block-height
fermi_2d: Fix surface copy block height.
pull/15/merge
Sebastian Valle
8 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with
7 additions and
2 deletions
-
src/video_core/engines/fermi_2d.cpp
-
src/video_core/engines/fermi_2d.h
|
|
|
@ -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()); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@ -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"); |
|
|
|
|
|
|
|
|