summaryrefslogtreecommitdiffstats
path: root/src/video_core
diff options
context:
space:
mode:
authorwwylele <wwylele@gmail.com>2017-05-20 22:14:22 +0200
committerwwylele <wwylele@gmail.com>2017-05-29 21:03:08 +0200
commit077cc683e5ee52b3d8fca7e1ea8a914c2bdb74e5 (patch)
tree795279c9504705006e3b5c6348eb573d8f92a675 /src/video_core
parentMerge pull request #2725 from wwylele/texture-sampler (diff)
downloadyuzu-077cc683e5ee52b3d8fca7e1ea8a914c2bdb74e5.tar
yuzu-077cc683e5ee52b3d8fca7e1ea8a914c2bdb74e5.tar.gz
yuzu-077cc683e5ee52b3d8fca7e1ea8a914c2bdb74e5.tar.bz2
yuzu-077cc683e5ee52b3d8fca7e1ea8a914c2bdb74e5.tar.lz
yuzu-077cc683e5ee52b3d8fca7e1ea8a914c2bdb74e5.tar.xz
yuzu-077cc683e5ee52b3d8fca7e1ea8a914c2bdb74e5.tar.zst
yuzu-077cc683e5ee52b3d8fca7e1ea8a914c2bdb74e5.zip
Diffstat (limited to 'src/video_core')
-rw-r--r--src/video_core/regs_texturing.h27
1 files changed, 26 insertions, 1 deletions
diff --git a/src/video_core/regs_texturing.h b/src/video_core/regs_texturing.h
index e4038b41b..3f5355fa9 100644
--- a/src/video_core/regs_texturing.h
+++ b/src/video_core/regs_texturing.h
@@ -133,7 +133,32 @@ struct TexturingRegs {
BitField<16, 1, u32> clear_texture_cache; // TODO: unimplemented
} main_config;
TextureConfig texture0;
- INSERT_PADDING_WORDS(0x8);
+
+ enum class CubeFace {
+ PositiveX = 0,
+ NegativeX = 1,
+ PositiveY = 2,
+ NegativeY = 3,
+ PositiveZ = 4,
+ NegativeZ = 5,
+ };
+
+ BitField<0, 22, u32> cube_address[5];
+
+ PAddr GetCubePhysicalAddress(CubeFace face) const {
+ PAddr address = texture0.address;
+ if (face != CubeFace::PositiveX) {
+ // Bits [22:27] from the main texture address is shared with all cubemap additional
+ // addresses.
+ auto& face_addr = cube_address[static_cast<size_t>(face) - 1];
+ address &= ~face_addr.mask;
+ address |= face_addr;
+ }
+ // A multiplier of 8 is also needed in the same way as the main address.
+ return address * 8;
+ }
+
+ INSERT_PADDING_WORDS(0x3);
BitField<0, 4, TextureFormat> texture0_format;
BitField<0, 1, u32> fragment_lighting_enable;
INSERT_PADDING_WORDS(0x1);