aboutsummaryrefslogtreecommitdiff
path: root/src/Ryujinx.Graphics.Vic/Types
diff options
context:
space:
mode:
authorTSR Berry <20988865+TSRBerry@users.noreply.github.com>2023-04-08 01:22:00 +0200
committerMary <thog@protonmail.com>2023-04-27 23:51:14 +0200
commitcee712105850ac3385cd0091a923438167433f9f (patch)
tree4a5274b21d8b7f938c0d0ce18736d3f2993b11b1 /src/Ryujinx.Graphics.Vic/Types
parentcd124bda587ef09668a971fa1cac1c3f0cfc9f21 (diff)
Move solution and projects to src
Diffstat (limited to 'src/Ryujinx.Graphics.Vic/Types')
-rw-r--r--src/Ryujinx.Graphics.Vic/Types/BlendingSlotStruct.cs29
-rw-r--r--src/Ryujinx.Graphics.Vic/Types/ClearRectStruct.cs21
-rw-r--r--src/Ryujinx.Graphics.Vic/Types/ConfigStruct.cs16
-rw-r--r--src/Ryujinx.Graphics.Vic/Types/DeinterlaceMode.cs12
-rw-r--r--src/Ryujinx.Graphics.Vic/Types/FrameFormat.cs79
-rw-r--r--src/Ryujinx.Graphics.Vic/Types/LumaKeyStruct.cs19
-rw-r--r--src/Ryujinx.Graphics.Vic/Types/MatrixStruct.cs27
-rw-r--r--src/Ryujinx.Graphics.Vic/Types/OutputConfig.cs27
-rw-r--r--src/Ryujinx.Graphics.Vic/Types/OutputSurfaceConfig.cs24
-rw-r--r--src/Ryujinx.Graphics.Vic/Types/PipeConfig.cs15
-rw-r--r--src/Ryujinx.Graphics.Vic/Types/PixelFormat.cs81
-rw-r--r--src/Ryujinx.Graphics.Vic/Types/SlotConfig.cs65
-rw-r--r--src/Ryujinx.Graphics.Vic/Types/SlotStruct.cs12
-rw-r--r--src/Ryujinx.Graphics.Vic/Types/SlotSurfaceConfig.cs23
14 files changed, 450 insertions, 0 deletions
diff --git a/src/Ryujinx.Graphics.Vic/Types/BlendingSlotStruct.cs b/src/Ryujinx.Graphics.Vic/Types/BlendingSlotStruct.cs
new file mode 100644
index 00000000..86da41d2
--- /dev/null
+++ b/src/Ryujinx.Graphics.Vic/Types/BlendingSlotStruct.cs
@@ -0,0 +1,29 @@
+using Ryujinx.Common.Utilities;
+
+namespace Ryujinx.Graphics.Vic.Types
+{
+ struct BlendingSlotStruct
+ {
+ private long _word0;
+ private long _word1;
+
+ public int AlphaK1 => (int)_word0.Extract(0, 10);
+ public int AlphaK2 => (int)_word0.Extract(16, 10);
+ public int SrcFactCMatchSelect => (int)_word0.Extract(32, 3);
+ public int DstFactCMatchSelect => (int)_word0.Extract(36, 3);
+ public int SrcFactAMatchSelect => (int)_word0.Extract(40, 3);
+ public int DstFactAMatchSelect => (int)_word0.Extract(44, 3);
+ public int OverrideR => (int)_word1.Extract(66, 10);
+ public int OverrideG => (int)_word1.Extract(76, 10);
+ public int OverrideB => (int)_word1.Extract(86, 10);
+ public int OverrideA => (int)_word1.Extract(96, 10);
+ public bool UseOverrideR => _word1.Extract(108);
+ public bool UseOverrideG => _word1.Extract(109);
+ public bool UseOverrideB => _word1.Extract(110);
+ public bool UseOverrideA => _word1.Extract(111);
+ public bool MaskR => _word1.Extract(112);
+ public bool MaskG => _word1.Extract(113);
+ public bool MaskB => _word1.Extract(114);
+ public bool MaskA => _word1.Extract(115);
+ }
+}
diff --git a/src/Ryujinx.Graphics.Vic/Types/ClearRectStruct.cs b/src/Ryujinx.Graphics.Vic/Types/ClearRectStruct.cs
new file mode 100644
index 00000000..ae582a92
--- /dev/null
+++ b/src/Ryujinx.Graphics.Vic/Types/ClearRectStruct.cs
@@ -0,0 +1,21 @@
+using Ryujinx.Common.Utilities;
+
+namespace Ryujinx.Graphics.Vic.Types
+{
+ struct ClearRectStruct
+ {
+#pragma warning disable CS0649
+ private long _word0;
+ private long _word1;
+#pragma warning restore CS0649
+
+ public int ClearRect0Left => (int)_word0.Extract(0, 14);
+ public int ClearRect0Right => (int)_word0.Extract(16, 14);
+ public int ClearRect0Top => (int)_word0.Extract(32, 14);
+ public int ClearRect0Bottom => (int)_word0.Extract(48, 14);
+ public int ClearRect1Left => (int)_word1.Extract(64, 14);
+ public int ClearRect1Right => (int)_word1.Extract(80, 14);
+ public int ClearRect1Top => (int)_word1.Extract(96, 14);
+ public int ClearRect1Bottom => (int)_word1.Extract(112, 14);
+ }
+}
diff --git a/src/Ryujinx.Graphics.Vic/Types/ConfigStruct.cs b/src/Ryujinx.Graphics.Vic/Types/ConfigStruct.cs
new file mode 100644
index 00000000..5edc8183
--- /dev/null
+++ b/src/Ryujinx.Graphics.Vic/Types/ConfigStruct.cs
@@ -0,0 +1,16 @@
+using Ryujinx.Common.Memory;
+
+namespace Ryujinx.Graphics.Vic.Types
+{
+ struct ConfigStruct
+ {
+#pragma warning disable CS0649
+ public PipeConfig PipeConfig;
+ public OutputConfig OutputConfig;
+ public OutputSurfaceConfig OutputSurfaceConfig;
+ public MatrixStruct OutColorMatrix;
+ public Array4<ClearRectStruct> ClearRectStruct;
+ public Array8<SlotStruct> SlotStruct;
+#pragma warning restore CS0649
+ }
+}
diff --git a/src/Ryujinx.Graphics.Vic/Types/DeinterlaceMode.cs b/src/Ryujinx.Graphics.Vic/Types/DeinterlaceMode.cs
new file mode 100644
index 00000000..aa0654f0
--- /dev/null
+++ b/src/Ryujinx.Graphics.Vic/Types/DeinterlaceMode.cs
@@ -0,0 +1,12 @@
+namespace Ryujinx.Graphics.Vic.Types
+{
+ enum DeinterlaceMode
+ {
+ Weave,
+ BobField,
+ Bob,
+ NewBob,
+ Disi1,
+ WeaveLumaBobFieldChroma
+ }
+} \ No newline at end of file
diff --git a/src/Ryujinx.Graphics.Vic/Types/FrameFormat.cs b/src/Ryujinx.Graphics.Vic/Types/FrameFormat.cs
new file mode 100644
index 00000000..91f5751b
--- /dev/null
+++ b/src/Ryujinx.Graphics.Vic/Types/FrameFormat.cs
@@ -0,0 +1,79 @@
+namespace Ryujinx.Graphics.Vic.Types
+{
+ enum FrameFormat
+ {
+ Progressive,
+ InterlacedTopFieldFirst,
+ InterlacedBottomFieldFirst,
+ TopField,
+ BottomField,
+ SubPicProgressive,
+ SubPicInterlacedTopFieldFirst,
+ SubPicInterlacedBottomFieldFirst,
+ SubPicTopField,
+ SubPicBottomField,
+ TopFieldChromaBottom,
+ BottomFieldChromaTop,
+ SubPicTopFieldChromaBottom,
+ SubPicBottomFieldChromaTop
+ }
+
+ static class FrameFormatExtensions
+ {
+ public static bool IsField(this FrameFormat frameFormat)
+ {
+ switch (frameFormat)
+ {
+ case FrameFormat.TopField:
+ case FrameFormat.BottomField:
+ case FrameFormat.SubPicTopField:
+ case FrameFormat.SubPicBottomField:
+ case FrameFormat.TopFieldChromaBottom:
+ case FrameFormat.BottomFieldChromaTop:
+ case FrameFormat.SubPicTopFieldChromaBottom:
+ case FrameFormat.SubPicBottomFieldChromaTop:
+ return true;
+ }
+
+ return false;
+ }
+
+ public static bool IsInterlaced(this FrameFormat frameFormat)
+ {
+ switch (frameFormat)
+ {
+ case FrameFormat.InterlacedTopFieldFirst:
+ case FrameFormat.InterlacedBottomFieldFirst:
+ case FrameFormat.SubPicInterlacedTopFieldFirst:
+ case FrameFormat.SubPicInterlacedBottomFieldFirst:
+ return true;
+ }
+
+ return false;
+ }
+
+ public static bool IsInterlacedBottomFirst(this FrameFormat frameFormat)
+ {
+ return frameFormat == FrameFormat.InterlacedBottomFieldFirst ||
+ frameFormat == FrameFormat.SubPicInterlacedBottomFieldFirst;
+ }
+
+ public static bool IsTopField(this FrameFormat frameFormat, bool isLuma)
+ {
+ switch (frameFormat)
+ {
+ case FrameFormat.TopField:
+ case FrameFormat.SubPicTopField:
+ return true;
+ case FrameFormat.TopFieldChromaBottom:
+ case FrameFormat.SubPicTopFieldChromaBottom:
+ return isLuma;
+ case FrameFormat.BottomFieldChromaTop:
+ case FrameFormat.SubPicBottomFieldChromaTop:
+ return !isLuma;
+ }
+
+ return false;
+ }
+ }
+} \ No newline at end of file
diff --git a/src/Ryujinx.Graphics.Vic/Types/LumaKeyStruct.cs b/src/Ryujinx.Graphics.Vic/Types/LumaKeyStruct.cs
new file mode 100644
index 00000000..5d83bd71
--- /dev/null
+++ b/src/Ryujinx.Graphics.Vic/Types/LumaKeyStruct.cs
@@ -0,0 +1,19 @@
+using Ryujinx.Common.Utilities;
+
+namespace Ryujinx.Graphics.Vic.Types
+{
+ struct LumaKeyStruct
+ {
+ private long _word0;
+ private long _word1;
+
+ public int LumaCoeff0 => (int)_word0.Extract(0, 20);
+ public int LumaCoeff1 => (int)_word0.Extract(20, 20);
+ public int LumaCoeff2 => (int)_word0.Extract(40, 20);
+ public int LumaRShift => (int)_word0.Extract(60, 4);
+ public int LumaCoeff3 => (int)_word1.Extract(64, 20);
+ public int LumaKeyLower => (int)_word1.Extract(84, 10);
+ public int LumaKeyUpper => (int)_word1.Extract(94, 10);
+ public bool LumaKeyEnabled => _word1.Extract(104);
+ }
+}
diff --git a/src/Ryujinx.Graphics.Vic/Types/MatrixStruct.cs b/src/Ryujinx.Graphics.Vic/Types/MatrixStruct.cs
new file mode 100644
index 00000000..c0a4c34e
--- /dev/null
+++ b/src/Ryujinx.Graphics.Vic/Types/MatrixStruct.cs
@@ -0,0 +1,27 @@
+using Ryujinx.Common.Utilities;
+
+namespace Ryujinx.Graphics.Vic.Types
+{
+ struct MatrixStruct
+ {
+ private long _word0;
+ private long _word1;
+ private long _word2;
+ private long _word3;
+
+ public int MatrixCoeff00 => (int)_word0.ExtractSx(0, 20);
+ public int MatrixCoeff10 => (int)_word0.ExtractSx(20, 20);
+ public int MatrixCoeff20 => (int)_word0.ExtractSx(40, 20);
+ public int MatrixRShift => (int)_word0.Extract(60, 4);
+ public int MatrixCoeff01 => (int)_word1.ExtractSx(64, 20);
+ public int MatrixCoeff11 => (int)_word1.ExtractSx(84, 20);
+ public int MatrixCoeff21 => (int)_word1.ExtractSx(104, 20);
+ public bool MatrixEnable => _word1.Extract(127);
+ public int MatrixCoeff02 => (int)_word2.ExtractSx(128, 20);
+ public int MatrixCoeff12 => (int)_word2.ExtractSx(148, 20);
+ public int MatrixCoeff22 => (int)_word2.ExtractSx(168, 20);
+ public int MatrixCoeff03 => (int)_word3.ExtractSx(192, 20);
+ public int MatrixCoeff13 => (int)_word3.ExtractSx(212, 20);
+ public int MatrixCoeff23 => (int)_word3.ExtractSx(232, 20);
+ }
+}
diff --git a/src/Ryujinx.Graphics.Vic/Types/OutputConfig.cs b/src/Ryujinx.Graphics.Vic/Types/OutputConfig.cs
new file mode 100644
index 00000000..7b866994
--- /dev/null
+++ b/src/Ryujinx.Graphics.Vic/Types/OutputConfig.cs
@@ -0,0 +1,27 @@
+using Ryujinx.Common.Utilities;
+
+namespace Ryujinx.Graphics.Vic.Types
+{
+ struct OutputConfig
+ {
+#pragma warning disable CS0649
+ private long _word0;
+ private long _word1;
+#pragma warning restore CS0649
+
+ public int AlphaFillMode => (int)_word0.Extract(0, 3);
+ public int AlphaFillSlot => (int)_word0.Extract(3, 3);
+ public int BackgroundAlpha => (int)_word0.Extract(6, 10);
+ public int BackgroundR => (int)_word0.Extract(16, 10);
+ public int BackgroundG => (int)_word0.Extract(26, 10);
+ public int BackgroundB => (int)_word0.Extract(36, 10);
+ public int RegammaMode => (int)_word0.Extract(46, 2);
+ public bool OutputFlipX => _word0.Extract(48);
+ public bool OutputFlipY => _word0.Extract(49);
+ public bool OutputTranspose => _word0.Extract(50);
+ public int TargetRectLeft => (int)_word1.Extract(64, 14);
+ public int TargetRectRight => (int)_word1.Extract(80, 14);
+ public int TargetRectTop => (int)_word1.Extract(96, 14);
+ public int TargetRectBottom => (int)_word1.Extract(112, 14);
+ }
+}
diff --git a/src/Ryujinx.Graphics.Vic/Types/OutputSurfaceConfig.cs b/src/Ryujinx.Graphics.Vic/Types/OutputSurfaceConfig.cs
new file mode 100644
index 00000000..6a8b21e1
--- /dev/null
+++ b/src/Ryujinx.Graphics.Vic/Types/OutputSurfaceConfig.cs
@@ -0,0 +1,24 @@
+using Ryujinx.Common.Utilities;
+
+namespace Ryujinx.Graphics.Vic.Types
+{
+ struct OutputSurfaceConfig
+ {
+#pragma warning disable CS0649
+ private long _word0;
+ private long _word1;
+#pragma warning restore CS0649
+
+ public PixelFormat OutPixelFormat => (PixelFormat)_word0.Extract(0, 7);
+ public int OutChromaLocHoriz => (int)_word0.Extract(7, 2);
+ public int OutChromaLocVert => (int)_word0.Extract(9, 2);
+ public int OutBlkKind => (int)_word0.Extract(11, 4);
+ public int OutBlkHeight => (int)_word0.Extract(15, 4);
+ public int OutSurfaceWidth => (int)_word0.Extract(32, 14);
+ public int OutSurfaceHeight => (int)_word0.Extract(46, 14);
+ public int OutLumaWidth => (int)_word1.Extract(64, 14);
+ public int OutLumaHeight => (int)_word1.Extract(78, 14);
+ public int OutChromaWidth => (int)_word1.Extract(96, 14);
+ public int OutChromaHeight => (int)_word1.Extract(110, 14);
+ }
+}
diff --git a/src/Ryujinx.Graphics.Vic/Types/PipeConfig.cs b/src/Ryujinx.Graphics.Vic/Types/PipeConfig.cs
new file mode 100644
index 00000000..76720eb1
--- /dev/null
+++ b/src/Ryujinx.Graphics.Vic/Types/PipeConfig.cs
@@ -0,0 +1,15 @@
+using Ryujinx.Common.Utilities;
+
+namespace Ryujinx.Graphics.Vic.Types
+{
+ struct PipeConfig
+ {
+#pragma warning disable CS0169, CS0649
+ private long _word0;
+ private long _word1;
+#pragma warning restore CS0169, CS0649
+
+ public int DownsampleHoriz => (int)_word0.Extract(0, 11);
+ public int DownsampleVert => (int)_word0.Extract(16, 11);
+ }
+}
diff --git a/src/Ryujinx.Graphics.Vic/Types/PixelFormat.cs b/src/Ryujinx.Graphics.Vic/Types/PixelFormat.cs
new file mode 100644
index 00000000..72dc7899
--- /dev/null
+++ b/src/Ryujinx.Graphics.Vic/Types/PixelFormat.cs
@@ -0,0 +1,81 @@
+namespace Ryujinx.Graphics.Vic.Types
+{
+ enum PixelFormat
+ {
+ A8,
+ L8,
+ A4L4,
+ L4A4,
+ R8,
+ A8L8,
+ L8A8,
+ R8G8,
+ G8R8,
+ B5G6R5,
+ R5G6B5,
+ B6G5R5,
+ R5G5B6,
+ A1B5G5R5,
+ A1R5G5B5,
+ B5G5R5A1,
+ R5G5B5A1,
+ A5B5G5R1,
+ A5R1G5B5,
+ B5G5R1A5,
+ R1G5B5A5,
+ X1B5G5R5,
+ X1R5G5B5,
+ B5G5R5X1,
+ R5G5B5X1,
+ A4B4G4R4,
+ A4R4G4B4,
+ B4G4R4A4,
+ R4G4B4A4,
+ B8_G8_R8,
+ R8_G8_B8,
+ A8B8G8R8,
+ A8R8G8B8,
+ B8G8R8A8,
+ R8G8B8A8,
+ X8B8G8R8,
+ X8R8G8B8,
+ B8G8R8X8,
+ R8G8B8X8,
+ A2B10G10R10,
+ A2R10G10B10,
+ B10G10R10A2,
+ R10G10B10A2,
+ A4P4,
+ P4A4,
+ P8A845,
+ A8P8,
+ P8,
+ P1,
+ U8V8,
+ V8U8,
+ A8Y8U8V8,
+ V8U8Y8A8,
+ Y8_U8_V8,
+ Y8_V8_U8,
+ U8_V8_Y8,
+ V8_U8_Y8,
+ Y8_U8__Y8_V8,
+ Y8_V8__Y8_U8,
+ U8_Y8__V8_Y8,
+ V8_Y8__U8_Y8,
+ Y8___U8V8_N444,
+ Y8___V8U8_N444,
+ Y8___U8V8_N422,
+ Y8___V8U8_N422,
+ Y8___U8V8_N422R,
+ Y8___V8U8_N422R,
+ Y8___U8V8_N420,
+ Y8___V8U8_N420,
+ Y8___U8___V8_N444,
+ Y8___U8___V8_N422,
+ Y8___U8___V8_N422R,
+ Y8___U8___V8_N420,
+ U8,
+ V8
+ }
+}
diff --git a/src/Ryujinx.Graphics.Vic/Types/SlotConfig.cs b/src/Ryujinx.Graphics.Vic/Types/SlotConfig.cs
new file mode 100644
index 00000000..aba61add
--- /dev/null
+++ b/src/Ryujinx.Graphics.Vic/Types/SlotConfig.cs
@@ -0,0 +1,65 @@
+using Ryujinx.Common.Utilities;
+
+namespace Ryujinx.Graphics.Vic.Types
+{
+ struct SlotConfig
+ {
+ private long _word0;
+ private long _word1;
+ private long _word2;
+ private long _word3;
+ private long _word4;
+ private long _word5;
+ private long _word6;
+ private long _word7;
+
+ public bool SlotEnable => _word0.Extract(0);
+ public bool DeNoise => _word0.Extract(1);
+ public bool AdvancedDenoise => _word0.Extract(2);
+ public bool CadenceDetect => _word0.Extract(3);
+ public bool MotionMap => _word0.Extract(4);
+ public bool MMapCombine => _word0.Extract(5);
+ public bool IsEven => _word0.Extract(6);
+ public bool ChromaEven => _word0.Extract(7);
+ public bool CurrentFieldEnable => _word0.Extract(8);
+ public bool PrevFieldEnable => _word0.Extract(9);
+ public bool NextFieldEnable => _word0.Extract(10);
+ public bool NextNrFieldEnable => _word0.Extract(11);
+ public bool CurMotionFieldEnable => _word0.Extract(12);
+ public bool PrevMotionFieldEnable => _word0.Extract(13);
+ public bool PpMotionFieldEnable => _word0.Extract(14);
+ public bool CombMotionFieldEnable => _word0.Extract(15);
+ public FrameFormat FrameFormat => (FrameFormat)_word0.Extract(16, 4);
+ public int FilterLengthY => (int)_word0.Extract(20, 2);
+ public int FilterLengthX => (int)_word0.Extract(22, 2);
+ public int Panoramic => (int)_word0.Extract(24, 12);
+ public int DetailFltClamp => (int)_word0.Extract(58, 6);
+ public int FilterNoise => (int)_word1.Extract(64, 10);
+ public int FilterDetail => (int)_word1.Extract(74, 10);
+ public int ChromaNoise => (int)_word1.Extract(84, 10);
+ public int ChromaDetail => (int)_word1.Extract(94, 10);
+ public DeinterlaceMode DeinterlaceMode => (DeinterlaceMode)_word1.Extract(104, 4);
+ public int MotionAccumWeight => (int)_word1.Extract(108, 3);
+ public int NoiseIir => (int)_word1.Extract(111, 11);
+ public int LightLevel => (int)_word1.Extract(122, 4);
+ public int SoftClampLow => (int)_word2.Extract(128, 10);
+ public int SoftClampHigh => (int)_word2.Extract(138, 10);
+ public int PlanarAlpha => (int)_word2.Extract(160, 10);
+ public bool ConstantAlpha => _word2.Extract(170);
+ public int StereoInterleave => (int)_word2.Extract(171, 3);
+ public bool ClipEnabled => _word2.Extract(174);
+ public int ClearRectMask => (int)_word2.Extract(175, 8);
+ public int DegammaMode => (int)_word2.Extract(183, 2);
+ public bool DecompressEnable => _word2.Extract(186);
+ public int DecompressCtbCount => (int)_word3.Extract(192, 8);
+ public int DecompressZbcColor => (int)_word3.Extract(200, 32);
+ public int SourceRectLeft => (int)_word4.Extract(256, 30);
+ public int SourceRectRight => (int)_word4.Extract(288, 30);
+ public int SourceRectTop => (int)_word5.Extract(320, 30);
+ public int SourceRectBottom => (int)_word5.Extract(352, 30);
+ public int DstRectLeft => (int)_word6.Extract(384, 14);
+ public int DstRectRight => (int)_word6.Extract(400, 14);
+ public int DstRectTop => (int)_word6.Extract(416, 14);
+ public int DstRectBottom => (int)_word6.Extract(432, 14);
+ }
+}
diff --git a/src/Ryujinx.Graphics.Vic/Types/SlotStruct.cs b/src/Ryujinx.Graphics.Vic/Types/SlotStruct.cs
new file mode 100644
index 00000000..96c6cce5
--- /dev/null
+++ b/src/Ryujinx.Graphics.Vic/Types/SlotStruct.cs
@@ -0,0 +1,12 @@
+namespace Ryujinx.Graphics.Vic.Types
+{
+ struct SlotStruct
+ {
+ public SlotConfig SlotConfig;
+ public SlotSurfaceConfig SlotSurfaceConfig;
+ public LumaKeyStruct LumaKeyStruct;
+ public MatrixStruct ColorMatrixStruct;
+ public MatrixStruct GamutMatrixStruct;
+ public BlendingSlotStruct BlendingSlotStruct;
+ }
+}
diff --git a/src/Ryujinx.Graphics.Vic/Types/SlotSurfaceConfig.cs b/src/Ryujinx.Graphics.Vic/Types/SlotSurfaceConfig.cs
new file mode 100644
index 00000000..4492c85f
--- /dev/null
+++ b/src/Ryujinx.Graphics.Vic/Types/SlotSurfaceConfig.cs
@@ -0,0 +1,23 @@
+using Ryujinx.Common.Utilities;
+
+namespace Ryujinx.Graphics.Vic.Types
+{
+ struct SlotSurfaceConfig
+ {
+ private long _word0;
+ private long _word1;
+
+ public PixelFormat SlotPixelFormat => (PixelFormat)_word0.Extract(0, 7);
+ public int SlotChromaLocHoriz => (int)_word0.Extract(7, 2);
+ public int SlotChromaLocVert => (int)_word0.Extract(9, 2);
+ public int SlotBlkKind => (int)_word0.Extract(11, 4);
+ public int SlotBlkHeight => (int)_word0.Extract(15, 4);
+ public int SlotCacheWidth => (int)_word0.Extract(19, 3);
+ public int SlotSurfaceWidth => (int)_word0.Extract(32, 14);
+ public int SlotSurfaceHeight => (int)_word0.Extract(46, 14);
+ public int SlotLumaWidth => (int)_word1.Extract(64, 14);
+ public int SlotLumaHeight => (int)_word1.Extract(78, 14);
+ public int SlotChromaWidth => (int)_word1.Extract(96, 14);
+ public int SlotChromaHeight => (int)_word1.Extract(110, 14);
+ }
+}