xref: /aosp_15_r20/external/mesa3d/src/panfrost/lib/genxml/v10.xml (revision 6104692788411f58d303aa86923a9ff6ecaded22)
1<panxml arch="10">
2  <enum name="Attribute Type">
3    <value name="1D" value="1"/>
4    <value name="1D POT Divisor" value="2"/>
5    <value name="1D NPOT Divisor" value="3"/>
6    <value name="1D Primitive Index Buffer" value="5"/>
7    <value name="Vertex packet" value="6"/>
8  </enum>
9
10  <enum name="Channel">
11    <value name="R" value="0"/>
12    <value name="G" value="1"/>
13    <value name="B" value="2"/>
14    <value name="A" value="3"/>
15    <value name="0" value="4"/>
16    <value name="1" value="5"/>
17  </enum>
18
19  <enum name="Depth Source">
20    <value name="Minimum" value="0"/>
21    <value name="Maximum" value="1"/>
22    <value name="Fixed function" value="2"/>
23    <value name="Shader" value="3"/>
24  </enum>
25
26  <enum name="Depth Clamp Mode">
27    <value name="[0, 1]" value="1"/>
28    <value name="Bounds" value="2"/>
29  </enum>
30
31  <enum name="Shader stage">
32    <value name="Compute" value="1"/>
33    <value name="Fragment" value="2"/>
34    <value name="Vertex" value="3"/>
35  </enum>
36
37  <enum name="Descriptor Type">
38    <value name="Sampler" value="1"/>
39    <value name="Texture" value="2"/>
40    <value name="Attribute" value="5"/>
41    <value name="Depth/stencil" value="7"/>
42    <value name="Shader" value="8"/>
43    <value name="Buffer" value="9"/>
44    <value name="Plane" value="10"/>
45  </enum>
46
47  <enum name="Buffer Type">
48    <value name="Simple" value="1"/>
49    <value name="Tiler heap" value="2"/>
50    <value name="Structure" value="3"/>
51    <value name="Vertex packet" value="4"/>
52  </enum>
53
54  <enum name="Draw Mode">
55    <value name="None" value="0"/>
56    <value name="Points" value="1"/>
57    <value name="Lines" value="2"/>
58    <value name="Line strip" value="4"/>
59    <value name="Line loop" value="6"/>
60    <value name="Triangles" value="8"/>
61    <value name="Triangle strip" value="10"/>
62    <value name="Triangle fan" value="12"/>
63    <value name="Polygon" value="13"/>
64    <value name="Quads" value="14"/>
65  </enum>
66
67  <enum name="Func">
68    <value name="Never" value="0"/>
69    <value name="Less" value="1"/>
70    <value name="Equal" value="2"/>
71    <value name="Lequal" value="3"/>
72    <value name="Greater" value="4"/>
73    <value name="Not Equal" value="5"/>
74    <value name="Gequal" value="6"/>
75    <value name="Always" value="7"/>
76  </enum>
77
78  <enum name="Address Mode">
79    <value name="Flat" value="0"/>
80    <value name="Packed" value="1"/>
81  </enum>
82
83  <enum name="Format">
84    <!--
85      Used to index into the TEXTURE_FEATURES register, which indicates support
86      for compressed texture formats. The enum is no longer used for pixel
87      format descriptors, but the naming is kept consistent with previous Mali
88      generations for backwards compatibility.
89    -->
90    <value name="ETC2 RGB8" value="1"/>
91    <value name="ETC2 R11 UNORM" value="2"/>
92    <value name="ETC2 RGBA8" value="3"/>
93    <value name="ETC2 RG11 UNORM" value="4"/>
94    <value name="BC1 UNORM" value="7"/>
95    <value name="BC2 UNORM" value="8"/>
96    <value name="BC3 UNORM" value="9"/>
97    <value name="BC4 UNORM" value="10"/>
98    <value name="BC4 SNORM" value="11"/>
99    <value name="BC5 UNORM" value="12"/>
100    <value name="BC5 SNORM" value="13"/>
101    <value name="BC6H UF16" value="14"/>
102    <value name="BC6H SF16" value="15"/>
103    <value name="BC7 UNORM" value="16"/>
104    <value name="ETC2 R11 SNORM" value="17"/>
105    <value name="ETC2 RG11 SNORM" value="18"/>
106    <value name="ETC2 RGB8A1" value="19"/>
107    <value name="ASTC 3D LDR" value="20"/>
108    <value name="ASTC 3D HDR" value="21"/>
109    <value name="ASTC 2D LDR" value="22"/>
110    <value name="ASTC 2D HDR" value="23"/>
111    <value name="AFBC" value="24"/>
112    <value name="AFRC" value="25"/>
113    <value name="ASTC 2D NARROW" value="30"/>
114    <value name="ASTC 3D NARROW" value="31"/>
115
116    <!-- Actual enum values follow -->
117    <value name="YUV8" value="32"/>
118    <value name="YUVA8" value="33"/>
119    <value name="YUYV8" value="34"/>
120    <value name="VYUY8" value="35"/>
121    <value name="Y8 UV8 422" value="36"/>
122    <value name="Y8 U8 V8 422" value="37"/>
123    <value name="Y8 UV8 420" value="38"/>
124    <value name="Y8 U8 V8 420" value="39"/>
125    <value name="YUV10 A2" value="40"/>
126    <value name="A2 YUV10" value="41"/>
127    <value name="YUYAAYVYAA" value="42"/>
128    <!--- TODO: revisit YUV -->
129    <value name="YUYV10" value="44"/>
130    <value name="VYUY10" value="45"/>
131    <value name="Y10 UV10 422" value="46"/>
132    <value name="Y10 UV10 420" value="47"/>
133    <value name="YUV16" value="48"/>
134    <value name="YUVA16" value="49"/>
135    <value name="YUYV16" value="50"/>
136    <value name="VYUY16" value="51"/>
137    <value name="Y10X6 U10X6V10X6 422" value="52"/>
138    <value name="Y16 UV16 422" value="53"/>
139    <value name="Y16 UV16 420" value="55"/>
140    <value name="RGB565" value="64"/>
141    <value name="RGB5 A1 UNORM" value="65"/>
142    <value name="A1 BGR5 UNORM" value="66"/>
143    <value name="RGB10 A2 UNORM" value="67"/>
144    <value name="A2 BGR10 UNORM" value="68"/>
145    <value name="RGB10 A2 SNORM" value="69"/>
146    <value name="A2 BGR10 SNORM" value="70"/>
147    <value name="RGB10 A2UI" value="71"/>
148    <value name="A2 BGR10UI" value="72"/>
149    <value name="RGB10 A2I" value="73"/>
150    <value name="A2 BGR10I" value="74"/>
151    <value name="Z16 UNORM" value="75"/>
152    <value name="Z32" value="76"/>
153    <value name="Z24X8 UNORM" value="77"/>
154    <value name="X8Z24" value="78"/>
155    <value name="R32 FIXED" value="81"/>
156    <value name="RG32 FIXED" value="82"/>
157    <value name="RGB32 FIXED" value="83"/>
158    <value name="RGBA32 FIXED" value="84"/>
159    <value name="R11F G11F B10F" value="89"/>
160    <value name="B10F G11F R11F" value="90"/>
161    <value name="R9F G9F B9F E5F" value="91"/>
162    <value name="E5F B9F G9F R9F" value="92"/>
163    <value name="S8" value="93"/>
164    <!--- RGBA32F + snap to 2^-8, used for vertex writes -->
165    <value name="Snap 4" value="94"/>
166    <value name="Constant" value="95"/>
167    <!--- 96-98 reserved -->
168    <value name="R8 SNORM" value="99"/>
169    <value name="R16 SNORM" value="100"/>
170    <value name="R32 SNORM" value="101"/>
171    <!--- 102-105 reserved -->
172    <value name="RG4 SNORM" value="106"/>
173    <value name="RG8 SNORM" value="107"/>
174    <value name="RG16 SNORM" value="108"/>
175    <value name="RG32 SNORM" value="109"/>
176    <!-- 110-114 reserved -->
177    <value name="RGB8 SNORM" value="115"/>
178    <value name="RGB16 SNORM" value="116"/>
179    <value name="RGB32 SNORM" value="117"/>
180    <!-- 118-120 reserved -->
181    <value name="RGBA2 SNORM" value="121"/>
182    <value name="RGBA4 SNORM" value="122"/>
183    <value name="RGBA8 SNORM" value="123"/>
184    <value name="RGBA16 SNORM" value="124"/>
185    <value name="RGBA32 SNORM" value="125"/>
186    <!-- 126-130 reserved -->
187    <value name="R8UI" value="131"/>
188    <value name="R16UI" value="132"/>
189    <value name="R32UI" value="133"/>
190    <!-- 134-137 reserved -->
191    <value name="RG4UI" value="138"/>
192    <value name="RG8UI" value="139"/>
193    <value name="RG16UI" value="140"/>
194    <value name="RG32UI" value="141"/>
195    <!-- 142-146 reserved -->
196    <value name="RGB8UI" value="147"/>
197    <value name="RGB16UI" value="148"/>
198    <value name="RGB32UI" value="149"/>
199    <!-- 150-152 reserved -->
200    <value name="RGBA2UI" value="153"/>
201    <value name="RGBA4UI" value="154"/>
202    <value name="RGBA8UI" value="155"/>
203    <value name="RGBA16UI" value="156"/>
204    <value name="RGBA32UI" value="157"/>
205    <!-- 158-162 reserved -->
206    <value name="R8 UNORM" value="163"/>
207    <value name="R16 UNORM" value="164"/>
208    <value name="R32 UNORM" value="165"/>
209    <!-- 166 reserved -->
210    <value name="R32F" value="167"/>
211    <!-- 168-169 reserved -->
212    <value name="RG4 UNORM" value="170"/>
213    <value name="RG8 UNORM" value="171"/>
214    <value name="RG16 UNORM" value="172"/>
215    <value name="RG32 UNORM" value="173"/>
216    <!-- 174 reserved -->
217    <value name="RG32F" value="175"/>
218    <!-- 176-178 reserved -->
219    <value name="RGB8 UNORM" value="179"/>
220    <value name="RGB16 UNORM" value="180"/>
221    <value name="RGB32 UNORM" value="181"/>
222    <!-- 182 reserved -->
223    <value name="RGB32F" value="183"/>
224    <!-- 184 reserved -->
225    <value name="RGBA2 UNORM" value="185"/>
226    <value name="RGBA4 UNORM" value="186"/>
227    <value name="RGBA8 UNORM" value="187"/>
228    <value name="RGBA16 UNORM" value="188"/>
229    <value name="RGBA32 UNORM" value="189"/>
230    <!-- 190 reserved -->
231    <value name="RGBA32F" value="191"/>
232    <!-- 192-194 reserved -->
233    <value name="R8I" value="195"/>
234    <value name="R16I" value="196"/>
235    <value name="R32I" value="197"/>
236    <!-- 198 reserved -->
237    <value name="R16F" value="199"/>
238    <!-- 200-201 reserved -->
239    <value name="RG4I" value="202"/>
240    <value name="RG8I" value="203"/>
241    <value name="RG16I" value="204"/>
242    <value name="RG32I" value="205"/>
243    <!-- 206 reserved -->
244    <value name="RG16F" value="207"/>
245    <!-- 208-210 reserved -->
246    <value name="RGB8I" value="211"/>
247    <value name="RGB16I" value="212"/>
248    <value name="RGB32I" value="213"/>
249    <!-- 214 reserved -->
250    <value name="RGB16F" value="215"/>
251    <!-- 216 reserved -->
252    <value name="RGBA2I" value="217"/>
253    <value name="RGBA4I" value="218"/>
254    <value name="RGBA8I" value="219"/>
255    <value name="RGBA16I" value="220"/>
256    <value name="RGBA32I" value="221"/>
257    <!-- 222 reserved -->
258    <value name="RGBA16F" value="223"/>
259    <value name="RGB5 A1 AU" value="224"/>
260    <value name="RGB5 A1 PU" value="225"/>
261    <value name="R5G6B5 AU" value="226"/>
262    <value name="R5G6B5 PU" value="227"/>
263    <!-- 228-229 reserved -->
264    <value name="Snap4 V" value="230"/>
265    <value name="R32F RTZ" value="231"/>
266    <value name="RGBA4 AU" value="232"/>
267    <value name="RGBA4 PU" value="233"/>
268    <!-- 234-236 reserved -->
269    <value name="RGBA8 TB" value="237"/>
270    <value name="RGB10 A2 TB" value="238"/>
271    <value name="RG32F RTZ" value="239"/>
272    <value name="Tess Vertex Pack" value="240"/>
273    <value name="RGB8 A2 AU" value="241"/>
274    <value name="RGB8 A2 PU" value="242"/>
275    <!-- 243-246 reserved -->
276    <value name="RGB32F RTZ" value="247"/>
277    <!-- 248-254 reserved -->
278    <value name="RGBA32F RTZ" value="255"/>
279  </enum>
280
281  <enum name="RGB Component Order">
282    <value name="RGBA" value="0"/>
283    <value name="GRBA" value="2"/>
284    <value name="BGRA" value="4"/>
285    <value name="ARGB" value="8"/>
286    <value name="AGRB" value="10"/>
287    <value name="ABGR" value="12"/>
288    <value name="RGB1" value="16"/>
289    <value name="GRB1" value="18"/>
290    <value name="BGR1" value="20"/>
291    <value name="1RGB" value="24"/>
292    <value name="1GRB" value="26"/>
293    <value name="1BGR" value="28"/>
294    <value name="RRRR" value="226"/>
295    <value name="RRR1" value="227"/>
296    <value name="RRRA" value="228"/>
297    <value name="000A" value="229"/>
298    <value name="0001" value="230"/>
299    <value name="0000" value="231"/>
300    <value name="Snap4 v9" value="232"/>
301    <value name="Snap4 v10" value="233"/>
302    <value name="Snap4 v11" value="234"/>
303    <value name="Snap4 v12" value="235"/>
304    <value name="Snap4 v13" value="236"/>
305    <value name="Snap4 v14" value="237"/>
306    <value name="Snap4 v15" value="238"/>
307    <value name="Snap4 v16" value="239"/>
308    <!-- Internal only, do not use -->
309    <value name="R000" value="240"/>
310    <value name="RBGA" value="242"/>
311  </enum>
312
313  <enum name="YUV Swizzle">
314    <value name="YUVA" value="0"/>
315    <value name="YVUA" value="1"/>
316    <value name="UYVA" value="2"/>
317    <value name="UVYA" value="3"/>
318    <value name="VUYA" value="4"/>
319    <value name="VYUA" value="5"/>
320    <value name="Y00A" value="6"/>
321    <value name="YXXA" value="7"/>
322  </enum>
323
324  <enum name="YUV Conversion Mode">
325    <value name="No Conversion" value="0"/>
326    <value name="BT 601" value="3"/>
327    <value name="BT 709" value="4"/>
328    <value name="BT 2020" value="6"/>
329  </enum>
330
331  <enum name="YUV Cr Siting">
332    <value name="Co-Sited" value="0"/>
333    <value name="Center Y" value="1"/>
334    <value name="Center X" value="2"/>
335    <value name="Center" value="3"/>
336    <value name="One Quarter" value="4"/>
337    <value name="Three Quarters" value="5"/>
338    <value name="Replicated" value="7"/>
339  </enum>
340
341  <enum name="ASTC 2D Dimension">
342    <value name="4" value="0"/>
343    <value name="5" value="1"/>
344    <value name="6" value="2"/>
345    <value name="8" value="4"/>
346    <value name="10" value="6"/>
347    <value name="12" value="7"/>
348  </enum>
349
350  <enum name="ASTC 3D Dimension">
351    <value name="4" value="0"/>
352    <value name="5" value="1"/>
353    <value name="6" value="2"/>
354    <value name="3" value="3"/>
355  </enum>
356
357  <enum name="Pixel Kill">
358    <value name="Force Early" value="0"/>
359    <value name="Strong Early" value="1"/>
360    <value name="Weak Early" value="2"/>
361    <value name="Force Late" value="3"/>
362  </enum>
363
364  <enum name="Block Format">
365    <value name="No Write" value="0"/>
366    <!--- 16x16 block u-interleaved -->
367    <value name="Tiled U-Interleaved" value="1"/>
368    <value name="Linear" value="2"/>
369    <value name="AFBC" value="12"/>
370    <value name="AFBC Tiled" value="13"/>
371  </enum>
372
373  <enum name="Writeback Mode">
374    <value name="Compat" value="0"/>
375    <value name="AFRC RGB" value="6"/>
376    <value name="AFRC YUV" value="7"/>
377  </enum>
378
379  <enum name="Mipmap Mode">
380    <value name="Nearest" value="0"/>
381    <value name="None" value="1"/>
382    <value name="Trilinear" value="3"/>
383  </enum>
384
385  <enum name="LOD Algorithm">
386    <value name="Isotropic" value="0"/>
387      <!--- 1, 2 reserved -->
388    <value name="Anisotropic" value="3"/>
389  </enum>
390
391  <enum name="MSAA">
392    <value name="Single" value="0"/>
393    <!-- N samples, 1 surface, resolved -->
394    <value name="Average" value="1"/>
395    <!-- N samples, 1 surface, unresolved -->
396    <value name="Multiple" value="2"/>
397    <!-- N samples, N surfaces -->
398    <value name="Layered" value="3"/>
399  </enum>
400
401  <enum name="Index Type">
402    <value name="None" value="0"/>
403    <value name="UINT8" value="1"/>
404    <value name="UINT16" value="2"/>
405    <value name="UINT32" value="3"/>
406  </enum>
407
408  <enum name="Occlusion Mode">
409    <value name="Disabled" value="0"/>
410    <value name="Predicate" value="1"/>
411    <value name="Counter" value="3"/>
412  </enum>
413
414  <enum name="Stencil Op">
415    <value name="Keep" value="0"/>
416    <value name="Replace" value="1"/>
417    <value name="Zero" value="2"/>
418    <value name="Invert" value="3"/>
419    <value name="Incr Wrap" value="4"/>
420    <value name="Decr Wrap" value="5"/>
421    <value name="Incr Sat" value="6"/>
422    <value name="Decr Sat" value="7"/>
423  </enum>
424
425  <enum name="Texture Dimension">
426    <value name="Cube" value="0"/>
427    <value name="1D" value="1"/>
428    <value name="2D" value="2"/>
429    <value name="3D" value="3"/>
430  </enum>
431
432  <enum name="Wrap Mode">
433    <value name="Repeat" value="8"/>
434    <value name="Clamp to Edge" value="9"/>
435    <value name="Clamp to Border" value="11"/>
436    <value name="Mirrored Repeat" value="12"/>
437    <value name="Mirrored Clamp to Edge" value="13"/>
438    <value name="Mirrored Clamp to Border" value="15"/>
439  </enum>
440
441  <enum name="Tile Render Order">
442    <value name="Z Order" value="0"/>
443    <value name="Horizontal" value="1"/>
444    <value name="Vertical" value="2"/>
445    <value name="Reverse horizontal" value="5"/>
446    <value name="Reverse vertical" value="6"/>
447  </enum>
448
449  <enum name="Task Axis">
450    <value name="X" value="0"/>
451    <value name="Y" value="1"/>
452    <value name="Z" value="2"/>
453  </enum>
454
455  <enum name="Attribute Frequency">
456    <value name="Vertex" value="0"/>
457    <value name="Instance" value="1"/>
458  </enum>
459
460  <enum name="CS Condition">
461    <value name="Lequal" value="0"/>
462    <value name="Greater" value="1"/>
463    <value name="Equal" value="2"/>
464    <value name="Nequal" value="3"/>
465    <value name="Less" value="4"/>
466    <value name="Gequal" value="5"/>
467    <value name="Always" value="6"/>
468  </enum>
469
470  <enum name="CS State">
471    <value name="Timestamp" value="0"/>
472    <value name="Cycle count" value="1"/>
473    <value name="Disjoint count" value="2"/>
474    <value name="Error status" value="3"/>
475  </enum>
476
477  <enum name="CS Heap Operation">
478    <value name="Vertex/Tiler Started" value="0"/>
479    <value name="Vertex/Tiler Completed" value="1"/>
480    <value name="Fragment Completed" value="3"/>
481  </enum>
482
483  <enum name="CS Flush Mode">
484    <value name="None" value="0"/>
485    <value name="Clean" value="1"/>
486    <value name="Clean and invalidate" value="3"/>
487  </enum>
488
489  <enum name="CS Sync scope">
490    <value name="System" value="0"/>
491    <value name="CSG" value="2"/>
492  </enum>
493
494  <enum name="CS Exception type">
495    <value name="Tiler OOM" value="2"/>
496  </enum>
497
498  <enum name="CS Opcode">
499    <value name="NOP" value="0"/>
500    <value name="MOVE" value="1"/>
501    <value name="MOVE32" value="2"/>
502    <value name="WAIT" value="3"/>
503    <value name="RUN_COMPUTE" value="4"/>
504    <value name="RUN_TILING" value="5"/>
505    <value name="RUN_IDVS" value="6"/>
506    <value name="RUN_FRAGMENT" value="7"/>
507    <value name="RUN_FULLSCREEN" value="8"/>
508    <value name="FINISH_TILING" value="9"/>
509    <value name="FINISH_FRAGMENT" value="11"/>
510    <value name="ADD_IMMEDIATE32" value="16"/>
511    <value name="ADD_IMMEDIATE64" value="17"/>
512    <value name="UMIN32" value="18"/>
513    <value name="LOAD_MULTIPLE" value="20"/>
514    <value name="STORE_MULTIPLE" value="21"/>
515    <value name="BRANCH" value="22"/>
516    <value name="SET_SB_ENTRY" value="23"/>
517    <value name="PROGRESS_WAIT" value="24"/>
518    <value name="SET_EXCEPTION_HANDLER" value="25"/>
519    <value name="CALL" value="32"/>
520    <value name="JUMP" value="33"/>
521    <value name="REQ_RESOURCE" value="34"/>
522    <value name="FLUSH_CACHE2" value="36"/>
523    <value name="SYNC_ADD32" value="37"/>
524    <value name="SYNC_SET32" value="38"/>
525    <value name="SYNC_WAIT32" value="39"/>
526    <value name="STORE_STATE" value="40"/>
527    <value name="PROT_REGION" value="41"/>
528    <value name="PROGRESS_STORE" value="42"/>
529    <value name="PROGRESS_LOAD" value="43"/>
530    <value name="RUN_COMPUTE_INDIRECT" value="44"/>
531    <value name="ERROR_BARRIER" value="47"/>
532    <value name="HEAP_SET" value="48"/>
533    <value name="HEAP_OPERATION" value="49"/>
534    <value name="TRACE_POINT" value="50"/>
535    <value name="SYNC_ADD64" value="51"/>
536    <value name="SYNC_SET64" value="52"/>
537    <value name="SYNC_WAIT64" value="53"/>
538  </enum>
539
540  <struct name="CS Base" size="2">
541    <field name="Data" size="56" start="0" type="hex"/>
542    <field name="Opcode" size="8" start="56" type="CS Opcode"/>
543  </struct>
544
545  <struct name="CS NOP" size="2">
546    <field name="Ignored" size="56" start="0" type="hex"/>
547    <field name="Opcode" size="8" start="56" type="CS Opcode" default="NOP"/>
548  </struct>
549
550  <struct name="CS MOVE" size="2">
551    <field name="Immediate" size="48" start="0" type="hex"/>
552    <field name="Destination" size="8" start="48" type="uint"/>
553    <field name="Opcode" size="8" start="56" type="CS Opcode" default="MOVE"/>
554  </struct>
555
556  <struct name="CS MOVE32" size="2">
557    <field name="Immediate" size="32" start="0" type="hex"/>
558    <field name="Destination" size="8" start="48" type="uint"/>
559    <field name="Opcode" size="8" start="56" type="CS Opcode" default="MOVE32"/>
560  </struct>
561
562  <struct name="CS WAIT" size="2">
563    <field name="Wait mask" size="8" start="16" type="hex"/>
564    <field name="Progress increment" size="1" start="32" type="bool" default="false"/>
565    <field name="Opcode" size="8" start="56" type="CS Opcode" default="WAIT"/>
566  </struct>
567
568  <struct name="CS RUN_COMPUTE" size="2">
569    <field name="Task increment" size="14" start="0" type="uint"/>
570    <field name="Task axis" size="2" start="14" type="Task Axis"/>
571    <field name="Progress increment" size="1" start="32" type="bool" default="false"/>
572    <field name="SRT select" size="2" start="40" type="uint"/>
573    <field name="SPD select" size="2" start="42" type="uint"/>
574    <field name="TSD select" size="2" start="44" type="uint"/>
575    <field name="FAU select" size="2" start="46" type="uint"/>
576    <field name="Opcode" size="8" start="56" type="CS Opcode" default="RUN_COMPUTE"/>
577  </struct>
578
579  <struct name="CS RUN_TILING" size="2">
580    <field name="Flags override" size="32" start="0" type="hex"/>
581    <field name="Progress increment" size="1" start="32" type="bool" default="false"/>
582    <field name="SRT select" size="2" start="40" type="uint"/>
583    <field name="SPD select" size="2" start="42" type="uint"/>
584    <field name="TSD select" size="2" start="44" type="uint"/>
585    <field name="FAU select" size="2" start="46" type="uint"/>
586    <field name="Opcode" size="8" start="56" type="CS Opcode" default="RUN_TILING"/>
587  </struct>
588
589  <struct name="CS RUN_IDVS" size="2">
590    <field name="Flags override" size="32" start="0" type="hex"/>
591    <field name="Progress increment" size="1" start="32" type="bool" default="false"/>
592    <field name="Malloc enable" size="1" start="33" type="bool"/>
593    <field name="Draw ID register enable" size="1" start="34" type="bool"/>
594    <field name="Varying SRT select" size="1" start="35" type="bool"/>
595    <field name="Varying FAU select" size="1" start="36" type="bool"/>
596    <field name="Varying TSD select" size="1" start="37" type="bool"/>
597    <field name="Fragment SRT select" size="1" start="38" type="bool"/>
598    <field name="Fragment TSD select" size="1" start="39" type="bool"/>
599    <field name="Draw ID" size="8" start="40" type="uint"/>
600    <field name="Opcode" size="8" start="56" type="CS Opcode" default="RUN_IDVS"/>
601  </struct>
602
603  <struct name="CS RUN_FRAGMENT" size="2">
604    <field name="Enable TEM" size="1" start="0" type="bool"/>
605    <field name="Tile order" size="4" start="4" type="Tile Render Order" default="Z Order"/>
606    <field name="Progress increment" size="1" start="32" type="bool" default="false"/>
607    <field name="Opcode" size="8" start="56" type="CS Opcode" default="RUN_FRAGMENT"/>
608  </struct>
609
610  <struct name="CS RUN_FULLSCREEN" size="2">
611    <field name="Flags override" size="32" start="0" type="hex"/>
612    <field name="Progress increment" size="1" start="32" type="bool" default="false"/>
613    <field name="DCD" size="8" start="40" type="uint"/>
614    <field name="Opcode" size="8" start="56" type="CS Opcode" default="RUN_FULLSCREEN"/>
615  </struct>
616
617  <struct name="CS FINISH_TILING" size="2">
618    <field name="Progress increment" size="1" start="32" type="bool" default="false"/>
619    <field name="Opcode" size="8" start="56" type="CS Opcode" default="FINISH_TILING"/>
620  </struct>
621
622  <struct name="CS FINISH_FRAGMENT" size="2">
623    <field name="Increment Fragment Completed" size="1" start="0" type="bool"/>
624    <field name="Wait mask" size="16" start="16" type="hex"/>
625    <field name="Last Heap Chunk" size="8" start="32" type="hex"/>
626    <field name="First Heap Chunk" size="8" start="40" type="hex"/>
627    <field name="Signal slot" size="4" start="48" type="hex"/>
628    <field name="Opcode" size="8" start="56" type="CS Opcode" default="FINISH_FRAGMENT"/>
629  </struct>
630
631  <struct name="CS ADD_IMMEDIATE32" size="2">
632    <field name="Immediate" size="32" start="0" type="int"/>
633    <field name="Source" size="8" start="40" type="uint"/>
634    <field name="Destination" size="8" start="48" type="uint"/>
635    <field name="Opcode" size="8" start="56" type="CS Opcode" default="ADD_IMMEDIATE32"/>
636  </struct>
637
638  <struct name="CS ADD_IMMEDIATE64" size="2">
639    <field name="Immediate" size="32" start="0" type="int"/>
640    <field name="Source" size="8" start="40" type="uint"/>
641    <field name="Destination" size="8" start="48" type="uint"/>
642    <field name="Opcode" size="8" start="56" type="CS Opcode" default="ADD_IMMEDIATE64"/>
643  </struct>
644
645  <struct name="CS UMIN32" size="2">
646    <field name="Source 1" size="8" start="32" type="uint"/>
647    <field name="Source 2" size="8" start="40" type="uint"/>
648    <field name="Destination" size="8" start="48" type="uint"/>
649    <field name="Opcode" size="8" start="56" type="CS Opcode" default="UMIN32"/>
650  </struct>
651
652  <struct name="CS LOAD_MULTIPLE" size="2">
653    <field name="Offset" size="16" start="0" type="int"/>
654    <field name="Mask" size="16" start="16" type="hex"/>
655    <field name="Address" size="8" start="40" type="uint"/>
656    <field name="Base register" size="8" start="48" type="uint"/>
657    <field name="Opcode" size="8" start="56" type="CS Opcode" default="LOAD_MULTIPLE"/>
658  </struct>
659
660  <struct name="CS STORE_MULTIPLE" size="2">
661    <field name="Offset" size="16" start="0" type="int"/>
662    <field name="Mask" size="16" start="16" type="hex"/>
663    <field name="Address" size="8" start="40" type="uint"/>
664    <field name="Base register" size="8" start="48" type="uint"/>
665    <field name="Opcode" size="8" start="56" type="CS Opcode" default="STORE_MULTIPLE"/>
666  </struct>
667
668  <struct name="CS BRANCH" size="2">
669    <field name="Offset" size="16" start="0" type="int"/>
670    <field name="Condition" size="3" start="28" type="CS Condition"/>
671    <field name="Value" size="8" start="40" type="uint"/>
672    <field name="Opcode" size="8" start="56" type="CS Opcode" default="BRANCH"/>
673  </struct>
674
675  <struct name="CS SET_SB_ENTRY" size="2">
676    <field name="Endpoint entry" size="4" start="0" type="uint"/>
677    <field name="Other entry" size="4" start="4" type="uint"/>
678    <field name="Opcode" size="8" start="56" type="CS Opcode" default="SET_SB_ENTRY"/>
679  </struct>
680
681  <struct name="CS PROGRESS_WAIT" size="2">
682    <field name="Queue" size="5" start="0" type="uint"/>
683    <field name="Source" size="8" start="40" type="uint"/>
684    <field name="Opcode" size="8" start="56" type="CS Opcode" default="PROGRESS_WAIT"/>
685  </struct>
686
687  <struct name="CS SET_EXCEPTION_HANDLER" size="2">
688    <field name="Exception type" size="8" start="0" type="CS Exception type"/>
689    <field name="Length" size="8" start="32" type="uint"/>
690    <field name="Address" size="8" start="32" type="uint"/>
691    <field name="Opcode" size="8" start="56" type="CS Opcode" default="SET_EXCEPTION_HANDLER"/>
692  </struct>
693
694  <struct name="CS CALL" size="2">
695    <field name="Length" size="8" start="32" type="uint"/>
696    <field name="Address" size="8" start="40" type="uint"/>
697    <field name="Opcode" size="8" start="56" type="CS Opcode" default="CALL"/>
698  </struct>
699
700  <struct name="CS JUMP" size="2">
701    <field name="Length" size="8" start="32" type="uint"/>
702    <field name="Address" size="8" start="40" type="uint"/>
703    <field name="Opcode" size="8" start="56" type="CS Opcode" default="JUMP"/>
704  </struct>
705
706  <struct name="CS REQ_RESOURCE" size="2">
707    <field name="Compute" size="1" start="0" type="bool"/>
708    <field name="Fragment" size="1" start="1" type="bool"/>
709    <field name="Tiler" size="1" start="2" type="bool"/>
710    <field name="IDVS" size="1" start="3" type="bool"/>
711    <field name="Opcode" size="8" start="56" type="CS Opcode" default="REQ_RESOURCE"/>
712  </struct>
713
714  <struct name="CS FLUSH_CACHE2" size="2">
715    <field name="L2 flush mode" size="4" start="0" type="CS Flush Mode"/>
716    <field name="LSC flush mode" size="4" start="4" type="CS Flush Mode"/>
717    <field name="Other invalidate" size="1" start="9" type="bool"/>
718    <field name="Wait mask" size="16" start="16" type="hex"/>
719    <field name="Latest Flush ID" size="8" start="40" type="uint"/>
720    <field name="Signal slot" size="4" start="48" type="uint"/>
721    <field name="Opcode" size="8" start="56" type="CS Opcode" default="FLUSH_CACHE2"/>
722  </struct>
723
724  <struct name="CS SYNC_ADD32" size="2">
725    <!-- Iter status is written at [Address + 4], 0 == NO_FAULT, 1 == FAULT -->
726    <field name="Error propagate" size="1" start="0" type="bool"/>
727    <field name="Scope" size="2" start="1" type="CS Sync scope"/>
728    <field name="Wait mask" size="16" start="16" type="hex"/>
729    <field name="Data" size="8" start="32" type="uint"/>
730    <field name="Address" size="8" start="40" type="uint"/>
731    <field name="Signal slot" size="4" start="48" type="hex"/>
732    <field name="Opcode" size="8" start="56" type="CS Opcode" default="SYNC_ADD32"/>
733  </struct>
734
735  <struct name="CS SYNC_SET32" size="2">
736    <!-- Iter status is written at [Address + 4], 0 == NO_FAULT, 1 == FAULT -->
737    <field name="Error propagate" size="1" start="0" type="bool"/>
738    <field name="Scope" size="2" start="1" type="CS Sync scope"/>
739    <field name="Wait mask" size="16" start="16" type="hex"/>
740    <field name="Data" size="8" start="32" type="uint"/>
741    <field name="Address" size="8" start="40" type="uint"/>
742    <field name="Signal slot" size="4" start="48" type="hex"/>
743    <field name="Opcode" size="8" start="56" type="CS Opcode" default="SYNC_SET32"/>
744  </struct>
745
746  <struct name="CS SYNC_WAIT32" size="2">
747    <field name="Error reject" size="1" start="0" type="bool"/>
748    <field name="Condition" size="4" start="28" type="CS Condition"/>
749    <field name="Data" size="8" start="32" type="uint"/>
750    <field name="Address" size="8" start="40" type="uint"/>
751    <field name="Opcode" size="8" start="56" type="CS Opcode" default="SYNC_WAIT32"/>
752  </struct>
753
754  <struct name="CS STORE_STATE" size="2">
755    <!-- Iter status is written at [Address + 4], 0 == NO_FAULT, 1 == FAULT -->
756    <field name="Offset" size="16" start="0" type="int"/>
757    <field name="Wait mask" size="16" start="16" type="hex"/>
758    <field name="State" size="2" start="32" type="CS State"/>
759    <field name="Address" size="8" start="40" type="uint"/>
760    <field name="Signal slot" size="4" start="48" type="hex"/>
761    <field name="Opcode" size="8" start="56" type="CS Opcode" default="STORE_STATE"/>
762  </struct>
763
764  <struct name="CS PROT_REGION" size="2">
765    <field name="Size" size="16" start="0" type="uint" modifier="shr(3)"/>
766    <field name="Opcode" size="8" start="56" type="CS Opcode" default="PROT_REGION"/>
767  </struct>
768
769  <struct name="CS PROGRESS_STORE" size="2">
770    <field name="Source" size="8" start="40" type="uint"/>
771    <field name="Opcode" size="8" start="56" type="CS Opcode" default="PROGRESS_STORE"/>
772  </struct>
773
774  <struct name="CS PROGRESS_LOAD" size="2">
775    <field name="Destination" size="8" start="40" type="uint"/>
776    <field name="Opcode" size="8" start="56" type="CS Opcode" default="PROGRESS_LOAD"/>
777  </struct>
778
779  <struct name="CS RUN_COMPUTE_INDIRECT" size="2">
780    <field name="Workgroups per task" size="16" start="0" type="uint"/>
781    <field name="Progress increment" size="1" start="32" type="bool" default="false"/>
782    <field name="SRT select" size="2" start="40" type="uint"/>
783    <field name="SPD select" size="2" start="42" type="uint"/>
784    <field name="TSD select" size="2" start="44" type="uint"/>
785    <field name="FAU select" size="2" start="46" type="uint"/>
786    <field name="Opcode" size="8" start="56" type="CS Opcode" default="RUN_COMPUTE_INDIRECT"/>
787  </struct>
788
789  <struct name="CS ERROR_BARRIER" size="2">
790    <field name="Opcode" size="8" start="56" type="CS Opcode" default="ERROR_BARRIER"/>
791  </struct>
792
793  <struct name="CS HEAP_SET" size="2">
794    <field name="Address" size="8" start="40" type="uint"/>
795    <field name="Opcode" size="8" start="56" type="CS Opcode" default="HEAP_SET"/>
796  </struct>
797
798  <struct name="CS HEAP_OPERATION" size="2">
799    <field name="Wait mask" size="16" start="16" type="hex"/>
800    <field name="Operation" size="2" start="32" type="CS Heap Operation"/>
801    <field name="Signal slot" size="4" start="48" type="uint"/>
802    <field name="Opcode" size="8" start="56" type="CS Opcode" default="HEAP_OPERATION"/>
803  </struct>
804
805  <struct name="CS TRACE_POINT" size="2">
806    <field name="Wait mask" size="16" start="16" type="hex"/>
807    <field name="Base Register" size="8" start="32" type="uint"/>
808    <field name="Register Count" size="8" start="40" type="uint"/>
809    <field name="Signal slot" size="4" start="48" type="hex"/>
810    <field name="Opcode" size="8" start="56" type="CS Opcode" default="TRACE_POINT"/>
811  </struct>
812
813  <struct name="CS SYNC_ADD64" size="2">
814    <!-- Iter status is written at [Address + 8], 0 == NO_FAULT, 1 == FAULT -->
815    <field name="Error propagate" size="1" start="0" type="bool"/>
816    <!-- Used for inter-queue synchronization (unblocking a queue waiting on a mem-based fence) -->
817    <field name="Scope" size="2" start="1" type="CS Sync scope"/>
818    <field name="Wait mask" size="16" start="16" type="hex"/>
819    <field name="Data" size="8" start="32" type="uint"/>
820    <field name="Address" size="8" start="40" type="uint"/>
821    <field name="Signal slot" size="4" start="48" type="hex"/>
822    <field name="Opcode" size="8" start="56" type="CS Opcode" default="SYNC_ADD64"/>
823  </struct>
824
825  <struct name="CS SYNC_SET64" size="2">
826    <!-- Iter status is written at [Address + 8], 0 == NO_FAULT, 1 == FAULT -->
827    <field name="Error propagate" size="1" start="0" type="bool"/>
828    <field name="Scope" size="2" start="1" type="CS Sync scope"/>
829    <field name="Wait mask" size="16" start="16" type="hex"/>
830    <field name="Data" size="8" start="32" type="uint"/>
831    <field name="Address" size="8" start="40" type="uint"/>
832    <field name="Signal slot" size="4" start="48" type="hex"/>
833    <field name="Opcode" size="8" start="56" type="CS Opcode" default="SYNC_SET64"/>
834  </struct>
835
836  <struct name="CS SYNC_WAIT64" size="2">
837    <field name="Error reject" size="1" start="0" type="bool"/>
838    <field name="Condition" size="4" start="28" type="CS Condition"/>
839    <field name="Data" size="8" start="32" type="uint"/>
840    <field name="Address" size="8" start="40" type="uint"/>
841    <field name="Opcode" size="8" start="56" type="CS Opcode" default="SYNC_WAIT64"/>
842  </struct>
843
844  <struct name="Attribute" size="8" align="32">
845    <field name="Type" size="4" start="0:0" type="Descriptor Type" default="Attribute"/>
846    <field name="Attribute type" size="4" start="0:4" type="Attribute Type"/>
847    <field name="Offset enable" size="1" start="8" type="bool"/>
848    <field name="Format" size="22" start="0:10" type="Pixel Format"/>
849    <field name="Table" size="6" start="1:0" type="uint"/>
850    <field name="Frequency" size="2" start="1:6" type="Attribute Frequency"/> <!-- Internally, ID select -->
851    <field name="Divisor R" size="5" start="1:24" type="uint"/>
852    <field name="Divisor E" size="1" start="1:29" type="uint"/>
853    <field name="Offset" size="32" start="2:0" type="int"/>
854    <field name="Buffer index" size="32" start="3:0" type="uint"/>
855    <field name="Stride" size="32" start="4:0" type="uint"/>
856
857    <!-- Vertex packet buffer only -->
858    <field name="Packet stride" size="16" start="4:0" type="uint" modifier="shr(6)"/>
859    <field name="Attribute stride" size="16" start="4:16" type="uint"/>
860
861    <field name="Divisor D" size="32" start="5:0" type="uint"/>
862  </struct>
863
864  <struct name="Buffer" size="8" align="32">
865    <field name="Type" size="4" start="0:0" type="Descriptor Type" default="Buffer"/>
866    <field name="Buffer type" size="4" start="0:4" type="Buffer Type" default="Simple"/>
867    <field name="Size" size="32" start="1:0" type="uint"/>
868    <field name="Address" size="64" start="2:0" type="address"/>
869
870    <!-- Structured buffer only -->
871    <field name="Stride" size="32" start="4:0" type="uint"/>
872
873    <!-- Vertex packet buffer only -->
874    <field name="Packet stride" size="16" start="4:0" type="uint" modifier="shr(6)"/>
875    <field name="Attribute stride" size="16" start="4:16" type="uint"/>
876
877  </struct>
878
879  <enum name="Blend Operand A">
880    <value name="Zero" value="1"/>
881    <value name="Src" value="2"/>
882    <value name="Dest" value="3"/>
883  </enum>
884
885  <enum name="Blend Operand B">
886    <value name="Src Minus Dest" value="0"/>
887    <value name="Src Plus Dest" value="1"/>
888    <value name="Src" value="2"/>
889    <value name="Dest" value="3"/>
890  </enum>
891
892  <enum name="Blend Operand C">
893    <value name="Zero" value="1"/>
894    <value name="Src" value="2"/>
895    <value name="Dest" value="3"/>
896    <value name="Src x 2" value="4"/>
897    <value name="Src Alpha" value="5"/>
898    <value name="Dest Alpha" value="6"/>
899    <value name="Constant" value="7"/>
900  </enum>
901
902  <struct name="Blend Function" no-direct-packing="true">
903    <!-- Blend equation: A + (B * C) -->
904    <field name="A" size="2" start="0" type="Blend Operand A"/>
905    <field name="Negate A" size="1" start="3" type="bool"/>
906    <field name="B" size="2" start="4" type="Blend Operand B"/>
907    <field name="Negate B" size="1" start="7" type="bool"/>
908    <field name="C" size="3" start="8" type="Blend Operand C"/>
909    <field name="Invert C" size="1" start="11" type="bool"/>
910  </struct>
911
912  <struct name="Blend Equation" size="1">
913    <field name="RGB" size="12" start="0:0" type="Blend Function"/>
914    <field name="Alpha" size="12" start="0:12" type="Blend Function"/>
915    <field name="Color Mask" size="4" start="0:28" type="uint"/>
916  </struct>
917
918  <enum name="Register File Format">
919    <value name="F16" value="0"/>
920    <value name="F32" value="1"/>
921    <value name="I32" value="2"/>
922    <value name="U32" value="3"/>
923    <value name="I16" value="4"/>
924    <value name="U16" value="5"/>
925  </enum>
926
927  <enum name="Blend Mode">
928    <value name="Shader" value="0"/>
929    <value name="Opaque" value="1"/>
930    <value name="Fixed-Function" value="2"/>
931    <value name="Off" value="3"/>
932  </enum>
933
934  <struct name="Blend Shader" size="2">
935    <field name="PC" size="28" start="1:4" type="uint" modifier="shr(4)"/>
936  </struct>
937
938  <struct name="Internal Conversion" size="1" align="4">
939    <field name="Memory Format" size="22" start="0" type="Pixel Format"/>
940    <field name="Raw" size="1" start="22" type="bool"/>
941    <field name="Register Format" size="3" start="24" type="Register File Format"/>
942  </struct>
943
944  <struct name="Blend Fixed-Function" size="2">
945    <field name="Num Comps" size="2" start="0:3" type="uint" modifier="minus(1)" default="1"/>
946    <field name="RT" size="4" start="0:16" type="uint">
947       <value name="MALI_BIFROST_BLEND_MAX_RT" value="8"/>
948    </field>
949    <field name="Conversion" size="32" start="1:0" type="Internal Conversion"/>
950  </struct>
951
952  <struct name="Internal Blend" align="8">
953    <field name="Mode" size="2" start="0:0" type="Blend Mode"/>
954    <field name="Shader" size="64" start="0:0" type="Blend Shader"/>
955    <field name="Fixed-Function" size="64" start="0:0" type="Blend Fixed-Function"/>
956  </struct>
957
958  <struct name="Blend" size="4" align="16">
959    <field name="Load Destination" size="1" start="0:0" type="bool" default="false"/>
960    <field name="Alpha To One" size="1" start="0:8" type="bool"/>
961    <field name="Enable" size="1" start="0:9" type="bool" default="true"/>
962    <field name="sRGB" size="1" start="0:10" type="bool" default="false"/>
963    <field name="Round to FB precision" size="1" start="0:11" type="bool" default="false"/>
964    <field name="Constant" size="16" start="0:16" type="uint"/>
965    <field name="Equation" size="32" start="1:0" type="Blend Equation"/>
966    <field name="Internal" size="64" start="2:0" type="Internal Blend"/>
967  </struct>
968
969  <enum name="Point Size Array Format">
970    <value name="None" value="0"/>
971    <value name="FP16" value="2"/>
972    <value name="FP32" value="3"/>
973  </enum>
974
975  <enum name="FIFO format">
976    <value name="Auto" value="0"/>
977    <value name="Basic" value="1"/>
978    <value name="Extended" value="2"/>
979  </enum>
980
981  <struct name="Primitive Flags" size="1">
982    <field name="Draw mode" size="8" start="0:0" type="Draw Mode" default="None"/>
983    <field name="Index type" size="3" start="0:8" type="Index Type" default="None"/>
984    <field name="Point size array format" size="2" start="0:11" type="Point Size Array Format"/>
985    <field name="Primitive Index Enable" size="1" start="0:13" type="bool"/>
986    <field name="Primitive Index Writeback" size="1" start="0:14" type="bool"/>
987    <field name="Allow rotating primitives" size="1" start="0:15" type="bool"/>
988    <field name="Low Depth Cull" size="1" start="0:16" type="bool" default="true"/>
989    <field name="High Depth Cull" size="1" start="0:17" type="bool" default="true"/>
990    <field name="Secondary Shader" size="1" start="0:18" type="bool"/>
991    <field name="Primitive restart" size="1" start="0:19" type="bool"/>
992    <field name="Layer index enable" size="1" start="0:20" type="bool"/>
993    <field name="Scissor array enable" size="1" start="0:21" type="bool"/>
994    <field name="Position FIFO format" size="2" start="0:22" type="FIFO format"/>
995    <field name="View mask" size="8" start="0:24" type="hex"/>
996  </struct>
997
998  <struct name="Primitive">
999    <field name="Draw mode" size="8" start="0:0" type="Draw Mode" default="None"/>
1000    <field name="Index type" size="3" start="0:8" type="Index Type" default="None"/>
1001    <field name="Point size array format" size="2" start="0:11" type="Point Size Array Format"/>
1002    <field name="Primitive Index Enable" size="1" start="0:13" type="bool"/>
1003    <field name="Primitive Index Writeback" size="1" start="0:14" type="bool"/>
1004    <field name="Allow rotating primitives" size="1" start="0:15" type="bool"/>
1005    <field name="Low Depth Cull" size="1" start="0:16" type="bool" default="true"/>
1006    <field name="High Depth Cull" size="1" start="0:17" type="bool" default="true"/>
1007    <field name="Secondary Shader" size="1" start="0:18" type="bool"/>
1008    <field name="Primitive restart" size="1" start="0:19" type="bool"/>
1009    <field name="Layer index enable" size="1" start="0:20" type="bool"/>
1010    <field name="Scissor array enable" size="1" start="0:21" type="bool"/>
1011
1012    <field name="Base vertex offset" size="32" start="1:0" type="int"/>
1013    <field name="Instance offset" size="32" start="2:0" type="uint"/>
1014    <field name="Index count" size="32" start="3:0" type="uint"/>
1015  </struct>
1016
1017  <enum name="Reduction Mode">
1018    <value name="Average" value="0"/>
1019    <value name="Minimum" value="2"/>
1020    <value name="Maximum" value="3"/>
1021  </enum>
1022
1023  <struct name="Sampler" size="8" align="32">
1024    <field name="Type" size="4" start="0:0" type="Descriptor Type" default="Sampler"/>
1025    <field name="Reduction mode" size="2" start="0:4" type="Reduction Mode" default="Average"/>
1026    <field name="Wrap Mode R" size="4" start="0:8" type="Wrap Mode" default="Clamp to Edge"/>
1027    <field name="Wrap Mode T" size="4" start="0:12" type="Wrap Mode" default="Clamp to Edge"/>
1028    <field name="Wrap Mode S" size="4" start="0:16" type="Wrap Mode" default="Clamp to Edge"/>
1029    <field name="Round to nearest even" size="1" start="0:21" type="bool" default="true"/>
1030    <!--- Disable sRGB-to-linear conversion (assume linear) -->
1031    <field name="sRGB override" size="1" start="0:22" type="bool" default="false"/>
1032    <field name="Seamless Cube Map" size="1" start="0:23" type="bool" default="true"/>
1033    <field name="Clamp integer coordinates" size="1" start="0:24" type="bool"/>
1034    <field name="Normalized Coordinates" size="1" start="0:25" type="bool" default="true"/>
1035    <field name="Clamp integer array indices" size="1" start="0:26" type="bool" default="true"/>
1036    <field name="Minify nearest" size="1" start="0:27" type="bool" default="false"/>
1037    <field name="Magnify nearest" size="1" start="0:28" type="bool" default="false"/>
1038    <!--- Set for 0.5, clear for 0.0 -->
1039    <field name="Magnify cutoff" size="1" start="0:29" type="bool" default="false"/>
1040    <field name="Mipmap Mode" size="2" start="0:30" type="Mipmap Mode" default="Nearest"/>
1041    <field name="Minimum LOD" size="13" start="1:0" type="ulod" default="0"/>
1042    <field name="Compare Function" size="3" start="1:13" type="Func" default="Never"/>
1043    <field name="Maximum LOD" size="13" start="1:16" type="ulod" default="0"/>
1044    <field name="LOD bias" size="16" start="2:0" type="slod" default="0"/>
1045    <field name="Maximum anisotropy" size="5" start="2:16" type="uint" default="1" modifier="minus(1)"/>
1046    <field name="LOD algorithm" size="2" start="2:24" type="LOD Algorithm" default="Isotropic"/>
1047    <field name="Border Color R" size="32" start="4:0" type="uint/float" default="0.0"/>
1048    <field name="Border Color G" size="32" start="5:0" type="uint/float" default="0.0"/>
1049    <field name="Border Color B" size="32" start="6:0" type="uint/float" default="0.0"/>
1050    <field name="Border Color A" size="32" start="7:0" type="uint/float" default="0.0"/>
1051  </struct>
1052
1053  <enum name="Plane Type">
1054    <value name="Null" value="0"/>
1055    <value name="Generic" value="1"/>
1056    <value name="ASTC 2D" value="4"/>
1057    <value name="ASTC 3D" value="5"/>
1058    <value name="AFBC" value="6"/>
1059    <value name="Chroma 2p" value="8"/>
1060    <value name="AFRC" value="10"/>
1061    <value name="AFRC Chroma 2p" value="11"/>
1062  </enum>
1063
1064  <enum name="Clump Ordering">
1065    <value name="Tiled U-Interleaved" value="1"/>
1066    <value name="Linear" value="2"/>
1067  </enum>
1068
1069  <enum name="Clump Format">
1070    <value name="RAW8" value="0"/>
1071    <value name="RAW16" value="1"/>
1072    <value name="RAW32" value="2"/>
1073    <value name="RAW64" value="3"/>
1074    <value name="RAW128" value="4"/>
1075
1076    <value name="RAW24" value="8"/>
1077    <value name="RAW48" value="9"/>
1078    <value name="RAW96" value="10"/>
1079
1080    <value name="D32X32" value="16"/>
1081    <value name="X32D32" value="17"/>
1082    <value name="X32S8X24" value="18"/>
1083    <value name="X24S8X32" value="19"/>
1084    <value name="X24S8" value="20"/>
1085    <value name="S8X24" value="21"/>
1086    <value name="S8" value="22"/>
1087
1088    <value name="L4A4" value="24"/>
1089    <value name="L8A8" value="25"/>
1090    <value name="A8" value="26"/>
1091
1092    <value name="ETC2 RGB8" value="32"/>
1093    <value name="ETC2 R11 UNORM" value="33"/>
1094    <value name="ETC2 R11 SNORM" value="34"/>
1095    <value name="ETC2 RG11 UNORM" value="35"/>
1096    <value name="ETC2 RG11 SNORM" value="36"/>
1097    <value name="ETC2 RGBA8" value="37"/>
1098    <value name="ETC2 RGB8A1" value="38"/>
1099
1100    <value name="BC1 UNORM" value="48"/>
1101    <value name="BC2 UNORM" value="49"/>
1102    <value name="BC3 UNORM" value="50"/>
1103    <value name="BC4 UNORM" value="51"/>
1104    <value name="BC4 SNORM" value="52"/>
1105    <value name="BC5 UNORM" value="53"/>
1106    <value name="BC5 SNORM" value="54"/>
1107    <value name="BC6H UF16" value="55"/>
1108    <value name="BC6H SF16" value="56"/>
1109    <value name="BC7 UNORM" value="57"/>
1110
1111    <value name="Y8 UV8 422" value="64"/>
1112    <value name="Y10 UV10 422" value="65"/>
1113    <value name="Y16 UV16 422" value="67"/>
1114
1115    <value name="Y8 UV8 420" value="72"/>
1116    <value name="Y10 UV10 420" value="73"/>
1117    <value name="Y16 UV16 420" value="75"/>
1118    <value name="YUV420 10x6" value="76"/>
1119
1120    <value name="RAW10" value="120"/>
1121    <value name="RAW12" value="121"/>
1122
1123    <value name="R8G8B8G8" value="124"/>
1124    <value name="G8R8G8B8" value="125"/>
1125  </enum>
1126
1127  <enum name="AFBC Superblock Size">
1128    <value name="16x16" value="0"/>
1129    <value name="32x8" value="1"/>
1130    <value name="64x4" value="2"/>
1131  </enum>
1132
1133  <enum name="AFBC Compression Mode">
1134    <value name="R8" value="0"/>
1135    <value name="R8G8" value="3"/>
1136    <value name="R5G6B5" value="4"/>
1137    <value name="R4G4B4A4" value="5"/>
1138    <value name="R5G5B5A1" value="6"/>
1139    <value name="R8G8B8" value="9"/>
1140    <value name="R8G8B8A8" value="10"/>
1141    <value name="R10G10B10A2" value="11"/>
1142    <value name="R11G11B10" value="12"/>
1143    <value name="S8" value="14"/>
1144    <value name="X24S8" value="15"/>
1145
1146    <value name="YUV420 6c8" value="32"/>
1147    <value name="YUV420 2c8" value="34"/>
1148    <value name="YUV420 1c8" value="35"/>
1149
1150    <value name="YUV422 4c8" value="37"/>
1151    <value name="YUV422 2c8" value="38"/>
1152    <value name="YUV422 1c8" value="39"/>
1153
1154    <value name="YUV420 6c10" value="40"/>
1155    <value name="YUV420 2c10" value="42"/>
1156    <value name="YUV420 1c10" value="43"/>
1157
1158    <value name="YUV422 4c10" value="45"/>
1159    <value name="YUV422 2c10" value="46"/>
1160    <value name="YUV422 1c10" value="47"/>
1161  </enum>
1162
1163  <enum name="AFRC Block Size">
1164    <value name="16" value="4"/>
1165    <value name="24" value="5"/>
1166    <value name="32" value="6"/>
1167  </enum>
1168
1169  <enum name="AFRC Format">
1170    <value name="R8 SCAN" value="0"/>
1171    <value name="R8G8 SCAN" value="1"/>
1172    <value name="R8G8B8 SCAN" value="2"/>
1173    <value name="R8G8B8A8 SCAN" value="3"/>
1174    <value name="R8 ROT" value="4"/>
1175    <value name="R8G8 ROT" value="5"/>
1176    <value name="R8G8B8 ROT" value="6"/>
1177    <value name="R8G8B8A8 ROT" value="7"/>
1178
1179    <value name="R10G10B10A10 SCAN" value="11"/>
1180    <value name="R10G10B10A10 ROT" value="15"/>
1181
1182    <value name="R8_444 SCAN" value="64"/>
1183    <value name="R8_422 SCAN" value="65"/>
1184    <value name="R8_420 SCAN" value="66"/>
1185    <value name="R8_444 ROT" value="68"/>
1186    <value name="R8_422 ROT" value="69"/>
1187    <value name="R8_420 ROT" value="70"/>
1188    <value name="R8G8_444 SCAN" value="72"/>
1189    <value name="R8G8_422 SCAN" value="73"/>
1190    <value name="R8G8_420 SCAN" value="74"/>
1191    <value name="R8G8_444 ROT" value="76"/>
1192    <value name="R8G8_422 ROT" value="77"/>
1193    <value name="R8G8_420 ROT" value="78"/>
1194
1195    <value name="R10_444 SCAN" value="80"/>
1196    <value name="R10_422 SCAN" value="81"/>
1197    <value name="R10_420 SCAN" value="82"/>
1198    <value name="R10_444 ROT" value="84"/>
1199    <value name="R10_422 ROT" value="85"/>
1200    <value name="R10_420 ROT" value="86"/>
1201    <value name="R10G10_422 SCAN" value="89"/>
1202    <value name="R10G10_420 SCAN" value="90"/>
1203    <value name="R10G10_422 ROT" value="93"/>
1204    <value name="R10G10_420 ROT" value="94"/>
1205
1206    <value name="INVALID" value="256"/>
1207  </enum>
1208
1209  <struct name="Plane AFBC Overlay" size="8">
1210    <field name="Superblock size" size="3" start="0:8" type="AFBC Superblock Size"/>
1211
1212    <field name="YTR" size="1" start="0:16" type="bool"/>
1213    <field name="Split block" size="1" start="0:17" type="bool"/>
1214    <field name="Alpha hint" size="1" start="0:18" type="bool"/>
1215    <field name="Tiled header" size="1" start="0:19" type="bool"/>
1216    <field name="Prefetch" size="1" start="0:20" type="bool"/>
1217    <field name="Compression mode" size="6" start="0:26" type="AFBC Compression Mode"/>
1218
1219    <field name="Header stride" size="32" start="5:0" type="uint"/>
1220  </struct>
1221
1222  <struct name="Plane ASTC 2D Overlay" size="8">
1223    <field name="Block width" size="3" start="26" type="ASTC 2D Dimension"/>
1224    <field name="Block height" size="3" start="29" type="ASTC 2D Dimension"/>
1225  </struct>
1226
1227  <struct name="Plane ASTC 3D Overlay" size="8">
1228    <field name="Block width" size="2" start="26" type="ASTC 3D Dimension"/>
1229    <field name="Block height" size="2" start="28" type="ASTC 3D Dimension"/>
1230    <field name="Block depth" size="2" start="30" type="ASTC 3D Dimension"/>
1231  </struct>
1232
1233  <struct name="Plane ASTC Overlay" size="8">
1234    <field name="Decode HDR" size="1" start="24" type="bool"/>
1235    <field name="Decode Wide" size="1" start="25" type="bool"/>
1236
1237    <field name="2D" size="32" start="0" type="Plane ASTC 2D Overlay"/>
1238    <field name="3D" size="32" start="0" type="Plane ASTC 3D Overlay"/>
1239  </struct>
1240
1241  <struct name="Two-Plane YUV Chroma Overlay" size="8">
1242    <field name="Width" size="16" start="5:0" type="uint"/>
1243    <field name="Height" size="16" start="5:16" type="uint"/>
1244    <field name="Secondary Pointer" size="64" start="6:0" type="address"/>
1245  </struct>
1246
1247  <struct name="Plane AFRC Overlay" size="8">
1248    <field name="Codec arguments" size="8" start="0:8" type="uint"/>
1249
1250    <field name="Block size" size="4" start="0:20" type="AFRC Block Size"/>
1251    <field name="Format" size="8" start="0:24" type="AFRC Format"/>
1252  </struct>
1253
1254  <struct name="Plane" size="8" align="32">
1255    <field name="Type" size="4" start="0:0" type="Descriptor Type" default="Plane"/>
1256    <field name="Plane type" size="4" start="0:4" type="Plane Type"/>
1257
1258    <field name="AFBC" size="32" start="0:0" type="Plane AFBC Overlay"/>
1259    <field name="ASTC" size="32" start="0:0" type="Plane ASTC Overlay"/>
1260    <field name="AFRC" size="32" start="0:0" type="Plane AFRC Overlay"/>
1261    <field name="Two-Plane YUV Chroma" size="256" start="0:0" type="Two-Plane YUV Chroma Overlay"/>
1262
1263    <!-- Not AFBC nor AFRC -->
1264    <field name="Clump ordering" size="4" start="0:8" type="Clump Ordering"/>
1265
1266    <!-- Generic, Chroma 2p -->
1267    <field name="Clump format" size="8" start="24" type="Clump Format"/>
1268
1269    <field name="Size" size="32" start="1:0" type="uint"/>
1270    <field name="Pointer" size="64" start="2:0" type="address"/>
1271    <field name="Row stride" size="32" start="4:0" type="uint"/>
1272    <field name="Slice stride" size="32" start="6:0" type="int"/>
1273    <field name="Width" size="16" start="7:0" type="uint"/>
1274    <field name="Height" size="16" start="7:16" type="uint"/>
1275  </struct>
1276
1277  <struct name="Texture" size="8" align="32">
1278    <field name="Type" size="4" start="0:0" type="Descriptor Type" default="Texture"/>
1279    <field name="Dimension" size="2" start="0:4" type="Texture Dimension"/>
1280    <field name="Sample corner position" size="1" start="0:8" type="bool" default="false"/>
1281    <field name="Normalize coordinates" size="1" start="0:9" type="bool" default="false"/>
1282    <field name="Format" size="22" start="0:10" type="Pixel Format"/>
1283    <field name="Width" size="16" start="1:0" type="uint" modifier="minus(1)"/>
1284    <field name="Height" size="16" start="1:16" type="uint" modifier="minus(1)"/>
1285    <field name="Swizzle" size="12" start="2:0" type="uint"/>
1286    <field name="Texel interleave" size="1" start="2:12" type="bool"/>
1287    <field name="Levels" size="5" start="2:16" type="uint" default="1" modifier="minus(1)"/>
1288    <field name="Minimum level" size="5" start="2:24" type="uint"/>
1289    <field name="Minimum LOD" size="13" start="3:0" type="ulod" default="0"/>
1290    <field name="Sample count" size="3" start="3:13" type="uint" default="1" modifier="log2"/>
1291    <field name="Maximum LOD" size="13" start="3:16" type="ulod" default="0"/>
1292    <field name="Surfaces" size="64" start="4:0" type="address"/>
1293    <field name="Array size" size="16" start="6:0" type="uint" modifier="minus(1)" default="1"/>
1294    <field name="Depth" size="16" start="7:0" type="uint" modifier="minus(1)" default="1"/>
1295  </struct>
1296
1297  <enum name="Shader Register Allocation">
1298    <value name="64 Per Thread" value="0"/>
1299    <value name="32 Per Thread" value="2"/>
1300  </enum>
1301
1302  <enum name="Flush to zero mode">
1303    <value name="Preserve subnormals" value="0"/>
1304    <value name="DX11" value="1"/>
1305    <value name="Always" value="2"/>
1306    <value name="Abrupt" value="3"/>
1307  </enum>
1308
1309  <struct name="Preload" size="1">
1310    <field name="R48-R63" size="16" start="0:0" type="hex"/>
1311    <field name="R55" size="1" start="0:7" type="bool"/>
1312    <field name="R56" size="1" start="0:8" type="bool"/>
1313    <field name="R57" size="1" start="0:9" type="bool"/>
1314    <field name="R58" size="1" start="0:10" type="bool"/>
1315    <field name="R59" size="1" start="0:11" type="bool"/>
1316    <field name="R60" size="1" start="0:12" type="bool"/>
1317    <field name="R61" size="1" start="0:13" type="bool"/>
1318    <field name="R62" size="1" start="0:14" type="bool"/>
1319    <field name="R63" size="1" start="0:15" type="bool"/>
1320  </struct>
1321
1322  <enum name="Coverage bitmask type">
1323    <value name="DX" value="0"/>
1324    <value name="GL" value="1"/>
1325  </enum>
1326
1327  <enum name="Warp limit">
1328    <value name="Full" value="0"/>
1329    <value name="Half" value="1"/>
1330    <value name="One-quarter" value="2"/>
1331    <value name="One-height" value="3"/>
1332  </enum>
1333
1334  <struct name="Shader Program" size="8" align="32">
1335    <field name="Type" size="4" start="0:0" type="Descriptor Type" default="Shader"/>
1336    <field name="Stage" size="4" start="0:4" type="Shader stage"/>
1337    <field name="Fragment coverage bitmask type" size="1" start="0:8" type="Coverage bitmask type"/>
1338    <field name="Vertex warp limit" size="2" start="0:8" type="Warp limit"/>
1339    <field name="Suppress NaN" size="1" start="0:16" type="bool"/>
1340    <field name="Flush to zero mode" size="2" start="0:17" type="Flush to zero mode"/>
1341    <field name="Suppress Inf" size="1" start="0:19" type="bool"/>
1342    <field name="Requires helper threads" size="1" start="0:28" type="bool"/> <!-- Fragment only -->
1343    <field name="Shader contains JUMP_EX" size="1" start="0:29" type="bool"/>
1344    <field name="Register allocation" size="2" start="0:30" type="Shader Register Allocation"/>
1345    <field name="Preload" size="16" start="1:0" type="Preload"/>
1346    <field name="Binary" size="64" start="2:0" type="address"/>
1347  </struct>
1348
1349  <struct name="Scissor">
1350    <field name="Scissor Minimum X" size="16" start="0:0" type="uint"/>
1351    <field name="Scissor Minimum Y" size="16" start="0:16" type="uint"/>
1352    <field name="Scissor Maximum X" size="16" start="1:0" type="uint"/>
1353    <field name="Scissor Maximum Y" size="16" start="1:16" type="uint"/>
1354  </struct>
1355
1356  <struct name="Local Storage" size="8" align="64">
1357    <field name="TLS Size" size="5" start="0:0" type="uint"/>
1358    <field name="WLS Instances" size="5" start="1:0" type="uint" modifier="log2" prefix="MALI_LOCAL_STORAGE" default="MALI_LOCAL_STORAGE_NO_WORKGROUP_MEM">
1359      <value name="No Workgroup Mem" value="0x80000000"/>
1360    </field>
1361    <field name="WLS Size Base" size="2" start="1:5" type="uint"/>
1362    <field name="WLS Size Scale" size="5" start="1:8" type="uint"/>
1363    <field name="TLS Base Pointer" size="48" start="2:0" type="address"/>
1364    <field name="TLS Address Mode" size="4" start="3:28" type="Address Mode"/>
1365    <field name="WLS Base Pointer" size="64" start="4:0" type="address"/>
1366  </struct>
1367
1368  <enum name="Color Buffer Internal Format">
1369    <value name="Raw Value" value="0"/>
1370    <value name="R8G8B8A8" value="1"/>
1371    <value name="R10G10B10A2" value="2"/>
1372    <value name="R8G8B8A2" value="3"/>
1373    <value name="R4G4B4A4" value="4"/>
1374    <value name="R5G6B5A0" value="5"/>
1375    <value name="R5G5B5A1" value="6"/>
1376    <value name="RAW8" value="32"/>
1377    <value name="RAW16" value="33"/>
1378    <value name="RAW32" value="34"/>
1379    <value name="RAW64" value="35"/>
1380    <value name="RAW128" value="36"/>
1381  </enum>
1382
1383  <enum name="Color Format">
1384    <value name="RAW8" value="0"/>
1385    <value name="RAW16" value="1"/>
1386    <value name="RAW24" value="2"/>
1387    <value name="RAW32" value="3"/>
1388    <value name="RAW48" value="4"/>
1389    <value name="RAW64" value="5"/>
1390    <value name="RAW96" value="6"/>
1391    <value name="RAW128" value="7"/>
1392    <value name="RAW192" value="8"/>
1393    <value name="RAW256" value="9"/>
1394    <value name="RAW384" value="10"/>
1395    <value name="RAW512" value="11"/>
1396    <value name="RAW768" value="12"/>
1397    <value name="RAW1024" value="13"/>
1398    <value name="RAW1536" value="14"/>
1399    <value name="RAW2048" value="15"/>
1400    <value name="R8" value="16"/>
1401    <value name="R8G8" value="17"/>
1402    <value name="R8G8B8" value="18"/>
1403    <value name="R8G8B8A8" value="19"/>
1404    <value name="R4G4B4A4" value="20"/>
1405    <value name="R5G6B5" value="21"/>
1406    <value name="R8G8B8_FROM_R8G8B8A2" value="22"/>
1407    <value name="R10G10B10A2" value="24"/>
1408    <value name="A2B10G10R10" value="25"/>
1409    <value name="R5G5B5A1" value="28"/>
1410    <value name="A1B5G5R5" value="29"/>
1411    <value name="NATIVE" value="31"/>
1412  </enum>
1413
1414  <enum name="Downsampling Accumulation Mode">
1415    <value name="Unsigned normalized integer" value="0"/>
1416    <value name="Signed normalized integer" value="1"/>
1417  </enum>
1418
1419  <enum name="Sample Layout">
1420    <value name="Ordered 4x Grid" value="0"/>
1421    <value name="Rotated 4x Grid" value="1"/>
1422    <value name="D3D 8x Grid" value="2"/>
1423    <value name="D3D 16x Grid" value="3"/>
1424  </enum>
1425
1426  <enum name="ZS Format">
1427    <value name="D16" value="1"/>
1428    <value name="D24" value="2"/>
1429    <value name="D24X8" value="4"/>
1430    <value name="D24S8" value="5"/>
1431    <value name="D32" value="14"/>
1432  </enum>
1433
1434  <enum name="ZS Preload Format">
1435    <value name="D32_S8X24" value="4"/>
1436  </enum>
1437
1438  <enum name="S Format">
1439    <value name="S8" value="1"/>
1440    <value name="X24S8" value="4"/>
1441  </enum>
1442
1443  <enum name="Tie-Break Rule">
1444    <value name="0_IN_180_OUT" value="0"/>
1445    <value name="0_OUT_180_IN" value="1"/>
1446    <value name="MINUS_180_IN_0_OUT" value="2"/>
1447    <value name="MINUS_180_OUT_0_IN" value="3"/>
1448    <value name="90_IN_270_OUT" value="4"/>
1449    <value name="90_OUT_270_IN" value="5"/>
1450    <value name="MINUS_90_IN_90_OUT" value="6"/>
1451    <value name="MINUS_90_OUT_90_IN" value="7"/>
1452  </enum>
1453
1454  <struct name="RT Buffer">
1455    <field name="Base" size="64" start="0:0" type="address"/>
1456    <field name="Row Stride" size="32" start="2:0" type="uint"/>
1457    <field name="Surface Stride" size="32" start="3:0" type="uint"/>
1458  </struct>
1459
1460  <enum name="Sample Pattern">
1461    <value name="Single-sampled" value="0"/>
1462    <value name="Ordered 4x Grid" value="1"/>
1463    <value name="Rotated 4x Grid" value="2"/>
1464    <value name="D3D 8x Grid" value="3"/>
1465    <value name="D3D 16x Grid" value="4"/>
1466  </enum>
1467
1468  <enum name="Z Internal Format">
1469    <value name="D16" value="0"/>
1470    <value name="D24" value="1"/>
1471    <value name="D32" value="2"/>
1472  </enum>
1473
1474  <enum name="Pre Post Frame Shader Mode">
1475    <value name="Never" value="0"/>
1476    <value name="Always" value="1"/>
1477    <value name="Intersect" value="2"/>
1478    <value name="Early ZS always" value="3"/>
1479  </enum>
1480
1481  <enum name="Downscale">
1482    <value name="None" value="0"/>
1483    <value name="2x" value="1"/>
1484    <value name="4x" value="2"/>
1485  </enum>
1486
1487  <struct name="Framebuffer Parameters" align="64">
1488    <field name="Pre Frame 0" size="3" start="0:0" type="Pre Post Frame Shader Mode"/>
1489    <field name="Pre Frame 1" size="3" start="0:3" type="Pre Post Frame Shader Mode"/>
1490    <field name="Post Frame" size="3" start="0:6" type="Pre Post Frame Shader Mode"/>
1491    <field name="Downscale geometry" size="2" start="0:9" type="Downscale"/>
1492    <field name="Internal layer index" size="8" start="0:24" type="uint"/>
1493    <field name="Frame argument" size="64" start="2:0" type="hex"/>
1494    <field name="Sample Locations" size="64" start="4:0" type="address"/>
1495    <field name="Frame Shader DCDs" size="64" start="6:0" type="address"/>
1496    <field name="Width" size="16" start="8:0" type="uint" modifier="minus(1)"/>
1497    <field name="Height" size="16" start="8:16" type="uint" modifier="minus(1)"/>
1498    <field name="Bound Min X" size="16" start="9:0" type="uint"/>
1499    <field name="Bound Min Y" size="16" start="9:16" type="uint"/>
1500    <field name="Bound Max X" size="16" start="10:0" type="uint"/>
1501    <field name="Bound Max Y" size="16" start="10:16" type="uint"/>
1502    <field name="Sample Count" size="3" start="11:0" type="uint" default="1" modifier="log2"/>
1503    <field name="Sample Pattern" size="3" start="11:3" type="Sample Pattern"/>
1504    <field name="Tie-Break Rule" size="3" start="11:6" type="Tie-Break Rule"/>
1505    <field name="Effective Tile Size" size="4" start="11:9" type="uint" modifier="log2"/>
1506    <field name="First provoking vertex" size="1" start="11:14" type="bool"/>
1507    <field name="Point sprite coord origin max Y" size="1" start="11:15" type="bool" default="true"/>
1508    <field name="Blend suppress Inf" size="1" start="11:16" type="bool"/>
1509    <field name="Blend suppress NaN" size="1" start="11:17" type="bool"/>
1510    <field name="Blend suppress denorm" size="1" start="11:18" type="bool"/>
1511    <field name="Render Target Count" size="4" start="11:19" type="uint" modifier="minus(1)"/>
1512    <field name="Color Buffer Allocation" size="8" start="11:24" type="uint" modifier="shr(10)"/>
1513    <field name="S Clear" size="8" start="12:0" type="uint"/>
1514    <field name="S Write Enable" size="1" start="12:8" type="bool"/>
1515    <field name="S Preload Enable" size="1" start="12:9" type="bool"/>
1516    <field name="S Unload Enable" size="1" start="12:10" type="bool"/>
1517    <field name="Z Internal Format" size="2" start="12:16" type="Z Internal Format"/>
1518    <field name="Z Write Enable" size="1" start="12:18" type="bool"/>
1519    <field name="Z Preload Enable" size="1" start="12:19" type="bool"/>
1520    <field name="Z Unload Enable" size="1" start="12:20" type="bool"/>
1521    <field name="Has ZS CRC Extension" size="1" start="12:21" type="bool"/>
1522    <field name="Empty Tile Read Enable" size="1" start="12:28" type="bool"/>
1523    <field name="Empty Tile Write Enable" size="1" start="12:29" type="bool"/>
1524    <field name="CRC Read Enable" size="1" start="12:30" type="bool"/>
1525    <field name="CRC Write Enable" size="1" start="12:31" type="bool"/>
1526    <field name="Z Clear" size="32" start="13:0" type="float"/>
1527    <field name="Tiler" size="64" start="14:0" type="address"/>
1528  </struct>
1529
1530  <struct name="ZS CRC Extension" align="64" size="16">
1531    <field name="ZS Write Format" size="4" start="0:0" type="ZS Format"/>
1532    <field name="ZS Block Format" size="4" start="0:4" type="Block Format"/>
1533    <field name="ZS MSAA" size="2" start="0:8" default="Single" type="MSAA"/>
1534    <field name="CRC Render Target" size="4" start="0:13" type="uint"/>
1535    <field name="S Write Format" size="4" start="0:16" type="S Format"/>
1536    <field name="S Block Format" size="4" start="0:20" type="Block Format"/>
1537    <field name="S MSAA" size="2" start="0:24" default="Single" type="MSAA"/>
1538
1539    <field name="AFBC Reverse Issue Order" size="1" start="0:30" type="bool"/>
1540    <!-- Note: Must be set if AFBC is enabled and effective_tile_size is not 16x16 -->
1541    <field name="ZS Clean Pixel Write Enable" size="1" start="0:31" type="bool"/>
1542
1543    <field name="CRC Row Stride" size="32" start="1:0" type="uint"/>
1544    <field name="CRC Clear Color" size="64" start="2:0" type="hex"/>
1545    <field name="CRC Base" size="64" start="4:0" type="address"/>
1546
1547    <field name="ZS Writeback Base" size="64" start="8:0" type="address"/>
1548    <!-- Header clumps per row (different than Bifrost's AFBC line stride) -->
1549    <field name="ZS Writeback Row Stride" size="32" start="10:0" type="uint"/>
1550    <field name="ZS Writeback Surface Stride" size="32" start="11:0" type="uint"/>
1551    <field name="ZS AFBC Body Offset" size="32" start="11:0" type="uint"/>
1552
1553    <field name="S Writeback Base" size="64" start="12:0" type="address"/>
1554    <field name="S Writeback Row Stride" size="32" start="14:0" type="uint"/>
1555    <field name="S Writeback Surface Stride" size="32" start="15:0" type="uint"/>
1556    <field name="S AFBC Body Offset" size="32" start="15:0" type="uint"/>
1557  </struct>
1558
1559  <enum name="YUV Conv K6">
1560    <value name="0" value="0"/>
1561    <value name="16" value="1"/>
1562  </enum>
1563
1564  <enum name="YUV Conv K7 Clamp">
1565    <value name="MINUS_128_TO_127" value="0"/>
1566    <value name="MINUS_112_TO_111" value="1"/>
1567    <value name="0_TO_255" value="2"/>
1568    <value name="16_TO_239" value="3"/>
1569  </enum>
1570
1571  <enum name="YUV Conv K8">
1572    <value name="220" value="0"/>
1573    <value name="256" value="1"/>
1574  </enum>
1575
1576  <struct name="Render Target YUV Overlay" size="16">
1577    <field name="Swizzle" size="3" start="2:16" type="YUV Swizzle"/>
1578    <field name="Full Range" size="1" start="2:20" type="bool"/>
1579    <field name="Conversion Mode" size="4" start="2:21" type="YUV Conversion Mode"/>
1580    <field name="Cr Siting" size="3" start="2:25" type="YUV Cr Siting"/>
1581    <field name="Unsigned Cr Range" size="1" start="2:28" type="bool"/>
1582    <field name="Plane 0 Base" size="64" start="4:0" type="address"/>
1583    <field name="Plane 1 Base" size="64" start="6:0" type="address"/>
1584    <field name="Plane 2 Base" size="64" start="8:0" type="address"/>
1585    <field name="Plane 0 Stride" size="32" start="10:0" type="uint"/>
1586    <field name="Plane 1 2 Stride" size="32" start="11:0" type="uint"/>
1587  </struct>
1588
1589  <struct name="Render Target AFBC Overlay" size="16">
1590    <field name="YUV Transform" size="1" start="2:0" type="bool"/>
1591    <field name="Split block" size="1" start="2:1" type="bool"/>
1592    <field name="Wide block" size="1" start="2:2" type="bool"/>
1593    <field name="Reverse issue order" size="1" start="2:3" type="bool"/>
1594    <field name="Front buffer" size="1" start="2:4" type="bool"/>
1595    <field name="Alpha hint" size="1" start="2:5" type="bool"/>
1596    <field name="Compression mode" size="6" start="2:10" type="AFBC Compression Mode"/>
1597
1598    <field name="Header" size="64" start="8:0" type="address"/>
1599    <field name="Row stride" size="32" start="10:0" type="uint"/>
1600    <field name="Body offset" size="32" start="11:0" type="uint"/>
1601  </struct>
1602
1603  <struct name="Render Target AFRC Overlay" size="16">
1604    <field name="Writeback Format" size="8" start="1:0" type="Color Format"/>
1605    <field name="Block Size" size="4" start="2:4" type="AFRC Block Size"/>
1606    <field name="Format" size="8" start="2:8" type="AFRC Format"/>
1607  </struct>
1608
1609  <struct name="RT Clear">
1610    <field name="Color 0" size="32" start="0:0" type="uint"/>
1611    <field name="Color 1" size="32" start="1:0" type="uint"/>
1612    <field name="Color 2" size="32" start="2:0" type="uint"/>
1613    <field name="Color 3" size="32" start="3:0" type="uint"/>
1614  </struct>
1615
1616  <struct name="Render Target" align="64">
1617    <field name="YUV" size="512" start="0:0" type="Render Target YUV Overlay"/>
1618    <field name="AFBC" size="512" start="0:0" type="Render Target AFBC Overlay"/>
1619    <field name="AFRC" size="512" start="0:0" type="Render Target AFRC Overlay"/>
1620    <field name="Writeback Mode" size="4" start="0:0" type="Writeback Mode" default="Compat"/>
1621    <field name="Internal Buffer Offset" size="12" start="0:4" type="uint" modifier="shr(4)"/>
1622    <field name="YUV Enable" size="1" start="0:24" type="bool"/>
1623    <field name="Dithered Clear" size="1" start="0:25" type="bool"/>
1624    <field name="Internal Format" size="6" start="0:26" type="Color Buffer Internal Format"/>
1625    <field name="Write Enable" size="1" start="1:0" type="bool"/>
1626    <field name="Writeback Format" size="5" start="1:3" type="Color Format"/>
1627    <field name="Writeback Block Format" size="4" start="1:8" type="Block Format"/>
1628    <field name="Writeback MSAA" size="2" start="1:12" type="MSAA"/>
1629    <field name="sRGB" size="1" start="1:14" type="bool"/>
1630    <field name="Dithering Enable" size="1" start="1:15" type="bool"/>
1631    <field name="Swizzle" size="12" start="1:16" type="uint"/>
1632    <field name="Clean Pixel Write Enable" size="1" start="1:31" type="bool"/>
1633    <field name="RGB" size="128" start="8:0" type="RT Buffer"/>
1634    <field name="Clear" size="128" start="12:0" type="RT Clear"/>
1635  </struct>
1636
1637  <enum name="Chunk Size">
1638    <value name="256 KiB" value="0"/>
1639    <value name="512 KiB" value="1"/>
1640    <value name="1 MiB" value="2"/>
1641    <value name="2 MiB" value="3"/>
1642  </enum>
1643
1644  <enum name="Chunk Partition">
1645    <value name="Dynamic" value="0"/>
1646    <value name="Static 25%" value="1"/>
1647    <value name="Static 50%" value="2"/>
1648    <value name="Static 75%" value="3"/>
1649  </enum>
1650
1651  <!-- Actually a buffer descriptor, split out for backwards compatibility.-->
1652  <struct name="Tiler Heap" align="32">
1653    <field name="Type" size="4" start="0:0" type="Descriptor Type" default="Buffer"/>
1654    <field name="Buffer type" size="4" start="0:4" type="Buffer Type" default="Tiler heap"/>
1655    <field name="Chunk size" size="2" start="0:8" type="Chunk Size" default="256 KiB"/>
1656    <field name="Partitioning" size="2" start="0:10" type="Chunk Partition" default="Dynamic"/>
1657    <field name="Size" size="32" start="1:0" type="uint" modifier="align(4096)"/>
1658    <field name="Base" size="64" start="2:0" type="address"/>
1659    <field name="Bottom" size="64" start="4:0" type="address"/>
1660    <field name="Top" size="64" start="6:0" type="address"/>
1661  </struct>
1662
1663  <struct name="Tiler Weights" size="8">
1664    <field name="Weight0" size="16" start="0:16" type="uint"/>
1665    <field name="Weight1" size="16" start="1:16" type="uint"/>
1666    <field name="Weight2" size="16" start="2:16" type="uint"/>
1667    <field name="Weight3" size="16" start="3:16" type="uint"/>
1668    <field name="Weight4" size="16" start="4:16" type="uint"/>
1669    <field name="Weight5" size="16" start="5:16" type="uint"/>
1670    <field name="Weight6" size="16" start="6:16" type="uint"/>
1671    <field name="Weight7" size="16" start="7:16" type="uint"/>
1672  </struct>
1673
1674  <struct name="Tiler State" size="16">
1675    <field name="Word0" size="32" start="0:0" type="uint"/>
1676    <field name="Word1" size="32" start="1:0" type="uint"/>
1677    <field name="Word2" size="32" start="2:0" type="uint"/>
1678    <field name="Word3" size="32" start="3:0" type="uint"/>
1679    <field name="Word4" size="32" start="4:0" type="uint"/>
1680    <field name="Word5" size="32" start="5:0" type="uint"/>
1681    <field name="Word6" size="32" start="6:0" type="uint"/>
1682    <field name="Word7" size="32" start="7:0" type="uint"/>
1683  </struct>
1684
1685  <struct name="Tiler Context" size="32" align="64">
1686    <field name="Polygon List" size="64" start="0:0" type="address"/>
1687    <field name="Hierarchy Mask" size="13" start="2:0" type="uint"/>
1688    <field name="Sample Pattern" size="3" start="2:13" type="Sample Pattern"/>
1689    <field name="Sample test disable" size="1" start="2:17" type="bool"/>
1690    <field name="First provoking vertex" size="1" start="2:18" type="bool"/>
1691    <field name="FB Width" size="16" start="3:0" type="uint" modifier="minus(1)"/>
1692    <field name="FB Height" size="16" start="3:16" type="uint" modifier="minus(1)"/>
1693    <field name="Layer count" size="8" start="4:0" type="uint" default="1" modifier="minus(1)"/>
1694    <field name="Layer offset" size="8" start="4:8" type="uint"/>
1695    <field name="Heap" size="64" start="6:0" type="address"/>
1696    <field name="Geometry buffer size" size="12" start="8:0" type="uint" default="65536" modifier="shr(12)"/>
1697    <field name="Geometry buffer" size="52" start="8:12" type="address" modifier="shr(12)"/>
1698    <field name="Completed top" size="64" start="10:0" type="address"/>
1699    <field name="Completed bottom" size="64" start="12:0" type="address"/>
1700    <field name="Private state" size="256" start="24:0" type="Tiler State"/>
1701  </struct>
1702
1703  <struct name="Framebuffer Padding" size="16">
1704  </struct>
1705
1706  <aggregate name="Framebuffer" align="64">
1707    <section name="Parameters" offset="0" type="Framebuffer Parameters"/>
1708    <section name="Padding" offset="64" type="Framebuffer Padding"/>
1709  </aggregate>
1710
1711  <struct name="Framebuffer pointer">
1712    <field name="Type" start="0" size="1" type="bool" default="true"/>
1713    <field name="ZS CRC Extension present" start="1" size="1" type="bool"/>
1714    <field name="Render target count" start="2" size="4" type="uint" modifier="minus(1)"/>
1715    <field name="Pointer" start="6" size="58" type="address" modifier="shr(6)"/>
1716  </struct>
1717
1718  <struct name="Fragment Job Payload" size="8">
1719    <field name="Bound Min X" size="12" start="0:0" type="uint"/>
1720    <field name="Bound Min Y" size="12" start="0:16" type="uint"/>
1721    <field name="Bound Max X" size="12" start="1:0" type="uint"/>
1722    <field name="Bound Max Y" size="12" start="1:16" type="uint"/>
1723    <field name="Tile render order" size="3" start="1:28" type="Tile Render Order" default="Z Order"/>
1724    <field name="Has Tile Enable Map" size="1" start="1:31" type="bool"/>
1725    <field name="Framebuffer" size="64" start="2:0" type="address"/>
1726    <field name="Tile Enable Map" size="64" start="4:0" type="address"/>
1727    <field name="Tile Enable Map Row Stride" size="8" start="6:0" type="uint"/>
1728  </struct>
1729
1730  <struct name="Shader Environment" size="16" align="64">
1731    <field name="Attribute offset" start="0:0" size="32" type="uint"/>
1732    <field name="FAU count" start="1:0" size="8" type="uint"/>
1733    <field name="Resources" start="8:0" size="64" type="address"/>
1734    <field name="Shader" start="10:0" size="64" type="address"/>
1735    <field name="Thread storage" start="12:0" size="64" type="address"/>
1736    <field name="FAU" start="14:0" size="64" type="address"/>
1737  </struct>
1738
1739  <struct name="Compute size workgroup" size="4">
1740    <field name="Workgroup size X" start="0" size="10" type="uint" modifier="minus(1)"/>
1741    <field name="Workgroup size Y" start="10" size="10" type="uint" modifier="minus(1)"/>
1742    <field name="Workgroup size Z" start="20" size="10" type="uint" modifier="minus(1)"/>
1743    <field name="Allow merging workgroups" start="31" size="1" type="bool"/>
1744  </struct>
1745
1746  <struct name="Resource" size="4" align="64">
1747    <field name="Address" start="0:0" size="56" type="address"/>
1748    <field name="Contains descriptors" start="1:24" size="1" type="bool" default="true"/>
1749    <field name="Size" start="2:0" size="64" type="uint"/> <!-- bytes -->
1750  </struct>
1751
1752  <struct name="Depth/stencil" size="8" align="32">
1753    <field name="Type" size="4" start="0:0" type="Descriptor Type" default="Depth/stencil"/>
1754    <field name="Front compare function" size="3" start="0:4" type="Func"/>
1755    <field name="Front stencil fail" size="3" start="0:7" type="Stencil Op"/>
1756    <field name="Front depth fail" size="3" start="0:10" type="Stencil Op"/>
1757    <field name="Front depth pass" size="3" start="0:13" type="Stencil Op"/>
1758    <field name="Back compare function" size="3" start="0:16" type="Func"/>
1759    <field name="Back stencil fail" size="3" start="0:19" type="Stencil Op"/>
1760    <field name="Back depth fail" size="3" start="0:22" type="Stencil Op"/>
1761    <field name="Back depth pass" size="3" start="0:25" type="Stencil Op"/>
1762    <field name="Stencil from shader" size="1" start="0:30" type="bool"/>
1763    <field name="Stencil test enable" size="1" start="0:31" type="bool"/>
1764    <field name="Front write mask" size="8" start="1:0" type="hex"/>
1765    <field name="Back write mask" size="8" start="1:8" type="hex"/>
1766    <field name="Front value mask" size="8" start="1:16" type="hex"/>
1767    <field name="Back value mask" size="8" start="1:24" type="hex"/>
1768    <field name="Front reference value" size="8" start="2:0" type="hex"/>
1769    <field name="Back reference value" size="8" start="2:8" type="hex"/>
1770    <field name="Shader read only Z/S" size="1" start="4:21" type="bool"/>
1771    <field name="Depth cull enable" size="1" start="4:22" type="bool" default="true"/>
1772    <field name="Depth clamp mode" size="2" start="4:23" type="Depth Clamp Mode" default="[0, 1]"/>
1773    <field name="Depth source" size="2" start="4:25" type="Depth Source" default="Fixed function"/>
1774    <field name="Depth write enable" size="1" start="4:27" type="bool"/>
1775    <field name="Depth bias enable" size="1" start="4:28" type="bool"/>
1776    <field name="Depth function" size="3" start="4:29" type="Func"/>
1777    <field name="Depth units" size="32" start="5:0" type="float"/>
1778    <field name="Depth factor" size="32" start="6:0" type="float"/>
1779    <field name="Depth bias clamp" size="32" start="7:0" type="float"/>
1780  </struct>
1781
1782  <struct name="Vertex Array" size="3">
1783    <field name="Packet" size="1" start="0:0" type="bool"/>
1784
1785    <!-- Written by hardware in packet mode -->
1786    <field name="Pointer" size="58" start="0:6" type="address" modifier="shr(6)"/>
1787
1788    <!-- Written by hardware, leave zero -->
1789    <field name="Vertex packet stride" size="16" start="2:0" type="uint"/>
1790    <field name="Vertex attribute stride" size="16" start="2:16" type="uint"/>
1791  </struct>
1792
1793  <struct name="DCD Flags 0" size="1">
1794    <field name="Allow forward pixel to kill" size="1" start="0" type="bool"/>
1795    <field name="Allow forward pixel to be killed" size="1" start="1" type="bool"/>
1796    <field name="Pixel kill operation" size="2" start="2" type="Pixel Kill"/>
1797    <field name="ZS update operation" size="2" start="4" type="Pixel Kill"/>
1798    <field name="Allow primitive reorder" size="1" start="6" type="bool"/>
1799    <field name="Overdraw alpha0" start="7" size="1" type="bool"/>
1800    <field name="Overdraw alpha1" size="1" start="8" type="bool"/>
1801    <field name="Clean Fragment Write" size="1" start="9" type="bool"/>
1802    <field name="Primitive Barrier" size="1" start="10" type="bool"/>
1803    <field name="Evaluate per-sample" size="1" start="11" type="bool"/>
1804    <field name="Single-sampled lines" size="1" start="13" type="bool"/>
1805    <field name="Occlusion query" size="2" start="14" type="Occlusion Mode" default="Disabled"/>
1806    <field name="Front face CCW" size="1" start="16" type="bool"/>
1807    <field name="Cull front face" size="1" start="17" type="bool"/>
1808    <field name="Cull back face" size="1" start="18" type="bool"/>
1809    <field name="Multisample enable" size="1" start="19" type="bool"/>
1810    <field name="Shader modifies coverage" size="1" start="20" type="bool"/>
1811    <field name="Alpha-to-coverage Invert" size="1" start="21" type="bool"/>
1812    <field name="Alpha-to-coverage" size="1" start="22" type="bool"/>
1813    <field name="Scissor to bounding box" size="1" start="23" type="bool"/>
1814  </struct>
1815
1816  <struct name="DCD Flags 1" size="1">
1817    <field name="Sample mask" size="16" start="0" type="uint"/>
1818    <field name="Render target mask" start="16" size="8" type="hex"/>
1819  </struct>
1820
1821  <struct name="DCD Flags 2" size="1">
1822    <field name="Read mask" size="12" start="0" type="hex"/>
1823    <field name="Write mask" size="12" start="12" type="hex"/>
1824  </struct>
1825
1826  <struct name="Draw" align="64">
1827    <!-- DCD flags 0 -->
1828    <field name="Allow forward pixel to kill" size="1" start="0:0" type="bool"/>
1829    <field name="Allow forward pixel to be killed" size="1" start="0:1" type="bool"/>
1830    <field name="Pixel kill operation" size="2" start="0:2" type="Pixel Kill"/>
1831    <field name="ZS update operation" size="2" start="0:4" type="Pixel Kill"/>
1832    <field name="Allow primitive reorder" size="1" start="0:6" type="bool"/>
1833    <field name="Overdraw alpha0" start="0:7" size="1" type="bool"/>
1834    <field name="Overdraw alpha1" size="1" start="0:8" type="bool"/>
1835    <field name="Clean Fragment Write" size="1" start="0:9" type="bool"/>
1836    <field name="Primitive Barrier" size="1" start="0:10" type="bool"/>
1837    <field name="Evaluate per-sample" size="1" start="0:11" type="bool"/>
1838    <field name="Single-sampled lines" size="1" start="0:13" type="bool"/>
1839    <field name="Occlusion query" size="2" start="0:14" type="Occlusion Mode" default="Disabled"/>
1840    <field name="Front face CCW" size="1" start="0:16" type="bool"/>
1841    <field name="Cull front face" size="1" start="0:17" type="bool"/>
1842    <field name="Cull back face" size="1" start="0:18" type="bool"/>
1843    <field name="Multisample enable" size="1" start="0:19" type="bool"/>
1844    <field name="Shader modifies coverage" size="1" start="0:20" type="bool"/>
1845    <field name="Alpha-to-coverage Invert" size="1" start="0:21" type="bool"/>
1846    <field name="Alpha-to-coverage" size="1" start="0:22" type="bool"/>
1847    <field name="Scissor to bounding box" size="1" start="0:23" type="bool"/>
1848    <!-- DCD flags 1 -->
1849    <field name="Sample mask" size="16" start="1:0" type="uint"/>
1850    <field name="Render target mask" start="1:16" size="8" type="hex"/>
1851    <field name="Vertex array" start="2:0" size="96" type="Vertex Array"/>
1852    <field name="Flags 2" start="5:0" size="32" type="DCD Flags 2"/>
1853    <field name="Minimum Z" start="6:0" size="32" type="float"/>
1854    <field name="Maximum Z" start="7:0" size="32" type="float"/>
1855    <field name="Depth/stencil" start="10:0" size="64" type="address"/>
1856    <field name="Blend count" start="12:0" size="4" type="uint"/>
1857    <field name="Blend" start="12:4" size="60" type="address" modifier="shr(4)"/>
1858    <field name="Occlusion" size="64" start="14:0" type="address"/>
1859    <field name="Shader" start="16:0" size="512" type="Shader Environment"/>
1860  </struct>
1861
1862  <struct name="Primitive Size" size="2">
1863    <field name="Constant" size="32" start="0:0" type="float"/>
1864    <field name="Size Array" size="64" start="0:0" type="uint"/>
1865  </struct>
1866
1867</panxml>
1868