aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/textures
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2018-10-10 21:24:07 -0400
committerGitHub <noreply@github.com>2018-10-10 21:24:07 -0400
commit6d82c4adf92f743eadf0749bf01646baaabfa735 (patch)
tree5a5a9aa040e600202bee1c99c74a6bfc57e1b52a /src/video_core/textures
parent03ec936ca007364e2c287f78dbbe8c5551dc2234 (diff)
parent5f4ee6f0c8c7b2532bc5be841fcee4670495d7f7 (diff)
Merge pull request #1458 from FernandoS27/fix-render-target-block-settings
Fixed block height settings for RenderTargets and Depth Buffers
Diffstat (limited to 'src/video_core/textures')
-rw-r--r--src/video_core/textures/texture.h17
1 files changed, 15 insertions, 2 deletions
diff --git a/src/video_core/textures/texture.h b/src/video_core/textures/texture.h
index 8f31d825a..58d17abcb 100644
--- a/src/video_core/textures/texture.h
+++ b/src/video_core/textures/texture.h
@@ -161,7 +161,9 @@ struct TICEntry {
BitField<21, 3, TICHeaderVersion> header_version;
};
union {
+ BitField<0, 3, u32> block_width;
BitField<3, 3, u32> block_height;
+ BitField<6, 3, u32> block_depth;
// High 16 bits of the pitch value
BitField<0, 16, u32> pitch_high;
@@ -202,13 +204,24 @@ struct TICEntry {
return depth_minus_1 + 1;
}
+ u32 BlockWidth() const {
+ ASSERT(IsTiled());
+ // The block height is stored in log2 format.
+ return 1 << block_width;
+ }
+
u32 BlockHeight() const {
- ASSERT(header_version == TICHeaderVersion::BlockLinear ||
- header_version == TICHeaderVersion::BlockLinearColorKey);
+ ASSERT(IsTiled());
// The block height is stored in log2 format.
return 1 << block_height;
}
+ u32 BlockDepth() const {
+ ASSERT(IsTiled());
+ // The block height is stored in log2 format.
+ return 1 << block_depth;
+ }
+
bool IsTiled() const {
return header_version == TICHeaderVersion::BlockLinear ||
header_version == TICHeaderVersion::BlockLinearColorKey;