xref: /aosp_15_r20/external/mesa3d/src/imagination/csbgen/rogue_ipf.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="IPF">
27
28  <define name="TILE_SIZE_PIXELS" value="32"/>
29  <define name="CONTROL_STREAM_SIZE_DWORDS" value="32"/>
30  <define name="ISP_VERTEX_XY_BIAS_VALUE"   value="4096"/>
31  <!-- FIXME: This is the SIMPLE_INTERNAL_PARAMETER_FORMAT variant.
32       Should we use the "condition" tag for this?
33  -->
34  <define name="ISP_VERTEX_XY_BIAS_VALUE_SIPF" value="2048"/>
35
36  <enum name="COMPRESSION_FORMAT">
37    <value name="UNIQUE_1" value="0"/>
38    <value name="ORIGIN_1_DELTA_1" value="1"/>
39    <value name="ORIGIN_1_DELTA_2" value="2"/>
40    <value name="ORIGIN_1_DELTA_3" value="3"/>
41    <value name="ORIGIN_1_DELTA_4" value="4"/>
42    <value name="ORIGIN_1_DELTA_5" value="5"/>
43    <value name="ORIGIN_1_DELTA_6" value="6"/>
44    <value name="ORIGIN_1_DELTA_7" value="7"/>
45    <value name="RAW_BYTE"         value="8"/>
46    <value name="UNIQUE_2"         value="9"/>
47    <value name="ORIGIN_2_DELTA_1" value="10"/>
48    <value name="ORIGIN_2_DELTA_2" value="11"/>
49    <value name="ORIGIN_2_DELTA_3" value="12"/>
50    <value name="ORIGIN_2_DELTA_4" value="13"/>
51    <value name="ORIGIN_2_DELTA_5" value="14"/>
52    <value name="ORIGIN_2_DELTA_6" value="15"/>
53  </enum>
54
55  <enum name="CS_MASK_FMT">
56    <value name="INDEX" value="0"/>
57    <value name="BYTE"  value="1"/>
58    <value name="BIT"   value="2"/>
59    <value name="FULL"  value="3"/>
60  </enum>
61
62  <enum name="CS_TYPE">
63    <value name="PRIM" value="0"/>
64    <value name="LINK" value="2"/>
65    <value name="TERM" value="3"/>
66  </enum>
67
68  <!-- FIXME: This is only available with SIMPLE_INTERNAL_PARAMETER_FORMAT_V2. -->
69  <enum name="CS_CTRL_TYPE_SIPF2">
70    <value name="PRIM" value="0"/>
71    <value name="LINK" value="1"/>
72    <value name="TERM" value="3"/>
73  </enum>
74
75  <!-- FIXME: This is only available with SIMPLE_INTERNAL_PARAMETER_FORMAT. -->
76  <struct name="INDEX_DATA_WORDS_SIPF" length="2">
77    <field name="ix_triangle3_bf_flag" start="63" end="63" type="bool"/>
78    <field name="ix_triangle3_edge_flag_ca" start="62" end="62" type="bool"/>
79    <field name="ix_triangle3_index_2" start="58" end="61" type="uint"/>
80    <field name="ix_triangle3_edge_flag_bc" start="57" end="57" type="bool"/>
81    <field name="ix_triangle3_index_1" start="53" end="56" type="uint"/>
82    <field name="ix_triangle3_edge_flag_ab" start="52" end="52" type="bool"/>
83    <field name="ix_triangle3_index_0" start="48" end="51" type="uint"/>
84    <field name="ix_triangle2_bf_flag" start="47" end="47" type="bool"/>
85    <field name="ix_triangle2_edge_flag_ca" start="46" end="46" type="bool"/>
86    <field name="ix_triangle2_index_2" start="42" end="45" type="uint"/>
87    <field name="ix_triangle2_edge_flag_bc" start="41" end="41" type="bool"/>
88    <field name="ix_triangle2_index_1" start="37" end="40" type="uint"/>
89    <field name="ix_triangle2_edge_flag_ab" start="36" end="36" type="bool"/>
90    <field name="ix_triangle2_index_0" start="32" end="35" type="uint"/>
91    <field name="ix_triangle1_bf_flag" start="31" end="31" type="bool"/>
92    <field name="ix_triangle1_edge_flag_ca" start="30" end="30" type="bool"/>
93    <field name="ix_triangle1_index_2" start="26" end="29" type="uint"/>
94    <field name="ix_triangle1_edge_flag_bc" start="25" end="25" type="bool"/>
95    <field name="ix_triangle1_index_1" start="21" end="24" type="uint"/>
96    <field name="ix_triangle1_edge_flag_ab" start="20" end="20" type="bool"/>
97    <field name="ix_triangle1_index_0" start="16" end="19" type="uint"/>
98    <field name="ix_triangle0_bf_flag" start="15" end="15" type="bool"/>
99    <field name="ix_triangle0_edge_flag_ca" start="14" end="14" type="bool"/>
100    <field name="ix_triangle0_index_2" start="10" end="13" type="uint"/>
101    <field name="ix_triangle0_edge_flag_bc" start="9" end="9" type="bool"/>
102    <field name="ix_triangle0_index_1" start="5" end="8" type="uint"/>
103    <field name="ix_triangle0_edge_flag_ab" start="4" end="4" type="bool"/>
104    <field name="ix_triangle0_index_0" start="0" end="3" type="uint"/>
105  </struct>
106
107  <!-- FIXME: This is only available with SIMPLE_INTERNAL_PARAMETER_FORMAT_V2. -->
108  <struct name="VERTEX_FORMAT_WORD_SIPF2" length="2">
109    <field name="vf_isp_format_word" start="42" end="63" type="uint"/>
110    <field name="vf_isp_state_size" start="39" end="41" type="uint"/>
111    <field name="vf_tsp_vtx_raw" start="38" end="38" type="bool"/>
112    <field name="vf_isp_vtx_raw" start="37" end="37" type="bool"/>
113    <field name="vf_varying_total_16" start="30" end="36" type="uint"/>
114    <field name="vf_varying_total_32" start="23" end="29" type="uint"/>
115    <field name="vf_varying_vertex_bits" start="11" end="22" type="uint"/>
116    <field name="vf_primitive_total" start="6" end="10" type="uint"/>
117    <field name="vf_vertex_total" start="2" end="5" type="uint"/>
118    <field name="vf_prim_msaa_disable" start="1" end="1" type="bool"/>
119    <field name="vf_vertex_clipped" start="0" end="0" type="bool"/>
120  </struct>
121
122  <struct name="SCISSOR_WORD_0" length="1">
123    <field name="scw0_xmin" start="16" end="31" type="uint"/>
124    <field name="scw0_xmax" start="0" end="15" type="uint"/>
125  </struct>
126
127  <struct name="SCISSOR_WORD_1" length="1">
128    <field name="scw1_ymin" start="16" end="31" type="uint"/>
129    <field name="scw1_ymax" start="0" end="15" type="uint"/>
130  </struct>
131
132  <struct name="CONTROL_STREAM" length="1">
133    <field name="cs_type" start="30" end="31" type="CS_TYPE"/>
134    <field name="cs_link" start="3" end="29" shift="7" type="address">
135      <define name="UNIT_SIZE" value="128"/>
136    </field>
137  </struct>
138
139  <!-- FIXME: This is only available with SIMPLE_INTERNAL_PARAMETER_FORMAT_V2. -->
140  <struct name="CONTROL_STREAM_LINK_SIPF2" length="1">
141    <field name="cs_link" start="2" end="31" shift="6" type="address">
142      <define name="UNIT_SIZE" value="64"/>
143    </field>
144    <field name="cs_ctrl_type" start="0" end="1" type="CS_CTRL_TYPE_SIPF2" default="LINK"/>
145  </struct>
146
147  <!-- FIXME: This is only available with SIMPLE_INTERNAL_PARAMETER_FORMAT_V2. -->
148  <struct name="CONTROL_STREAM_TERMINATE_SIPF2" length="1">
149    <field name="rsvd" start="2" end="7" type="uint"/>
150    <field name="cs_ctrl_type" start="0" end="1" type="CS_CTRL_TYPE_SIPF2" default="TERM"/>
151  </struct>
152
153  <!-- FIXME: This is only available with SIMPLE_INTERNAL_PARAMETER_FORMAT_V2. -->
154  <struct name="PRIMITIVE_HEADER_SIPF2" length="1">
155    <field name="cs_valid_tile3" start="7" end="7" type="bool"/>
156    <field name="cs_valid_tile2" start="6" end="6" type="bool"/>
157    <field name="cs_valid_tile1" start="5" end="5" type="bool"/>
158    <field name="cs_valid_tile0" start="4" end="4" type="bool"/>
159    <field name="cs_mask_num_bytes" start="2" end="3" type="uint"/>
160    <field name="cs_prim_base_size" start="1" end="1" type="bool"/>
161    <field name="cs_ctrl_type" start="0" end="0" type="CS_CTRL_TYPE_SIPF2" default="PRIM"/>
162  </struct>
163
164  <struct name="PRIMITIVE_FORMAT" length="1">
165    <field name="cs_type" start="30" end="31" type="CS_TYPE"/>
166    <field name="cs_isp_state_read" start="29" end="29" type="bool"/>
167    <field name="cs_isp_state_size" start="26" end="28" type="uint"/>
168    <field name="cs_prim_total" start="19" end="25" type="uint"/>
169    <field name="cs_mask_fmt" start="17" end="18" type="CS_MASK_FMT"/>
170    <field name="cs_prim_base_pres" start="16" end="16" type="bool"/>
171    <field name="cs_prim_base_offset" start="0" end="15" type="uint"/>
172  </struct>
173
174  <struct name="PRIMITIVE_BASE" length="1">
175    <field name="cs_prim_base" start="0" end="31" shift="2" type="address"/>
176  </struct>
177
178  <!-- FIXME: This is the SIMPLE_INTERNAL_PARAMETER_FORMAT_V2 variant.
179       Should we use the "condition" tag for this?
180  -->
181  <struct name="PRIMITIVE_BASE_SIPF2" length="1">
182    <field name="cs_prim_base" start="0" end="31" shift="3" type="address"/>
183  </struct>
184
185  <!-- Labeling of fields within Byte Based Mask One-Byte Word 0.
186       See ROGUE_IPF_PRIMITIVE_HEADER_SIPF2.cs_mask_num_bytes.
187  -->
188  <struct name="BYTE_BASED_MASK_ONE_BYTE_WORD_0_SIPF2" length="1">
189    <field name="cs_mask_one_byte_tile3_7" start="31" end="31" type="bool"/>
190    <field name="cs_mask_one_byte_tile3_6" start="30" end="30" type="bool"/>
191    <field name="cs_mask_one_byte_tile3_5" start="29" end="29" type="bool"/>
192    <field name="cs_mask_one_byte_tile3_4" start="28" end="28" type="bool"/>
193    <field name="cs_mask_one_byte_tile3_3" start="27" end="27" type="bool"/>
194    <field name="cs_mask_one_byte_tile3_2" start="26" end="26" type="bool"/>
195    <field name="cs_mask_one_byte_tile3_1" start="25" end="25" type="bool"/>
196    <field name="cs_mask_one_byte_tile3_0" start="24" end="24" type="bool"/>
197    <field name="cs_mask_one_byte_tile2_7" start="23" end="23" type="bool"/>
198    <field name="cs_mask_one_byte_tile2_6" start="22" end="22" type="bool"/>
199    <field name="cs_mask_one_byte_tile2_5" start="21" end="21" type="bool"/>
200    <field name="cs_mask_one_byte_tile2_4" start="20" end="20" type="bool"/>
201    <field name="cs_mask_one_byte_tile2_3" start="19" end="19" type="bool"/>
202    <field name="cs_mask_one_byte_tile2_2" start="18" end="18" type="bool"/>
203    <field name="cs_mask_one_byte_tile2_1" start="17" end="17" type="bool"/>
204    <field name="cs_mask_one_byte_tile2_0" start="16" end="16" type="bool"/>
205    <field name="cs_mask_one_byte_tile1_7" start="15" end="15" type="bool"/>
206    <field name="cs_mask_one_byte_tile1_6" start="14" end="14" type="bool"/>
207    <field name="cs_mask_one_byte_tile1_5" start="13" end="13" type="bool"/>
208    <field name="cs_mask_one_byte_tile1_4" start="12" end="12" type="bool"/>
209    <field name="cs_mask_one_byte_tile1_3" start="11" end="11" type="bool"/>
210    <field name="cs_mask_one_byte_tile1_2" start="10" end="10" type="bool"/>
211    <field name="cs_mask_one_byte_tile1_1" start="9" end="9" type="bool"/>
212    <field name="cs_mask_one_byte_tile1_0" start="8" end="8" type="bool"/>
213    <field name="cs_mask_one_byte_tile0_7" start="7" end="7" type="bool"/>
214    <field name="cs_mask_one_byte_tile0_6" start="6" end="6" type="bool"/>
215    <field name="cs_mask_one_byte_tile0_5" start="5" end="5" type="bool"/>
216    <field name="cs_mask_one_byte_tile0_4" start="4" end="4" type="bool"/>
217    <field name="cs_mask_one_byte_tile0_3" start="3" end="3" type="bool"/>
218    <field name="cs_mask_one_byte_tile0_2" start="2" end="2" type="bool"/>
219    <field name="cs_mask_one_byte_tile0_1" start="1" end="1" type="bool"/>
220    <field name="cs_mask_one_byte_tile0_0" start="0" end="0" type="bool"/>
221  </struct>
222
223  <!-- Labeling of fields within Byte Based Mask Two-Byte Word 0.
224       See ROGUE_IPF_PRIMITIVE_HEADER_SIPF2.cs_mask_num_bytes.
225  -->
226  <struct name="BYTE_BASED_MASK_TWO_BYTE_WORD_0_SIPF2" length="1">
227    <field name="cs_mask_two_byte_tile1_15" start="31" end="31" type="bool"/>
228    <field name="cs_mask_two_byte_tile1_14" start="30" end="30" type="bool"/>
229    <field name="cs_mask_two_byte_tile1_13" start="29" end="29" type="bool"/>
230    <field name="cs_mask_two_byte_tile1_12" start="28" end="28" type="bool"/>
231    <field name="cs_mask_two_byte_tile1_11" start="27" end="27" type="bool"/>
232    <field name="cs_mask_two_byte_tile1_10" start="26" end="26" type="bool"/>
233    <field name="cs_mask_two_byte_tile1_9" start="25" end="25" type="bool"/>
234    <field name="cs_mask_two_byte_tile1_8" start="24" end="24" type="bool"/>
235    <field name="cs_mask_two_byte_tile1_7" start="23" end="23" type="bool"/>
236    <field name="cs_mask_two_byte_tile1_6" start="22" end="22" type="bool"/>
237    <field name="cs_mask_two_byte_tile1_5" start="21" end="21" type="bool"/>
238    <field name="cs_mask_two_byte_tile1_4" start="20" end="20" type="bool"/>
239    <field name="cs_mask_two_byte_tile1_3" start="19" end="19" type="bool"/>
240    <field name="cs_mask_two_byte_tile1_2" start="18" end="18" type="bool"/>
241    <field name="cs_mask_two_byte_tile1_1" start="17" end="17" type="bool"/>
242    <field name="cs_mask_two_byte_tile1_0" start="16" end="16" type="bool"/>
243    <field name="cs_mask_two_byte_tile0_15" start="15" end="15" type="bool"/>
244    <field name="cs_mask_two_byte_tile0_14" start="14" end="14" type="bool"/>
245    <field name="cs_mask_two_byte_tile0_13" start="13" end="13" type="bool"/>
246    <field name="cs_mask_two_byte_tile0_12" start="12" end="12" type="bool"/>
247    <field name="cs_mask_two_byte_tile0_11" start="11" end="11" type="bool"/>
248    <field name="cs_mask_two_byte_tile0_10" start="10" end="10" type="bool"/>
249    <field name="cs_mask_two_byte_tile0_9" start="9" end="9" type="bool"/>
250    <field name="cs_mask_two_byte_tile0_8" start="8" end="8" type="bool"/>
251    <field name="cs_mask_two_byte_tile0_7" start="7" end="7" type="bool"/>
252    <field name="cs_mask_two_byte_tile0_6" start="6" end="6" type="bool"/>
253    <field name="cs_mask_two_byte_tile0_5" start="5" end="5" type="bool"/>
254    <field name="cs_mask_two_byte_tile0_4" start="4" end="4" type="bool"/>
255    <field name="cs_mask_two_byte_tile0_3" start="3" end="3" type="bool"/>
256    <field name="cs_mask_two_byte_tile0_2" start="2" end="2" type="bool"/>
257    <field name="cs_mask_two_byte_tile0_1" start="1" end="1" type="bool"/>
258    <field name="cs_mask_two_byte_tile0_0" start="0" end="0" type="bool"/>
259  </struct>
260
261  <!-- Labeling of fields within Byte Based Mask Two-Byte Word 1.
262       See ROGUE_IPF_PRIMITIVE_HEADER_SIPF2.cs_mask_num_bytes.
263  -->
264  <struct name="BYTE_BASED_MASK_TWO_BYTE_WORD_1_SIPF2" length="1">
265    <field name="cs_mask_two_byte_tile3_15" start="31" end="31" type="bool"/>
266    <field name="cs_mask_two_byte_tile3_14" start="30" end="30" type="bool"/>
267    <field name="cs_mask_two_byte_tile3_13" start="29" end="29" type="bool"/>
268    <field name="cs_mask_two_byte_tile3_12" start="28" end="28" type="bool"/>
269    <field name="cs_mask_two_byte_tile3_11" start="27" end="27" type="bool"/>
270    <field name="cs_mask_two_byte_tile3_10" start="26" end="26" type="bool"/>
271    <field name="cs_mask_two_byte_tile3_9" start="25" end="25" type="bool"/>
272    <field name="cs_mask_two_byte_tile3_8" start="24" end="24" type="bool"/>
273    <field name="cs_mask_two_byte_tile3_7" start="23" end="23" type="bool"/>
274    <field name="cs_mask_two_byte_tile3_6" start="22" end="22" type="bool"/>
275    <field name="cs_mask_two_byte_tile3_5" start="21" end="21" type="bool"/>
276    <field name="cs_mask_two_byte_tile3_4" start="20" end="20" type="bool"/>
277    <field name="cs_mask_two_byte_tile3_3" start="19" end="19" type="bool"/>
278    <field name="cs_mask_two_byte_tile3_2" start="18" end="18" type="bool"/>
279    <field name="cs_mask_two_byte_tile3_1" start="17" end="17" type="bool"/>
280    <field name="cs_mask_two_byte_tile3_0" start="16" end="16" type="bool"/>
281    <field name="cs_mask_two_byte_tile2_15" start="15" end="15" type="bool"/>
282    <field name="cs_mask_two_byte_tile2_14" start="14" end="14" type="bool"/>
283    <field name="cs_mask_two_byte_tile2_13" start="13" end="13" type="bool"/>
284    <field name="cs_mask_two_byte_tile2_12" start="12" end="12" type="bool"/>
285    <field name="cs_mask_two_byte_tile2_11" start="11" end="11" type="bool"/>
286    <field name="cs_mask_two_byte_tile2_10" start="10" end="10" type="bool"/>
287    <field name="cs_mask_two_byte_tile2_9" start="9" end="9" type="bool"/>
288    <field name="cs_mask_two_byte_tile2_8" start="8" end="8" type="bool"/>
289    <field name="cs_mask_two_byte_tile2_7" start="7" end="7" type="bool"/>
290    <field name="cs_mask_two_byte_tile2_6" start="6" end="6" type="bool"/>
291    <field name="cs_mask_two_byte_tile2_5" start="5" end="5" type="bool"/>
292    <field name="cs_mask_two_byte_tile2_4" start="4" end="4" type="bool"/>
293    <field name="cs_mask_two_byte_tile2_3" start="3" end="3" type="bool"/>
294    <field name="cs_mask_two_byte_tile2_2" start="2" end="2" type="bool"/>
295    <field name="cs_mask_two_byte_tile2_1" start="1" end="1" type="bool"/>
296    <field name="cs_mask_two_byte_tile2_0" start="0" end="0" type="bool"/>
297  </struct>
298
299  <!-- Labeling of fields within Byte Based Mask Three-Byte Word 0.
300       See ROGUE_IPF_PRIMITIVE_HEADER_SIPF2.cs_mask_num_bytes.
301  -->
302  <struct name="BYTE_BASED_MASK_THREE_BYTE_WORD_0_SIPF2" length="1">
303    <field name="cs_mask_three_byte_tile1_7" start="31" end="31" type="bool"/>
304    <field name="cs_mask_three_byte_tile1_6" start="30" end="30" type="bool"/>
305    <field name="cs_mask_three_byte_tile1_5" start="29" end="29" type="bool"/>
306    <field name="cs_mask_three_byte_tile1_4" start="28" end="28" type="bool"/>
307    <field name="cs_mask_three_byte_tile1_3" start="27" end="27" type="bool"/>
308    <field name="cs_mask_three_byte_tile1_2" start="26" end="26" type="bool"/>
309    <field name="cs_mask_three_byte_tile1_1" start="25" end="25" type="bool"/>
310    <field name="cs_mask_three_byte_tile1_0" start="24" end="24" type="bool"/>
311    <field name="cs_mask_three_byte_tile0_23" start="23" end="23" type="bool"/>
312    <field name="cs_mask_three_byte_tile0_22" start="22" end="22" type="bool"/>
313    <field name="cs_mask_three_byte_tile0_21" start="21" end="21" type="bool"/>
314    <field name="cs_mask_three_byte_tile0_20" start="20" end="20" type="bool"/>
315    <field name="cs_mask_three_byte_tile0_19" start="19" end="19" type="bool"/>
316    <field name="cs_mask_three_byte_tile0_18" start="18" end="18" type="bool"/>
317    <field name="cs_mask_three_byte_tile0_17" start="17" end="17" type="bool"/>
318    <field name="cs_mask_three_byte_tile0_16" start="16" end="16" type="bool"/>
319    <field name="cs_mask_three_byte_tile0_15" start="15" end="15" type="bool"/>
320    <field name="cs_mask_three_byte_tile0_14" start="14" end="14" type="bool"/>
321    <field name="cs_mask_three_byte_tile0_13" start="13" end="13" type="bool"/>
322    <field name="cs_mask_three_byte_tile0_12" start="12" end="12" type="bool"/>
323    <field name="cs_mask_three_byte_tile0_11" start="11" end="11" type="bool"/>
324    <field name="cs_mask_three_byte_tile0_10" start="10" end="10" type="bool"/>
325    <field name="cs_mask_three_byte_tile0_9" start="9" end="9" type="bool"/>
326    <field name="cs_mask_three_byte_tile0_8" start="8" end="8" type="bool"/>
327    <field name="cs_mask_three_byte_tile0_7" start="7" end="7" type="bool"/>
328    <field name="cs_mask_three_byte_tile0_6" start="6" end="6" type="bool"/>
329    <field name="cs_mask_three_byte_tile0_5" start="5" end="5" type="bool"/>
330    <field name="cs_mask_three_byte_tile0_4" start="4" end="4" type="bool"/>
331    <field name="cs_mask_three_byte_tile0_3" start="3" end="3" type="bool"/>
332    <field name="cs_mask_three_byte_tile0_2" start="2" end="2" type="bool"/>
333    <field name="cs_mask_three_byte_tile0_1" start="1" end="1" type="bool"/>
334    <field name="cs_mask_three_byte_tile0_0" start="0" end="0" type="bool"/>
335  </struct>
336
337  <!-- Labeling of fields within Byte Based Mask Three-Byte Word 1.
338       See ROGUE_IPF_PRIMITIVE_HEADER_SIPF2.cs_mask_num_bytes.
339  -->
340  <struct name="BYTE_BASED_MASK_THREE_BYTE_WORD_1_SIPF2" length="1">
341    <field name="cs_mask_three_byte_tile2_15" start="31" end="31" type="bool"/>
342    <field name="cs_mask_three_byte_tile2_14" start="30" end="30" type="bool"/>
343    <field name="cs_mask_three_byte_tile2_13" start="29" end="29" type="bool"/>
344    <field name="cs_mask_three_byte_tile2_12" start="28" end="28" type="bool"/>
345    <field name="cs_mask_three_byte_tile2_11" start="27" end="27" type="bool"/>
346    <field name="cs_mask_three_byte_tile2_10" start="26" end="26" type="bool"/>
347    <field name="cs_mask_three_byte_tile2_9" start="25" end="25" type="bool"/>
348    <field name="cs_mask_three_byte_tile2_8" start="24" end="24" type="bool"/>
349    <field name="cs_mask_three_byte_tile2_7" start="23" end="23" type="bool"/>
350    <field name="cs_mask_three_byte_tile2_6" start="22" end="22" type="bool"/>
351    <field name="cs_mask_three_byte_tile2_5" start="21" end="21" type="bool"/>
352    <field name="cs_mask_three_byte_tile2_4" start="20" end="20" type="bool"/>
353    <field name="cs_mask_three_byte_tile2_3" start="19" end="19" type="bool"/>
354    <field name="cs_mask_three_byte_tile2_2" start="18" end="18" type="bool"/>
355    <field name="cs_mask_three_byte_tile2_1" start="17" end="17" type="bool"/>
356    <field name="cs_mask_three_byte_tile2_0" start="16" end="16" type="bool"/>
357    <field name="cs_mask_three_byte_tile1_23" start="15" end="15" type="bool"/>
358    <field name="cs_mask_three_byte_tile1_22" start="14" end="14" type="bool"/>
359    <field name="cs_mask_three_byte_tile1_21" start="13" end="13" type="bool"/>
360    <field name="cs_mask_three_byte_tile1_20" start="12" end="12" type="bool"/>
361    <field name="cs_mask_three_byte_tile1_19" start="11" end="11" type="bool"/>
362    <field name="cs_mask_three_byte_tile1_18" start="10" end="10" type="bool"/>
363    <field name="cs_mask_three_byte_tile1_17" start="9" end="9" type="bool"/>
364    <field name="cs_mask_three_byte_tile1_16" start="8" end="8" type="bool"/>
365    <field name="cs_mask_three_byte_tile1_15" start="7" end="7" type="bool"/>
366    <field name="cs_mask_three_byte_tile1_14" start="6" end="6" type="bool"/>
367    <field name="cs_mask_three_byte_tile1_13" start="5" end="5" type="bool"/>
368    <field name="cs_mask_three_byte_tile1_12" start="4" end="4" type="bool"/>
369    <field name="cs_mask_three_byte_tile1_11" start="3" end="3" type="bool"/>
370    <field name="cs_mask_three_byte_tile1_10" start="2" end="2" type="bool"/>
371    <field name="cs_mask_three_byte_tile1_9" start="1" end="1" type="bool"/>
372    <field name="cs_mask_three_byte_tile1_8" start="0" end="0" type="bool"/>
373  </struct>
374
375  <!-- Labeling of fields within Byte Based Mask Three-Byte Word 2.
376       See ROGUE_IPF_PRIMITIVE_HEADER_SIPF2.cs_mask_num_bytes.
377  -->
378  <struct name="BYTE_BASED_MASK_THREE_BYTE_WORD_2_SIPF2" length="1">
379    <field name="cs_mask_three_byte_tile3_23" start="31" end="31" type="bool"/>
380    <field name="cs_mask_three_byte_tile3_22" start="30" end="30" type="bool"/>
381    <field name="cs_mask_three_byte_tile3_21" start="29" end="29" type="bool"/>
382    <field name="cs_mask_three_byte_tile3_20" start="28" end="28" type="bool"/>
383    <field name="cs_mask_three_byte_tile3_19" start="27" end="27" type="bool"/>
384    <field name="cs_mask_three_byte_tile3_18" start="26" end="26" type="bool"/>
385    <field name="cs_mask_three_byte_tile3_17" start="25" end="25" type="bool"/>
386    <field name="cs_mask_three_byte_tile3_16" start="24" end="24" type="bool"/>
387    <field name="cs_mask_three_byte_tile3_15" start="23" end="23" type="bool"/>
388    <field name="cs_mask_three_byte_tile3_14" start="22" end="22" type="bool"/>
389    <field name="cs_mask_three_byte_tile3_13" start="21" end="21" type="bool"/>
390    <field name="cs_mask_three_byte_tile3_12" start="20" end="20" type="bool"/>
391    <field name="cs_mask_three_byte_tile3_11" start="19" end="19" type="bool"/>
392    <field name="cs_mask_three_byte_tile3_10" start="18" end="18" type="bool"/>
393    <field name="cs_mask_three_byte_tile3_9" start="17" end="17" type="bool"/>
394    <field name="cs_mask_three_byte_tile3_8" start="16" end="16" type="bool"/>
395    <field name="cs_mask_three_byte_tile3_7" start="15" end="15" type="bool"/>
396    <field name="cs_mask_three_byte_tile3_6" start="14" end="14" type="bool"/>
397    <field name="cs_mask_three_byte_tile3_5" start="13" end="13" type="bool"/>
398    <field name="cs_mask_three_byte_tile3_4" start="12" end="12" type="bool"/>
399    <field name="cs_mask_three_byte_tile3_3" start="11" end="11" type="bool"/>
400    <field name="cs_mask_three_byte_tile3_2" start="10" end="10" type="bool"/>
401    <field name="cs_mask_three_byte_tile3_1" start="9" end="9" type="bool"/>
402    <field name="cs_mask_three_byte_tile3_0" start="8" end="8" type="bool"/>
403    <field name="cs_mask_three_byte_tile2_23" start="7" end="7" type="bool"/>
404    <field name="cs_mask_three_byte_tile2_22" start="6" end="6" type="bool"/>
405    <field name="cs_mask_three_byte_tile2_21" start="5" end="5" type="bool"/>
406    <field name="cs_mask_three_byte_tile2_20" start="4" end="4" type="bool"/>
407    <field name="cs_mask_three_byte_tile2_19" start="3" end="3" type="bool"/>
408    <field name="cs_mask_three_byte_tile2_18" start="2" end="2" type="bool"/>
409    <field name="cs_mask_three_byte_tile2_17" start="1" end="1" type="bool"/>
410    <field name="cs_mask_three_byte_tile2_16" start="0" end="0" type="bool"/>
411  </struct>
412
413  <struct name="COMPRESSION_SIZE_WORD" length="1">
414    <field name="cs_isp_comp_table_size" start="27" end="31" type="uint"/>
415    <field name="cs_tsp_comp_format_size" start="21" end="26" type="uint"/>
416    <field name="cs_tsp_comp_table_size" start="9" end="18" type="uint"/>
417    <field name="cs_tsp_comp_vertex_size" start="0" end="8" type="uint"/>
418  </struct>
419
420  <struct name="ISP_COMPRESSION_WORD_0" length="1">
421    <field name="cf_isp_comp_fmt_z1" start="28" end="31" type="COMPRESSION_FORMAT"/>
422    <field name="cf_isp_comp_fmt_z0" start="24" end="27" type="COMPRESSION_FORMAT"/>
423    <field name="cf_isp_comp_fmt_y2" start="20" end="23" type="COMPRESSION_FORMAT"/>
424    <field name="cf_isp_comp_fmt_y1" start="16" end="19" type="COMPRESSION_FORMAT"/>
425    <field name="cf_isp_comp_fmt_y0" start="12" end="15" type="COMPRESSION_FORMAT"/>
426    <field name="cf_isp_comp_fmt_x2" start="8" end="11" type="COMPRESSION_FORMAT"/>
427    <field name="cf_isp_comp_fmt_x1" start="4" end="7" type="COMPRESSION_FORMAT"/>
428    <field name="cf_isp_comp_fmt_x0" start="0" end="3" type="COMPRESSION_FORMAT"/>
429  </struct>
430
431  <struct name="ISP_COMPRESSION_WORD_1" length="1">
432    <field name="vf_prim_msaa" start="16" end="16" type="bool"/>
433    <field name="vf_prim_id_pres" start="15" end="15" type="bool"/>
434    <field name="vf_vertex_clipped" start="14" end="14" type="bool"/>
435    <field name="vf_vertex_total" start="8" end="13" type="uint"/>
436    <field name="cf_isp_comp_fmt_z3" start="4" end="7" type="COMPRESSION_FORMAT"/>
437    <field name="cf_isp_comp_fmt_z2" start="0" end="3" type="COMPRESSION_FORMAT"/>
438  </struct>
439
440  <struct name="INDEX_DATA" length="1">
441    <field name="ix_edge_flag1_ab" start="30" end="30" type="bool"/>
442    <field name="ix_index1_0" start="24" end="29" type="uint"/>
443    <field name="ix_bf_flag0" start="23" end="23" type="bool"/>
444    <field name="ix_edge_flag0_ca" start="22" end="22" type="bool"/>
445    <field name="ix_index0_2" start="16" end="21" type="uint"/>
446    <field name="ix_edge_flag0_bc" start="14" end="14" type="bool"/>
447    <field name="ix_index0_1" start="8" end="13" type="uint"/>
448    <field name="ix_edge_flag0_ab" start="6" end="6" type="bool"/>
449    <field name="ix_index0_0" start="0" end="5" type="uint"/>
450  </struct>
451
452  <!-- FIXME: This should be of 24 bit length. Should we change the length to
453       be in terms of uint8_t instead of uint32_t.
454  -->
455  <struct name="ISP_VERTEX_XY" length="1">
456    <field name="sign" start="23" end="23" type="bool"/>
457    <field name="integer" start="8" end="22" type="uint"/>
458    <field name="frac" start="0" end="7" type="uint"/>
459  </struct>
460
461  <!-- FIXME: This is the SIMPLE_INTERNAL_PARAMETER_FORMAT variant.
462       Should we use the "condition" tag for this?
463  -->
464  <struct name="ISP_VERTEX_XY_SIPF" length="1">
465    <field name="integer" start="4" end="16" type="uint">
466      <define name="MAX_VAL" value="0x1FFF"/>
467    </field>
468    <field name="frac" start="0" end="3" type="uint">
469      <define name="MAX_VAL" value="0xF"/>
470    </field>
471  </struct>
472
473  <!-- FIXME: This is only available with SIMPLE_INTERNAL_PARAMETER_FORMAT. -->
474  <struct name="ISP_VERTEX_WORD_SIPF" length="2">
475    <field name="z" start="34" end="63" type="uint"/>
476    <field name="y" start="17" end="33" type="uint"/>
477    <field name="x" start="0" end="16" type="uint"/>
478  </struct>
479
480  <struct name="ISP_VERTEX_WORD_0" length="1">
481    <field name="y0" start="24" end="31" type="uint"/>
482    <field name="x0" start="0" end="23" type="uint"/>
483  </struct>
484
485  <struct name="ISP_VERTEX_WORD_1" length="1">
486    <field name="z0" start="16" end="31" type="uint"/>
487    <field name="y0" start="0" end="15" type="uint">
488      <define name="SHIFT" value="8"/>
489    </field>
490  </struct>
491
492  <struct name="ISP_VERTEX_WORD_2" length="1">
493    <field name="x1" start="16" end="31" type="uint"/>
494    <field name="z0" start="0" end="15" type="uint">
495      <define name="SHIFT" value="16"/>
496    </field>
497  </struct>
498
499  <struct name="ISP_VERTEX_WORD_3" length="1">
500    <field name="y1" start="8" end="31" type="uint"/>
501    <field name="x1" start="0" end="7" type="uint">
502      <define name="SHIFT" value="16"/>
503    </field>
504  </struct>
505
506  <struct name="ISP_VERTEX_WORD_4" length="1">
507    <field name="z1" start="0" end="31" type="uint"/>
508  </struct>
509
510</csbgen>
511