3
0
Fork 0
forked from suyu/suyu

Merge pull request #680 from bunnei/fix-swizz

decoders: Fix calc of swizzle image_width_in_gobs.
This commit is contained in:
bunnei 2018-07-18 18:55:37 -07:00 committed by GitHub
commit 89f0acfd36
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -2,6 +2,7 @@
// Licensed under GPLv2 or any later version // Licensed under GPLv2 or any later version
// Refer to the license.txt file included. // Refer to the license.txt file included.
#include <cmath>
#include <cstring> #include <cstring>
#include "common/assert.h" #include "common/assert.h"
#include "core/memory.h" #include "core/memory.h"
@ -17,7 +18,9 @@ namespace Texture {
* Taken from the Tegra X1 TRM. * Taken from the Tegra X1 TRM.
*/ */
static u32 GetSwizzleOffset(u32 x, u32 y, u32 image_width, u32 bytes_per_pixel, u32 block_height) { static u32 GetSwizzleOffset(u32 x, u32 y, u32 image_width, u32 bytes_per_pixel, u32 block_height) {
u32 image_width_in_gobs = image_width * bytes_per_pixel / 64; // Round up to the next gob
const u32 image_width_in_gobs{(image_width * bytes_per_pixel + 63) / 64};
u32 GOB_address = 0 + (y / (8 * block_height)) * 512 * block_height * image_width_in_gobs + u32 GOB_address = 0 + (y / (8 * block_height)) * 512 * block_height * image_width_in_gobs +
(x * bytes_per_pixel / 64) * 512 * block_height + (x * bytes_per_pixel / 64) * 512 * block_height +
(y % (8 * block_height) / 8) * 512; (y % (8 * block_height) / 8) * 512;