summaryrefslogtreecommitdiffstats
path: root/src/video_core/textures
diff options
context:
space:
mode:
authorReinUsesLisp <reinuseslisp@airmail.cc>2019-04-28 06:01:22 +0200
committerReinUsesLisp <reinuseslisp@airmail.cc>2019-06-21 02:36:12 +0200
commitb8c75a845b1784045a10fa8b5f1f57f2ec53eeca (patch)
treeb71f71b5d3d8c3d12556e3fbf9344dbb9e8f220c /src/video_core/textures
parentgl_shader_decompiler: Allow 1D textures to be texture buffers (diff)
downloadyuzu-b8c75a845b1784045a10fa8b5f1f57f2ec53eeca.tar
yuzu-b8c75a845b1784045a10fa8b5f1f57f2ec53eeca.tar.gz
yuzu-b8c75a845b1784045a10fa8b5f1f57f2ec53eeca.tar.bz2
yuzu-b8c75a845b1784045a10fa8b5f1f57f2ec53eeca.tar.lz
yuzu-b8c75a845b1784045a10fa8b5f1f57f2ec53eeca.tar.xz
yuzu-b8c75a845b1784045a10fa8b5f1f57f2ec53eeca.tar.zst
yuzu-b8c75a845b1784045a10fa8b5f1f57f2ec53eeca.zip
Diffstat (limited to 'src/video_core/textures')
-rw-r--r--src/video_core/textures/texture.h18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/video_core/textures/texture.h b/src/video_core/textures/texture.h
index f22b4e7c7..ddeed73d0 100644
--- a/src/video_core/textures/texture.h
+++ b/src/video_core/textures/texture.h
@@ -172,12 +172,16 @@ struct TICEntry {
BitField<26, 1, u32> use_header_opt_control;
BitField<27, 1, u32> depth_texture;
BitField<28, 4, u32> max_mip_level;
+
+ BitField<0, 16, u32> buffer_high_width_minus_one;
};
union {
BitField<0, 16, u32> width_minus_1;
BitField<22, 1, u32> srgb_conversion;
BitField<23, 4, TextureType> texture_type;
BitField<29, 3, u32> border_size;
+
+ BitField<0, 16, u32> buffer_low_width_minus_one;
};
union {
BitField<0, 16, u32> height_minus_1;
@@ -206,7 +210,10 @@ struct TICEntry {
}
u32 Width() const {
- return width_minus_1 + 1;
+ if (header_version != TICHeaderVersion::OneDBuffer) {
+ return width_minus_1 + 1;
+ }
+ return (buffer_high_width_minus_one << 16) | buffer_low_width_minus_one;
}
u32 Height() const {
@@ -237,6 +244,15 @@ struct TICEntry {
header_version == TICHeaderVersion::BlockLinearColorKey;
}
+ bool IsLineal() const {
+ return header_version == TICHeaderVersion::Pitch ||
+ header_version == TICHeaderVersion::PitchColorKey;
+ }
+
+ bool IsBuffer() const {
+ return header_version == TICHeaderVersion::OneDBuffer;
+ }
+
bool IsSrgbConversionEnabled() const {
return srgb_conversion != 0;
}