xref: /aosp_15_r20/external/mesa3d/src/imagination/csbgen/rogue_pbestate.xml (revision 6104692788411f58d303aa86923a9ff6ecaded22)
1<?xml version="1.0" ?>
2
3<!--
4Copyright © 2022 Imagination Technologies Ltd.
5
6Permission is hereby granted, free of charge, to any person obtaining a copy
7of this software and associated documentation files (the "Software"), to deal
8in the Software without restriction, including without limitation the rights
9to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10copies of the Software, and to permit persons to whom the Software is
11furnished to do so, subject to the following conditions:
12
13The above copyright notice and this permission notice (including the next
14paragraph) shall be included in all copies or substantial portions of the
15Software.
16
17THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23SOFTWARE.
24-->
25
26<csbgen name="ROGUE" prefix="PBESTATE">
27
28  <enum name="COMP_IADDR_TYPE">
29    <value name="INDIRECT_1TILE" value="0"/>
30    <value name="INDIRECT_4TILE" value="1"/>
31  </enum>
32
33  <enum name="COMPRESS_SIZE">
34    <value name="BLOCK_8X8"  value="0"/>
35    <value name="BLOCK_16X4" value="1"/>
36  </enum>
37
38  <enum name="COMPRESS_SIZE_EXT">
39    <value name="BLOCK_8X8_16X4"   value="0"/>
40    <value name="BLOCK_32X2_RSRVD" value="1"/>
41  </enum>
42
43  <enum name="COMPRESSION">
44    <value name="DISABLED" value="0"/>
45    <value name="ENABLED"  value="1"/>
46  </enum>
47
48  <enum name="LOSSY">
49    <value name="DISABLED" value="0"/>
50    <value name="ENABLED"  value="1"/>
51  </enum>
52
53  <enum name="MEMLAYOUT">
54    <value name="LINEAR"     value="0"/>
55    <value name="TWIDDLE_2D" value="1"/>
56    <value name="TWIDDLE_3D" value="2"/>
57    <value name="TILED"      value="3"/>
58  </enum>
59
60  <enum name="PACKMODE">
61    <value name="U8U8U8U8"            value="0x0"/>
62    <value name="S8S8S8S8"            value="0x1"/>
63    <value name="X8U8S8S8"            value="0x2"/>
64    <value name="X8S8S8U8"            value="0x3"/>
65    <value name="A1R5G5B5"            value="0x4"/>
66    <value name="R5G5B5A1"            value="0x5"/>
67    <value name="A4R4G4B4"            value="0x6"/>
68    <value name="A8R3G3B2"            value="0x7"/>
69    <value name="U16U16U16U16"        value="0x8"/>
70    <value name="S16S16S16S16"        value="0x9"/>
71    <value name="F16F16F16F16"        value="0xa"/>
72    <value name="U32U32U32U32"        value="0xb"/>
73    <value name="S32S32S32S32"        value="0xc"/>
74    <value name="F32F32F32F32"        value="0xd"/>
75    <value name="A2R10B10G10"         value="0xe"/>
76    <value name="R10B10G10A2"         value="0xf"/>
77    <value name="A2F10F10F10"         value="0x10"/>
78    <value name="F10F10F10A2"         value="0x11"/>
79    <value name="U8U8U8"              value="0x12"/>
80    <value name="S8S8S8"              value="0x13"/>
81    <value name="R5G6B5"              value="0x14"/>
82    <value name="R5SG5SB6"            value="0x15"/>
83    <value name="B6G5SR5S"            value="0x16"/>
84    <value name="U16U16U16"           value="0x17"/>
85    <value name="S16S16S16"           value="0x18"/>
86    <value name="F16F16F16"           value="0x19"/>
87    <value name="U32U32U32"           value="0x1a"/>
88    <value name="S32S32S32"           value="0x1b"/>
89    <value name="F11F11F10"           value="0x1c"/>
90    <value name="F10F11F11"           value="0x1d"/>
91    <value name="SE9995"              value="0x1e"/>
92    <value name="F32F32F32"           value="0x1f"/>
93    <value name="X24U8F32"            value="0x20"/>
94    <value name="X24X8F32"            value="0x21"/>
95    <value name="X24G8X32"            value="0x22"/>
96    <value name="U8U8"                value="0x23"/>
97    <value name="S8S8"                value="0x24"/>
98    <value name="U16U16"              value="0x25"/>
99    <value name="S16S16"              value="0x26"/>
100    <value name="F16F16"              value="0x27"/>
101    <value name="U32U32"              value="0x28"/>
102    <value name="S32S32"              value="0x29"/>
103    <value name="F32F32"              value="0x2a"/>
104    <value name="U24ST8"              value="0x2b"/>
105    <value name="ST8U24"              value="0x2c"/>
106    <value name="X8U24"               value="0x2d"/>
107    <value name="U8X24"               value="0x2e"/>
108    <value name="U8"                  value="0x2f"/>
109    <value name="S8"                  value="0x30"/>
110    <value name="U16"                 value="0x31"/>
111    <value name="S16"                 value="0x32"/>
112    <value name="F16"                 value="0x33"/>
113    <value name="U32"                 value="0x34"/>
114    <value name="S32"                 value="0x35"/>
115    <value name="F32"                 value="0x36"/>
116    <value name="PBYTE"               value="0x37"/>
117    <value name="PWORD"               value="0x38"/>
118    <value name="ARGBV16_XR10"        value="0x39"/>
119    <value name="A2_XRBIAS_U10U10U10" value="0x3a"/>
120    <value name="YUV"                 value="0x3b"/>
121    <value name="U10U10U10_XRBIAS_A2" value="0x3c"/>
122    <value name="INVALID"             value="0xFFFFFFFF"/>
123  </enum>
124
125  <enum name="PAIR_TILES">
126    <value name="DISABLED" value="0"/>
127    <value name="ENABLED"  value="1"/>
128  </enum>
129
130  <enum name="ROTATION_TYPE">
131    <value name="0_DEG"   value="0"/>
132    <value name="90_DEG"  value="1"/>
133    <value name="180_DEG" value="2"/>
134    <value name="270_DEG" value="3"/>
135  </enum>
136
137  <enum name="SIZE">
138    <value name="1_PIXEL"   value="0"/>
139    <value name="2_PIXEL"   value="1"/>
140    <value name="4_PIXEL"   value="2"/>
141    <value name="8_PIXEL"   value="3"/>
142    <value name="16_PIXEL"  value="4"/>
143    <value name="32_PIXEL"  value="5"/>
144    <value name="64_PIXEL"  value="6"/>
145    <value name="128_PIXEL" value="7"/>
146    <value name="256_PIXEL" value="8"/>
147    <value name="512_PIXEL" value="9"/>
148    <value name="1K_PIXEL"  value="10"/>
149    <value name="2K_PIXEL"  value="11"/>
150    <value name="4K_PIXEL"  value="12"/>
151    <value name="8K_PIXEL"  value="13"/>
152    <value name="16K_PIXEL" value="14"/>
153  </enum>
154
155  <enum name="SOURCE_FORMAT">
156    <value name="F16_PER_CHANNEL" value="0"/>
157    <value name="8_PER_CHANNEL"   value="1"/>
158  </enum>
159
160  <enum name="SOURCE_POS">
161    <value name="START_BIT0"  value="0"/>
162    <value name="START_BIT32" value="1"/>
163    <value name="START_BIT64" value="2"/>
164    <value name="START_BIT96" value="3"/>
165  </enum>
166
167  <enum name="SWIZ">
168    <value name="SOURCE_CHAN0" value="0"/>
169    <value name="SOURCE_CHAN1" value="1"/>
170    <value name="SOURCE_CHAN2" value="2"/>
171    <value name="SOURCE_CHAN3" value="3"/>
172    <value name="ONE"          value="4"/>
173    <value name="ZERO"         value="5"/>
174  </enum>
175
176  <enum name="TFBC_LOSSY">
177    <value name="LOSSLESS" value="0"/>
178    <value name="LOSSY75"  value="1"/>
179    <value name="LOSSY50"  value="2"/>
180    <value name="LOSSY25"  value="3"/>
181  </enum>
182
183  <enum name="TWOCOMP_GAMMA">
184    <value name="GAMMA_BOTTOM_CHANNEL" value="0"/>
185    <value name="GAMMA_BOTH_CHANNELS"  value="1"/>
186  </enum>
187
188  <enum name="Y_FLIP">
189    <value name="DISABLED" value="0"/>
190    <value name="ENABLED"  value="1"/>
191  </enum>
192
193  <enum name="YUV_DOWNSCALE">
194    <value name="NO_DOWNSCALING"   value="0"/>
195    <value name="ONE_SAMPLE_LEFT"  value="1"/>
196    <value name="EMPTY"            value="2"/>
197    <value name="TWO_SAMPLES"      value="3"/>
198    <value name="FOUR_SAMPLES"     value="4"/>
199    <value name="ONE_SAMPLE_RIGHT" value="5"/>
200  </enum>
201
202  <enum name="YUV_PMODE">
203    <value name="UV8_420_2PLANE"   value="0"/>
204    <value name="U8_420_3PLANE"    value="1"/>
205    <value name="V8_420_3PLANE"    value="2"/>
206    <value name="YUV8_422_1PLANE"  value="3"/>
207    <value name="UV8_422_2PLANE"   value="4"/>
208    <value name="UV8_444_2PLANE"   value="5"/>
209    <value name="Y8_23PLANE"       value="6"/>
210    <value name="U8_444_3PLANE"    value="7"/>
211    <value name="V8_444_3PLANE"    value="8"/>
212    <value name="YUV10_444_1PLANE" value="9"/>
213    <value name="RESERVED_YUV1"    value="10"/>
214    <value name="RESERVED_YUV2"    value="11"/>
215    <value name="YUV10_422_1PLANE" value="12"/>
216    <value name="UV10_420_2PLANE"  value="13"/>
217    <value name="Y10_23PLANE"      value="14"/>
218    <value name="UV16_420_2PLANE"  value="15"/>
219    <value name="UV16_422_2PLANE"  value="16"/>
220    <value name="UV16_444_2PLANE"  value="17"/>
221    <value name="Y16_23PLANE"      value="18"/>
222    <value name="U16_444_3PLANE"   value="19"/>
223    <value name="V16_444_3PLANE"   value="20"/>
224  </enum>
225
226  <struct name="STATE_WORD0" length="1">
227    <field name="address_low" start="0" end="31" shift="2" type="address"/>
228  </struct>
229
230  <struct name="STATE_WORD1" length="1">
231    <condition type="if" check="8_OUTPUT_REGISTERS"/>
232      <field name="source_pos_offset_128" start="28" end="28" type="bool"/>
233    <condition type="endif" check="8_OUTPUT_REGISTERS"/>
234    <field name="yuv_pmode" start="23" end="27" type="YUV_PMODE"/>
235    <field name="yuv_downscale" start="20" end="22" type="YUV_DOWNSCALE"/>
236    <field name="source_format" start="19" end="19" type="SOURCE_FORMAT"/>
237    <field name="mrt_index" start="16" end="18" type="uint"/>
238    <field name="source_pos" start="14" end="15" type="SOURCE_POS"/>
239    <field name="norm" start="13" end="13" type="bool"/>
240    <field name="packmode" start="7" end="12" type="PACKMODE"/>
241    <field name="emptytile" start="6" end="6" type="bool"/>
242    <field name="address_high" start="0" end="5" shift="34" type="address"/>
243  </struct>
244
245  <struct name="REG_WORD0" length="2">
246    <field name="tfbc_lossy" start="62" end="63" type="TFBC_LOSSY">
247      <define name="LOSSY37_75_TFBC_LOSSY_37_PERCENT_ENABLED" value="1"/>
248    </field>
249    <field name="lossy" start="62" end="62" type="LOSSY"/>
250    <field name="compress_size_ext" start="61" end="61" type="COMPRESS_SIZE_EXT"/>
251    <field name="comp_iaddr_mode" start="60" end="60" type="COMP_IADDR_TYPE"/>
252    <field name="comp_cor_enable" start="59" end="59" type="bool"/>
253    <field name="dither" start="58" end="58" type="bool"/>
254    <field name="tilerelative" start="57" end="57" type="bool"/>
255    <field name="downscale" start="56" end="56" type="bool"/>
256    <field name="size_z" start="52" end="55" type="SIZE"/>
257    <field name="rotation" start="50" end="51" type="ROTATION_TYPE"/>
258    <field name="linestride" start="34" end="49" type="uint">
259      <!-- FIXME: When pbe_stride_align_1pixel is present, this should be 1. -->
260      <define name="UNIT_SIZE" value="2"/>
261    </field>
262    <field name="memlayout" start="32" end="33" type="MEMLAYOUT"/>
263    <field name="swiz_chan3" start="29" end="31" type="SWIZ"/>
264    <field name="swiz_chan2" start="26" end="28" type="SWIZ"/>
265    <field name="swiz_chan1" start="23" end="25" type="SWIZ"/>
266    <field name="swiz_chan0" start="20" end="22" type="SWIZ"/>
267    <field name="minclip_x" start="6" end="19" type="uint"/>
268    <field name="twocomp_gamma" start="5" end="5" type="TWOCOMP_GAMMA"/>
269    <field name="gamma" start="4" end="4" type="bool"/>
270    <field name="compression" start="3" end="3" type="COMPRESSION"/>
271    <field name="compress_size" start="2" end="2" type="COMPRESS_SIZE"/>
272    <field name="comp_indirect_table" start="1" end="1" type="bool"/>
273    <field name="y_flip" start="0" end="0" type="Y_FLIP"/>
274  </struct>
275
276  <struct name="REG_WORD1" length="2">
277    <field name="size_x" start="60" end="63" type="SIZE"/>
278    <field name="minclip_y" start="46" end="59" type="uint"/>
279    <field name="maxclip_x" start="32" end="45" type="uint"/>
280    <field name="size_y" start="28" end="31" type="SIZE"/>
281    <field name="zslice" start="14" end="27" type="uint"/>
282    <field name="maxclip_y" start="0" end="13" type="uint"/>
283  </struct>
284
285  <struct name="REG_WORD2" length="2">
286    <field name="pair_tiles" start="46" end="46" type="PAIR_TILES">
287      <!-- TODO: Do we need this? -->
288      <define name="SHIFT" value="46"/>
289    </field>
290    <field name="surface_y_size" start="32" end="45" type="uint"/>
291    <field name="sw_bytemask" start="0" end="31" type="uint"/>
292  </struct>
293
294</csbgen>
295