forked from ShuriZma/suyu
1
0
Fork 0

Merge pull request #418 from bunnei/copy-block-height

fermi_2d: Fix surface copy block height.
This commit is contained in:
Sebastian Valle 2018-04-29 09:49:33 -05:00 committed by GitHub
commit faa431b274
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 7 additions and 2 deletions

View File

@ -59,12 +59,12 @@ void Fermi2D::HandleSurfaceCopy() {
// If the input is tiled and the output is linear, deswizzle the input and copy it over. // 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, Texture::CopySwizzledData(regs.src.width, regs.src.height, src_bytes_per_pixel,
dst_bytes_per_pixel, src_buffer, dst_buffer, true, dst_bytes_per_pixel, src_buffer, dst_buffer, true,
regs.src.block_height); regs.src.BlockHeight());
} else { } else {
// If the input is linear and the output is tiled, swizzle the input and copy it over. // 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, Texture::CopySwizzledData(regs.src.width, regs.src.height, src_bytes_per_pixel,
dst_bytes_per_pixel, dst_buffer, src_buffer, false, dst_bytes_per_pixel, dst_buffer, src_buffer, false,
regs.dst.block_height); regs.dst.BlockHeight());
} }
} }

View File

@ -49,6 +49,11 @@ public:
return static_cast<GPUVAddr>((static_cast<GPUVAddr>(address_high) << 32) | return static_cast<GPUVAddr>((static_cast<GPUVAddr>(address_high) << 32) |
address_low); 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"); static_assert(sizeof(Surface) == 0x28, "Surface has incorrect size");