video_core: Use un-shifted block sizes to avoid integer divisions

Instead of storing all block width, height and depths in their shifted
form:

block_width = 1U << block_shift;

Store them like they are provided by the emulated hardware (their
block_shift form). This way we can avoid doing the costly
Common::AlignUp operation to align texture sizes and drop CPU integer
divisions with bitwise logic (defined in Common::AlignBits).
This commit is contained in:
ReinUsesLisp
2019-05-10 04:17:48 -03:00
parent 28d7c2f5a5
commit 345e73f2fe
10 changed files with 78 additions and 60 deletions

View File

@ -63,18 +63,15 @@ public:
}
u32 BlockWidth() const {
// The block width is stored in log2 format.
return 1 << block_width;
return block_width;
}
u32 BlockHeight() const {
// The block height is stored in log2 format.
return 1 << block_height;
return block_height;
}
u32 BlockDepth() const {
// The block depth is stored in log2 format.
return 1 << block_depth;
return block_depth;
}
};
static_assert(sizeof(Surface) == 0x28, "Surface has incorrect size");

View File

@ -59,11 +59,11 @@ public:
};
u32 BlockHeight() const {
return 1 << block_height;
return block_height;
}
u32 BlockDepth() const {
return 1 << block_depth;
return block_depth;
}
};