xref: /aosp_15_r20/external/mesa3d/src/imagination/csbgen/rogue_cr.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="CR">
27
28  <define name="PM_VHEAP_TABLE_SIZE" value="0x180" />
29
30  <enum name="COMP_IADDR_TYPE">
31    <value name="INDIRECT_1TILE" value="0"/>
32    <value name="INDIRECT_4TILE" value="1"/>
33  </enum>
34
35  <enum name="COMPRESS_SIZE">
36    <value name="BLOCK_8X8"  value="0"/>
37    <value name="BLOCK_16X4" value="1"/>
38  </enum>
39
40  <enum name="DIR_TYPE">
41    <value name="TL2BR" value="0"/>
42    <value name="TR2BL" value="1"/>
43    <value name="BL2TR" value="2"/>
44    <value name="BR2TL" value="3"/>
45  </enum>
46
47  <enum name="ISP_AA_MODE_TYPE">
48    <value name="AA_NONE" value="0"/>
49    <value name="AA_2X"   value="1"/>
50    <value name="AA_4X"   value="2"/>
51    <value name="AA_8X"   value="3"/>
52  </enum>
53
54  <enum name="ISP_RENDER_MODE_TYPE">
55    <value name="NORM"       value="0"/>
56    <value name="FAST_2D"    value="2"/>
57    <value name="FAST_SCALE" value="3"/>
58  </enum>
59
60  <enum name="MEMLAYOUT">
61    <value name="LINEAR"     value="0"/>
62    <value name="TWIDDLE_2D" value="1"/>
63    <value name="TWIDDLE_3D" value="2"/>
64    <value name="TILED"      value="3"/>
65  </enum>
66
67  <enum name="MODE_TYPE">
68    <value name="DX9"  value="0"/>
69    <value name="DX10" value="1"/>
70    <value name="OGL"  value="2"/>
71  </enum>
72
73  <enum name="PIPE_NUM">
74    <value name="PIPE_ONE"      value="0"/>
75    <value name="PIPE_TWO"      value="1"/>
76    <value name="PIPE_THREE"    value="2"/>
77    <value name="PIPE_FOUR"     value="3"/>
78    <value name="PIPE_FIVE"     value="4"/>
79    <value name="PIPE_SIX"      value="5"/>
80    <value name="PIPE_SEVEN"    value="6"/>
81    <value name="PIPE_EIGHT"    value="7"/>
82    <value name="PIPE_NINE"     value="8"/>
83    <value name="PIPE_TEN"      value="9"/>
84    <value name="PIPE_ELEVEN"   value="10"/>
85    <value name="PIPE_TWELVE"   value="11"/>
86    <value name="PIPE_THIRTEEN" value="12"/>
87    <value name="PIPE_FOURTEEN" value="13"/>
88    <value name="PIPE_FIFTEEN"  value="14"/>
89    <value name="PIPE_SIXTEEN"  value="15"/>
90  </enum>
91
92  <enum name="PIXEL_WIDTH">
93    <value name="2REGISTERS" value="0"/>
94    <value name="4REGISTERS" value="1"/>
95    <value name="8REGISTERS" value="2"/>
96    <value name="1REGISTER"  value="3"/>
97  </enum>
98
99  <enum name="ROTATION_TYPE">
100    <value name="0_DEG"   value="0"/>
101    <value name="90_DEG"  value="1"/>
102    <value name="180_DEG" value="2"/>
103    <value name="270_DEG" value="3"/>
104  </enum>
105
106  <enum name="SIZE">
107    <value name="1_PIXEL"   value="0"/>
108    <value name="2_PIXEL"   value="1"/>
109    <value name="4_PIXEL"   value="2"/>
110    <value name="8_PIXEL"   value="3"/>
111    <value name="16_PIXEL"  value="4"/>
112    <value name="32_PIXEL"  value="5"/>
113    <value name="64_PIXEL"  value="6"/>
114    <value name="128_PIXEL" value="7"/>
115    <value name="256_PIXEL" value="8"/>
116    <value name="512_PIXEL" value="9"/>
117    <value name="1K_PIXEL"  value="10"/>
118    <value name="2K_PIXEL"  value="11"/>
119    <value name="4K_PIXEL"  value="12"/>
120    <value name="8K_PIXEL"  value="13"/>
121    <value name="16K_PIXEL" value="14"/>
122  </enum>
123
124  <enum name="SWIZ">
125    <value name="SOURCE_CHAN0" value="0"/>
126    <value name="SOURCE_CHAN1" value="1"/>
127    <value name="SOURCE_CHAN2" value="2"/>
128    <value name="SOURCE_CHAN3" value="3"/>
129    <value name="ONE"          value="4"/>
130    <value name="ZERO"         value="5"/>
131  </enum>
132
133  <enum name="TFBC_LOSSY">
134    <value name="LOSSLESS" value="0"/>
135    <value name="LOSSY_75" value="1"/>
136    <value name="LOSSY_50" value="2"/>
137    <value name="LOSSY_25" value="3"/>
138  </enum>
139
140  <enum name="TWOCOMP_GAMMA">
141    <value name="GAMMA_BOTTOM_CHANNEL" value="0"/>
142    <value name="GAMMA_BOTH_CHANNELS"  value="1"/>
143  </enum>
144
145  <enum name="ZLS_FORMAT_TYPE">
146    <!-- Separate depth and stencil -->
147    <value name="F32Z"     value="0"/>
148    <!-- Packed depth and stencil -->
149    <value name="24BITINT" value="1"/>
150    <!-- Separate depth and stencil -->
151    <value name="16BITINT" value="2"/>
152    <!-- Packed depth and stencil -->
153    <value name="F64Z"     value="3"/>
154  </enum>
155
156  <struct name="PM_MTILE_ARRAY" length="2">
157    <field name="base_addr" start="4" end="39" shift="4" type="address"/>
158  </struct>
159
160  <struct name="PM_VHEAP_TABLE" length="2">
161    <field name="base_addr" start="4" end="39" shift="4" type="address"/>
162  </struct>
163
164  <struct name="PM_MLIST0_BASE" length="2">
165    <field name="addr" start="4" end="39" shift="4" type="address"/>
166  </struct>
167
168  <struct name="VDM_CTRL_STREAM_BASE" length="2">
169    <field name="addr" start="2" end="39" shift="2" type="address"/>
170  </struct>
171
172  <struct name="VDM_CALL_STACK_POINTER" length="2">
173    <field name="addr" start="3" end="39" shift="3" type="address"/>
174  </struct>
175
176  <struct name="VDM_CONTEXT_STATE_BASE" length="2">
177    <field name="addr" start="4" end="39" shift="4" type="address"/>
178  </struct>
179
180  <struct name="VDM_CONTEXT_STORE_TASK0" length="2">
181    <field name="pds_state1" start="32" end="63" type="uint"/>
182    <field name="pds_state0" start="0" end="31" type="uint"/>
183  </struct>
184
185  <struct name="VDM_CONTEXT_STORE_TASK1" length="1">
186    <field name="pds_state2" start="0" end="31" type="uint"/>
187  </struct>
188
189  <struct name="VDM_CONTEXT_STORE_TASK2" length="2">
190    <field name="stream_out2" start="32" end="63" type="uint"/>
191    <field name="stream_out1" start="0" end="31" type="uint"/>
192  </struct>
193
194  <struct name="VDM_CONTEXT_RESUME_TASK0" length="2">
195    <field name="pds_state1" start="32" end="63" type="uint"/>
196    <field name="pds_state0" start="0" end="31" type="uint"/>
197  </struct>
198
199  <struct name="VDM_CONTEXT_RESUME_TASK1" length="1">
200    <field name="pds_state2" start="0" end="31" type="uint"/>
201  </struct>
202
203  <struct name="VDM_CONTEXT_RESUME_TASK2" length="2">
204    <field name="stream_out2" start="32" end="63" type="uint"/>
205    <field name="stream_out1" start="0" end="31" type="uint"/>
206  </struct>
207
208  <struct name="CDM_CONTEXT_STATE_BASE" length="2">
209    <field name="addr" start="4" end="39" shift="4" type="address"/>
210  </struct>
211
212  <struct name="CDM_CONTEXT_PDS0" length="2">
213    <field name="data_addr" start="36" end="63" shift="4" type="address"/>
214    <field name="code_addr" start="4" end="31" shift="4" type="address"/>
215  </struct>
216
217  <struct name="CDM_CTRL_STREAM_BASE" length="2">
218    <field name="addr" start="2" end="39" shift="2" type="address"/>
219  </struct>
220
221  <struct name="CDM_CONTEXT_PDS1" length="1">
222    <field name="pds_seq_dep" start="29" end="29" type="bool"/>
223    <field name="usc_seq_dep" start="28" end="28" type="bool"/>
224    <!-- false=All, true=Any -->
225    <field name="target" start="27" end="27" type="bool"/>
226    <field name="unified_size" start="21" end="26" type="uint"/>
227    <field name="common_shared" start="20" end="20" type="bool"/>
228    <field name="common_size" start="11" end="19" type="uint">
229      <define name="UNIT_SIZE" value="64"/>
230    </field>
231    <field name="temp_size" start="7" end="10" type="uint"/>
232    <field name="data_size" start="1" end="6" type="uint">
233      <define name="UNIT_SIZE" value="16"/>
234    </field>
235    <field name="fence" start="0" end="0" type="bool"/>
236  </struct>
237
238  <struct name="CDM_TERMINATE_PDS" length="2">
239    <field name="data_addr" start="36" end="63" shift="4" type="address"/>
240    <field name="code_addr" start="4" end="31" shift="4" type="address"/>
241  </struct>
242
243  <struct name="CDM_TERMINATE_PDS1" length="1">
244    <field name="pds_seq_dep" start="29" end="29" type="bool"/>
245    <field name="usc_seq_dep" start="28" end="28" type="bool"/>
246    <field name="target" start="27" end="27" type="bool"/>
247    <field name="unified_size" start="21" end="26" type="uint"/>
248    <field name="common_shared" start="20" end="20" type="bool"/>
249    <field name="common_size" start="11" end="19" type="uint"/>
250    <field name="temp_size" start="7" end="10" type="uint"/>
251    <field name="data_size" start="1" end="6" type="uint"/>
252    <field name="fence" start="0" end="0" type="bool"/>
253  </struct>
254
255  <struct name="CDM_CONTEXT_LOAD_PDS0" length="2">
256    <field name="data_addr" start="36" end="63" shift="4" type="address"/>
257    <field name="code_addr" start="4" end="31" shift="4" type="address"/>
258  </struct>
259
260  <struct name="COMPUTE_CLUSTER" length="1">
261    <field name="mask" start="0" end="31" type="uint"/>
262  </struct>
263
264  <struct name="CDM_ITEM" length="1">
265    <field name="mode" start="0" end="1" type="uint"/>
266  </struct>
267
268  <struct name="PDS_CTRL0" length="1">
269    <condition type="if" check="ROGUEXE"/>
270      <condition type="if" check="COMPUTE"/>
271        <field name="roguexe_max_num_cdm_tasks" start="24" end="31" type="uint"/>
272      <condition type="endif" check="COMPUTE"/>
273      <condition type="if" check="NUM_RASTER_PIPES &gt; 0"/>
274        <field name="roguexe_max_num_pdm_tasks" start="16" end="23" type="uint"/>
275      <condition type="endif" check="NUM_RASTER_PIPES &gt; 0"/>
276      <condition type="if" check="NUM_TA &gt; 0"/>
277        <field name="roguexe_max_num_vdm_tasks" start="8" end="15" type="uint"/>
278      <condition type="endif" check="NUM_TA &gt; 0"/>
279    <condition type="else" check="ROGUEXE"/>
280      <condition type="if" check="COMPUTE"/>
281        <field name="max_num_cdm_tasks" start="24" end="30" type="uint"/>
282      <condition type="endif" check="COMPUTE"/>
283      <field name="max_num_pdm_tasks" start="16" end="22" type="uint"/>
284      <field name="max_num_vdm_tasks" start="8" end="14" type="uint"/>
285    <condition type="endif" check="ROGUEXE"/>
286  </struct>
287
288  <struct name="PDS_CTRL1" length="1">
289    <field name="sm_overlap_enable" start="23" end="23" type="bool"/>
290  </struct>
291
292  <struct name="EVENT_PIXEL_PDS_CODE" length="1">
293    <field name="addr" start="4" end="31" shift="4" type="address"/>
294  </struct>
295
296  <struct name="EVENT_PIXEL_PDS_DATA" length="1">
297    <!-- This is an offset actually. Note for when we auto-generate the xmls. -->
298    <field name="addr" start="4" end="31" shift="4" type="address"/>
299  </struct>
300
301  <struct name="EVENT_PIXEL_PDS_INFO" length="1">
302    <field name="usc_sr_size" start="9" end="14" type="uint">
303      <define name="UNIT_SIZE" value="16"/>
304    </field>
305    <field name="temp_stride" start="5" end="8" type="uint">
306      <define name="UNIT_SIZE" value="4"/>
307    </field>
308    <field name="const_size" start="0" end="4" type="uint">
309      <define name="UNIT_SIZE" value="4"/>
310    </field>
311  </struct>
312
313  <struct name="PDS_BGRND0_BASE" length="2">
314    <!-- This is an offset actually. Note for when we auto-generate the xmls. -->
315    <field name="texunicode_addr" start="36" end="63" shift="4" type="address"/>
316    <!-- This is an offset actually. Note for when we auto-generate the xmls. -->
317    <field name="shader_addr" start="4" end="31" shift="4" type="address"/>
318  </struct>
319
320  <struct name="PDS_BGRND1_BASE" length="2">
321    <!-- This is an offset actually. Note for when we auto-generate the xmls. -->
322    <field name="texturedata_addr" start="36" end="63" shift="4" type="address"/>
323    <!-- Unused in the Vulkan driver. -->
324    <field name="varying_addr" start="4" end="31" shift="4" type="address"/>
325  </struct>
326
327  <struct name="PDS_BGRND2_BASE" length="2">
328    <!-- This is an offset actually. Note for when we auto-generate the xmls. -->
329    <field name="uniformdata_addr" start="4" end="31" shift="4" type="address"/>
330  </struct>
331
332  <struct name="PDS_BGRND3_SIZEINFO" length="2">
333    <field name="usc_sharedsize" start="55" end="63" type="uint">
334      <define name="UNIT_SIZE" value="16"/>
335    </field>
336    <field name="pds_batchnum" start="32" end="45" type="uint"/>
337    <field name="pds_uniformsize" start="23" end="31" type="uint">
338      <define name="UNIT_SIZE" value="4"/>
339    </field>
340    <field name="pds_texturestatesize" start="16" end="22" type="uint">
341      <define name="UNIT_SIZE" value="4"/>
342    </field>
343    <field name="pds_varyingsize" start="10" end="15" type="uint">
344      <define name="UNIT_SIZE" value="4"/>
345    </field>
346    <field name="usc_varyingsize" start="4" end="9" type="uint">
347      <define name="UNIT_SIZE" value="16"/>
348    </field>
349    <field name="pds_tempsize" start="0" end="3" type="uint">
350      <define name="UNIT_SIZE" value="4"/>
351    </field>
352  </struct>
353
354  <struct name="TE_AA" length="1">
355    <condition type="if" check="SIMPLE_INTERNAL_PARAMETER_FORMAT &amp;&amp; ISP_SAMPLES_PER_PIXEL &gt; 2"/>
356      <field name="y2" start="3" end="3" type="bool"/>
357    <condition type="endif" check="SIMPLE_INTERNAL_PARAMETER_FORMAT &amp;&amp; ISP_SAMPLES_PER_PIXEL &gt; 2"/>
358    <field name="y" start="2" end="2" type="bool"/>
359    <field name="x" start="1" end="1" type="bool"/>
360    <field name="x2" start="0" end="0" type="bool"/>
361  </struct>
362
363  <struct name="TE_MTILE1" length="1">
364    <field name="x1" start="18" end="26" type="uint"/>
365    <field name="x2" start="9" end="17" type="uint"/>
366    <field name="x3" start="0" end="8" type="uint"/>
367  </struct>
368
369  <struct name="TE_MTILE2" length="1">
370    <field name="y1" start="18" end="26" type="uint"/>
371    <field name="y2" start="9" end="17" type="uint"/>
372    <field name="y3" start="0" end="8" type="uint"/>
373  </struct>
374
375  <struct name="TE_SCREEN" length="1">
376    <field name="ymax" start="12" end="20" type="uint"/>
377    <field name="xmax" start="0" end="8" type="uint"/>
378  </struct>
379
380  <struct name="TE_PSG" length="1">
381    <condition type="if" check="ROGUEXE"/>
382      <condition type="if" check="TILE_REGION_PROTECTION"/>
383        <field name="force_protect" start="22" end="22" type="uint"/>
384      <condition type="endif" check="TILE_REGION_PROTECTION"/>
385      <field name="cs_size" start="21" end="21" type="uint"/>
386      <field name="enable_pwr_gate_state" start="20" end="20" type="bool"/>
387    <condition type="endif" check="ROGUEXE"/>
388    <field name="enable_context_state_restore" start="19" end="19" type="bool"/>
389    <field name="zonlyrender" start="18" end="18" type="bool"/>
390    <field name="completeonterminate" start="17" end="17" type="bool"/>
391    <field name="cache_bypass" start="14" end="14" type="bool"/>
392    <field name="forcenewstate" start="13" end="13" type="bool"/>
393    <field name="region_stride" start="0" end="10" type="uint">
394      <define name="UNIT_SIZE" value="4096"/>
395    </field>
396  </struct>
397
398  <!-- FIXME: This is only a partial definition as (at the time of writing)
399       csbgen doesn't support multiple address fields within structure.
400  -->
401  <!-- FIXME: When csbgen supports conditional structs, make this
402       conditional on NUM_TA > 0.
403  -->
404  <struct name="TE_PSGREGION_ADDR" length="2">
405    <field name="base" start="6" end="33" shift="6" type="address"/>
406  </struct>
407
408  <!-- FIXME: This is only a partial definition as (at the time of writing)
409       csbgen doesn't support multiple address fields within structure.
410  -->
411  <struct name="TE_TPC_ADDR" length="2">
412    <field name="base" start="6" end="33" shift="6" type="address"/>
413  </struct>
414
415  <struct name="PPP_MULTISAMPLECTL" length="2">
416    <condition type="if" check="MAX_MULTISAMPLE == 8"/>
417      <field name="msaa_y7" start="60" end="63" type="uint"/>
418      <field name="msaa_x7" start="56" end="59" type="uint"/>
419      <field name="msaa_y6" start="52" end="55" type="uint"/>
420      <field name="msaa_x6" start="48" end="51" type="uint"/>
421      <field name="msaa_y5" start="44" end="47" type="uint"/>
422      <field name="msaa_x5" start="40" end="43" type="uint"/>
423      <field name="msaa_y4" start="36" end="39" type="uint"/>
424      <field name="msaa_x4" start="32" end="35" type="uint"/>
425    <condition type="endif" check="MAX_MULTISAMPLE == 8"/>
426    <field name="msaa_y3" start="28" end="31" type="uint"/>
427    <field name="msaa_x3" start="24" end="27" type="uint"/>
428    <field name="msaa_y2" start="20" end="23" type="uint"/>
429    <field name="msaa_x2" start="16" end="19" type="uint"/>
430    <field name="msaa_y1" start="12" end="15" type="uint"/>
431    <field name="msaa_x1" start="8" end="11" type="uint"/>
432    <field name="msaa_y0" start="4" end="7" type="uint"/>
433    <field name="msaa_x0" start="0" end="3" type="uint"/>
434  </struct>
435
436  <struct name="PPP_CTRL" length="1">
437    <field name="vpt_scissor" start="12" end="12" type="bool"/>
438    <field name="flush_mode" start="11" end="11" type="uint"/>
439    <field name="bfcull_restrict_clip" start="10" end="10" type="bool"/>
440    <field name="fixed_point_format" start="9" end="9" type="uint"/>
441    <field name="default_point_size" start="8" end="8" type="bool"/>
442    <field name="bfcull1_disable" start="7" end="7" type="bool"/>
443    <field name="bfcull2_disable" start="6" end="6" type="bool"/>
444    <field name="fccull_disable" start="5" end="5" type="bool"/>
445    <field name="oscull_disable" start="4" end="4" type="bool"/>
446    <field name="socull_disable" start="2" end="2" type="bool"/>
447    <field name="wclampen" start="1" end="1" type="bool"/>
448    <field name="opengl" start="0" end="0" type="bool"/>
449  </struct>
450
451  <struct name="PPP_SCREEN" length="1">
452    <field name="pixymax" start="16" end="30" type="uint"/>
453    <field name="pixxmax" start="0" end="14" type="uint"/>
454  </struct>
455
456  <!-- FIXME: This is only a partial definition as (at the time of writing)
457       csbgen doesn't support multiple address fields within structure.
458  -->
459  <struct name="TA_RTC_ADDR" length="2">
460    <field name="base" start="6" end="33" shift="6" type="address"/>
461  </struct>
462
463  <struct name="TA_CONTEXT_STATE_BASE" length="2">
464    <field name="addr" start="4" end="39" shift="4" type="address"/>
465  </struct>
466
467  <struct name="ISP_RENDER" length="1">
468    <field name="disable_eomt" start="5" end="5" type="bool"/>
469    <field name="resume" start="4" end="4" type="bool"/>
470    <field name="dir_type" start="2" end="3" type="DIR_TYPE"/>
471    <field name="mode_type" start="0" end="1" type="ISP_RENDER_MODE_TYPE"/>
472  </struct>
473
474  <struct name="ISP_RENDER_ORIGIN" length="1">
475    <field name="x" start="16" end="25" type="uint"/>
476    <field name="y" start="0" end="9" type="uint"/>
477  </struct>
478
479  <struct name="ISP_MTILE_BASE" length="2">
480    <field name="addr" start="2" end="39" shift="2" type="address"/>
481  </struct>
482
483  <struct name="ISP_MTILE_SIZE" length="1">
484    <field name="x" start="16" end="25" type="uint"/>
485    <field name="y" start="0" end="9" type="uint"/>
486  </struct>
487
488  <struct name="ISP_RGN" length="1">
489    <field name="size" start="0" end="23" type="uint">
490      <define name="UNIT_SIZE" value="4"/>
491    </field>
492  </struct>
493
494  <!-- FIXME: This is the SIMPLE_INTERNAL_PARAMETER_FORMAT variant.
495       Should we use the "condition" tag for this?
496  -->
497  <struct name="ISP_RGN_SIPF" length="1">
498    <condition type="if" check="IPF_CREQ_PF"/>
499      <!-- FIXME: This should have a default value of 0x1F not setting it since
500        csbgen doesn't check if the feature is present or not so this will
501        be set even when the feature is not present.
502      -->
503      <field name="cs_size_ipf_creq_pf" start="24" end="28" type="uint">
504        <define name="MAX" value="31"/>
505      </field>
506    <condition type="endif" check="IPF_CREQ_PF"/>
507    <field name="size" start="0" end="23" type="uint">
508      <!-- Note that this differs from ISP_RGN. -->
509      <define name="UNIT_SIZE" value="1"/>
510    </field>
511  </struct>
512
513  <struct name="ISP_BGOBJDEPTH" length="1">
514    <field name="value" start="0" end="31" type="uint"/>
515  </struct>
516
517  <struct name="ISP_BGOBJVALS" length="1">
518    <field name="enablebgtag" start="9" end="9" type="bool"/>
519    <field name="mask" start="8" end="8" type="bool"/>
520    <field name="stencil" start="0" end="7" type="uint"/>
521  </struct>
522
523  <struct name="ISP_AA" length="1">
524    <field name="mode" start="0" end="1" type="ISP_AA_MODE_TYPE" default="AA_NONE"/>
525  </struct>
526
527  <struct name="ISP_CTL" length="1">
528    <field name="skip_init_hdrs" start="31" end="31" type="bool"/>
529    <field name="line_style" start="30" end="30" type="bool"/>
530    <field name="line_style_pix" start="29" end="29" type="bool"/>
531    <field name="pair_tiles_vert" start="28" end="28" type="bool"/>
532    <field name="pair_tiles" start="27" end="27" type="bool"/>
533    <field name="creq_buf_en" start="26" end="26" type="bool"/>
534    <field name="tile_age_en" start="25" end="25" type="bool"/>
535    <field name="isp_sample_pos_mode" start="23" end="24" type="MODE_TYPE"/>
536    <field name="num_tiles_per_usc" start="21" end="22" type="uint"/>
537    <field name="dbias_is_int" start="20" end="20" type="bool"/>
538    <field name="overlap_check_mode" start="19" end="19" type="bool"/>
539    <field name="pt_upfront_depth_disable" start="18" end="18" type="bool"/>
540    <field name="process_empty_tiles" start="17" end="17" type="bool"/>
541    <field name="sample_pos" start="16" end="16" type="bool"/>
542    <field name="pipe_enable" start="12" end="15" type="PIPE_NUM"/>
543    <field name="valid_id" start="4" end="9" type="uint"/>
544    <field name="upass_start" start="0" end="3" type="uint">
545      <define name="SIZE_MAX" value="15"/>
546    </field>
547  </struct>
548
549  <struct name="ISP_ZLSCTL" length="2">
550    <field name="zlsextent_y_s" start="48" end="57" type="uint"/>
551    <field name="zlsextent_x_s" start="38" end="47" type="uint"/>
552    <field name="stencil_extent_enable" start="37" end="37" type="bool"/>
553    <field name="zlsextent_y_z" start="27" end="36" type="uint"/>
554    <field name="zstoreformat" start="25" end="26" type="ZLS_FORMAT_TYPE"/>
555    <field name="zloadformat" start="23" end="24" type="ZLS_FORMAT_TYPE"/>
556    <field name="fb_storeen" start="22" end="22" type="bool"/>
557    <field name="fb_loaden" start="21" end="21" type="bool"/>
558    <field name="mstoreen" start="20" end="20" type="bool"/>
559    <field name="zstoreen" start="19" end="19" type="bool"/>
560    <field name="sstoreen" start="18" end="18" type="bool"/>
561    <field name="storetwiddled" start="17" end="17" type="bool"/>
562    <field name="mloaden" start="16" end="16" type="bool"/>
563    <field name="zloaden" start="15" end="15" type="bool"/>
564    <field name="sloaden" start="14" end="14" type="bool"/>
565    <field name="loadtwiddled" start="13" end="13" type="bool"/>
566    <field name="zlsextent_x_z" start="3" end="12" type="uint"/>
567    <field name="forcezstore" start="2" end="2" type="bool"/>
568    <field name="forcezload" start="1" end="1" type="bool"/>
569    <field name="zonlyrender" start="0" end="0" type="bool"/>
570  </struct>
571
572  <struct name="ISP_ZLOAD_BASE" length="2">
573    <field name="addr" start="4" end="39" shift="4" type="address"/>
574  </struct>
575
576  <struct name="ISP_STENCIL_LOAD_BASE" length="2">
577    <field name="addr" start="4" end="39" shift="4" type="address"/>
578    <field name="enable" start="0" end="0" type="bool"/>
579  </struct>
580
581  <struct name="ISP_SCISSOR_BASE" length="2">
582    <field name="addr" start="2" end="39" shift="2" type="address"/>
583  </struct>
584
585  <struct name="ISP_DBIAS_BASE" length="2">
586    <field name="addr" start="2" end="39" shift="2" type="address"/>
587  </struct>
588
589  <struct name="ISP_OCLQRY_BASE" length="2">
590    <field name="addr" start="4" end="39" shift="4" type="address"/>
591  </struct>
592
593  <struct name="ISP_ZLS_PIXELS" length="1">
594    <field name="y" start="15" end="29" type="uint"/>
595    <field name="x" start="0" end="14" type="uint"/>
596  </struct>
597
598  <struct name="PBE_WORD0_MRT0" length="2">
599    <condition type="if" check="TFBC"/>
600      <field name="tfbc_lossy" start="62" end="63" type="TFBC_LOSSY"/>
601    <condition type="endif" check="TFBC"/>
602    <field name="x_rsrvd" start="63" end="63" type="bool"/>
603    <field name="pair_tiles" start="60" end="60" type="uint"/>
604    <field name="comp_iaddr_mode" start="60" end="60" type="COMP_IADDR_TYPE"/>
605    <field name="x_rsrvd2" start="59" end="59" type="bool"/>
606    <field name="comp_cor_enable" start="59" end="59" type="bool"/>
607    <field name="dither" start="58" end="58" type="bool"/>
608    <field name="tilerelative" start="57" end="57" type="bool"/>
609    <field name="downscale" start="56" end="56" type="bool"/>
610    <field name="size_z" start="52" end="55" type="SIZE"/>
611    <field name="rotation" start="50" end="51" type="ROTATION_TYPE"/>
612    <field name="linestride" start="34" end="49" type="uint">
613      <define name="ALIGNMENT" value="2"/>
614    </field>
615    <field name="memlayout" start="32" end="33" type="MEMLAYOUT"/>
616    <field name="swiz_chan3" start="29" end="31" type="SWIZ"/>
617    <field name="swiz_chan2" start="26" end="28" type="SWIZ"/>
618    <field name="swiz_chan1" start="23" end="25" type="SWIZ"/>
619    <field name="swiz_chan0" start="20" end="22" type="SWIZ"/>
620    <field name="minclip_x" start="6" end="19" type="uint"/>
621    <field name="twocomp_gamma" start="5" end="5" type="TWOCOMP_GAMMA"/>
622    <field name="gamma" start="4" end="4" type="bool"/>
623    <field name="compression" start="3" end="3" type="bool"/>
624    <field name="compress_size" start="2" end="2" type="COMPRESS_SIZE"/>
625    <field name="comp_indirect_table" start="1" end="1" type="bool"/>
626    <condition type="if" check="PBE_YFLIP"/>
627      <field name="y_flip" start="0" end="0" type="bool"/>
628    <condition type="endif" check="PBE_YFLIP"/>
629  </struct>
630
631  <struct name="FRAG_SCREEN" length="1">
632    <field name="ymax" start="16" end="30" type="uint"/>
633    <field name="xmax" start="0" end="14" type="uint"/>
634  </struct>
635
636  <struct name="TPU" length="1">
637    <condition type="if" check="PDSL0SIZE &gt; 0"/>
638      <field name="mcu_pds_l0_off" start="8" end="8" type="bool"/>
639    <condition type="endif" check="PDSL0SIZE &gt; 0"/>
640    <condition type="if" check="TPU_CEM_DATAMASTER_GLOBAL_REGISTERS"/>
641      <field name="tag_cem_64_face_packing" start="7" end="7" type="bool"/>
642    <condition type="endif" check="TPU_CEM_DATAMASTER_GLOBAL_REGISTERS"/>
643    <field name="tag_enable_mmu_prefetch" start="6" end="6" type="bool"/>
644    <field name="tag_cem_4k_face_packing" start="5" end="5" type="bool"/>
645    <field name="madd_config_l0off" start="4" end="4" type="bool"/>
646    <field name="tag_cem_face_packing" start="3" end="3" type="bool"/>
647    <field name="tag_cemedge_dontfilter" start="2" end="2" type="bool"/>
648    <condition type="if" check="TPU_CEM_USG_NORMALISATION"/>
649      <field name="tag_cemgrad_dontnegate" start="1" end="1" type="bool"/>
650    <condition type="endif" check="TPU_CEM_USG_NORMALISATION"/>
651    <field name="madd_config_dxt35_transovr" start="0" end="0" type="bool"/>
652  </struct>
653
654  <struct name="TPU_BORDER_COLOUR_TABLE_PDM" length="2">
655    <field name="border_colour_table_address" start="0" end="37" shift="2" type="address"/>
656  </struct>
657
658  <struct name="TPU_BORDER_COLOUR_TABLE_VDM" length="2">
659    <field name="border_colour_table_address" start="0" end="37" shift="2" type="address"/>
660  </struct>
661
662  <struct name="TPU_BORDER_COLOUR_TABLE_CDM" length="2">
663    <field name="border_colour_table_address" start="0" end="37" shift="2" type="address"/>
664  </struct>
665
666  <!-- FIXME: This register depends on TPU_DM_GLOBAL_REGISTERS. -->
667  <struct name="TPU_TAG_CDM_CTRL" length="1">
668    <field name="af_ratio_truncate_to_integer" start="3" end="3" type="bool"/>
669    <field name="af_ratio_truncate_to_half" start="2" end="2" type="bool"/>
670    <field name="af_filtering_mode" start="1" end="1" type="bool"/>
671    <field name="yuv_cam_invalidate" start="0" end="0" type="bool"/>
672  </struct>
673
674  <struct name="USC_PIXEL_OUTPUT_CTRL" length="1">
675    <field name="partition_mask" start="3" end="20" type="uint"/>
676    <field name="enable_4th_partition" start="2" end="2" type="bool"/>
677    <field name="width" start="0" end="1" type="PIXEL_WIDTH"/>
678  </struct>
679
680  <struct name="USC_CLEAR_REGISTER" length="1">
681    <field name="val" start="0" end="31" type="uint"/>
682  </struct>
683
684  <!-- FIXME: When csbgen supports conditional structs, make this conditional
685       on FB_CDC.
686  -->
687  <struct name="FB_CDC_ZLS" length="2">
688    <condition type="if" check="!ROGUEXE"/>
689      <field name="fbc_iaddr_mode" start="42" end="42" type="bool"/>
690      <field name="fbdc_iaddr_mode" start="41" end="41" type="bool"/>
691    <condition type="endif" check="!ROGUEXE"/>
692    <!-- FIXME: should be dependent on !ROGUEXE || (ROGUEXE && FB_CDC_V4) -->
693    <field name="fbdc_stencil_fmt" start="34" end="40" type="uint"/>
694    <!-- FIXME: should be dependent on !ROGUEXE || (ROGUEXE && FB_CDC_V4) -->
695    <field name="fbdc_depth_fmt" start="27" end="33" type="uint"/>
696    <field name="fbc_num_tiles" start="4" end="26" type="uint"/>
697    <field name="fbc_iaddr" start="1" end="1" type="bool"/>
698    <field name="fbdc_iaddr" start="0" end="0" type="bool"/>
699  </struct>
700
701</csbgen>
702