xref: /aosp_15_r20/external/mesa3d/src/asahi/genxml/cmdbuf.xml (revision 6104692788411f58d303aa86923a9ff6ecaded22)
1*61046927SAndroid Build Coastguard Worker<?xml version="1.0" ?>
2*61046927SAndroid Build Coastguard Worker<genxml>
3*61046927SAndroid Build Coastguard Worker
4*61046927SAndroid Build Coastguard Worker  <enum name="Channel">
5*61046927SAndroid Build Coastguard Worker    <value name="R" value="0"/>
6*61046927SAndroid Build Coastguard Worker    <value name="G" value="1"/>
7*61046927SAndroid Build Coastguard Worker    <value name="B" value="2"/>
8*61046927SAndroid Build Coastguard Worker    <value name="A" value="3"/>
9*61046927SAndroid Build Coastguard Worker    <value name="1" value="4"/>
10*61046927SAndroid Build Coastguard Worker    <value name="0" value="5"/>
11*61046927SAndroid Build Coastguard Worker  </enum>
12*61046927SAndroid Build Coastguard Worker
13*61046927SAndroid Build Coastguard Worker  <enum name="ZS Func">
14*61046927SAndroid Build Coastguard Worker    <value name="Never" value="0"/>
15*61046927SAndroid Build Coastguard Worker    <value name="Less" value="1"/>
16*61046927SAndroid Build Coastguard Worker    <value name="Equal" value="2"/>
17*61046927SAndroid Build Coastguard Worker    <value name="Lequal" value="3"/>
18*61046927SAndroid Build Coastguard Worker    <value name="Greater" value="4"/>
19*61046927SAndroid Build Coastguard Worker    <value name="Not Equal" value="5"/>
20*61046927SAndroid Build Coastguard Worker    <value name="Gequal" value="6"/>
21*61046927SAndroid Build Coastguard Worker    <value name="Always" value="7"/>
22*61046927SAndroid Build Coastguard Worker  </enum>
23*61046927SAndroid Build Coastguard Worker
24*61046927SAndroid Build Coastguard Worker  <enum name="Compare func">
25*61046927SAndroid Build Coastguard Worker    <value name="Lequal" value="0"/>
26*61046927SAndroid Build Coastguard Worker    <value name="Gequal" value="1"/>
27*61046927SAndroid Build Coastguard Worker    <value name="Less" value="2"/>
28*61046927SAndroid Build Coastguard Worker    <value name="Greater" value="3"/>
29*61046927SAndroid Build Coastguard Worker    <value name="Equal" value="4"/>
30*61046927SAndroid Build Coastguard Worker    <value name="Not Equal" value="5"/>
31*61046927SAndroid Build Coastguard Worker    <value name="Always" value="6"/>
32*61046927SAndroid Build Coastguard Worker    <value name="Never" value="7"/>
33*61046927SAndroid Build Coastguard Worker  </enum>
34*61046927SAndroid Build Coastguard Worker
35*61046927SAndroid Build Coastguard Worker  <enum name="Stencil Op">
36*61046927SAndroid Build Coastguard Worker    <value name="Keep" value="0"/>
37*61046927SAndroid Build Coastguard Worker    <value name="Zero" value="1"/>
38*61046927SAndroid Build Coastguard Worker    <value name="Replace" value="2"/>
39*61046927SAndroid Build Coastguard Worker    <value name="Incr Sat" value="3"/>
40*61046927SAndroid Build Coastguard Worker    <value name="Decr Sat" value="4"/>
41*61046927SAndroid Build Coastguard Worker    <value name="Invert" value="5"/>
42*61046927SAndroid Build Coastguard Worker    <value name="Incr Wrap" value="6"/>
43*61046927SAndroid Build Coastguard Worker    <value name="Decr Wrap" value="7"/>
44*61046927SAndroid Build Coastguard Worker  </enum>
45*61046927SAndroid Build Coastguard Worker
46*61046927SAndroid Build Coastguard Worker  <enum name="Visibility Mode">
47*61046927SAndroid Build Coastguard Worker    <value name="None" value="0"/>
48*61046927SAndroid Build Coastguard Worker    <value name="Counting" value="2"/>
49*61046927SAndroid Build Coastguard Worker    <value name="Boolean" value="3"/>
50*61046927SAndroid Build Coastguard Worker  </enum>
51*61046927SAndroid Build Coastguard Worker
52*61046927SAndroid Build Coastguard Worker  <enum name="Polygon Mode">
53*61046927SAndroid Build Coastguard Worker    <value name="Fill" value="0"/>
54*61046927SAndroid Build Coastguard Worker    <value name="Line" value="1"/>
55*61046927SAndroid Build Coastguard Worker    <value name="Point" value="2"/>
56*61046927SAndroid Build Coastguard Worker  </enum>
57*61046927SAndroid Build Coastguard Worker
58*61046927SAndroid Build Coastguard Worker  <enum name="Primitive">
59*61046927SAndroid Build Coastguard Worker    <value name="Points" value="0"/>
60*61046927SAndroid Build Coastguard Worker    <value name="Lines" value="1"/>
61*61046927SAndroid Build Coastguard Worker    <value name="Line strip" value="3"/>
62*61046927SAndroid Build Coastguard Worker    <value name="Line loop" value="5"/>
63*61046927SAndroid Build Coastguard Worker    <value name="Triangles" value="6"/>
64*61046927SAndroid Build Coastguard Worker    <value name="Triangle strip" value="9"/>
65*61046927SAndroid Build Coastguard Worker    <value name="Triangle fan" value="11"/>
66*61046927SAndroid Build Coastguard Worker    <value name="Quads" value="14"/>
67*61046927SAndroid Build Coastguard Worker    <value name="Quad strip" value="15"/>
68*61046927SAndroid Build Coastguard Worker  </enum>
69*61046927SAndroid Build Coastguard Worker
70*61046927SAndroid Build Coastguard Worker  <enum name="Object Type">
71*61046927SAndroid Build Coastguard Worker    <value name="Triangle" value="0"/>
72*61046927SAndroid Build Coastguard Worker    <value name="Line" value="1"/>
73*61046927SAndroid Build Coastguard Worker    <value name="Point sprite UV=10" value="2"/>
74*61046927SAndroid Build Coastguard Worker    <value name="Point sprite UV=01" value="4"/>
75*61046927SAndroid Build Coastguard Worker    <!-- Line-filled tri. Point-filled tri. UV. Rect. Match RGX. -->
76*61046927SAndroid Build Coastguard Worker  </enum>
77*61046927SAndroid Build Coastguard Worker
78*61046927SAndroid Build Coastguard Worker  <enum name="Layout">
79*61046927SAndroid Build Coastguard Worker    <value name="Linear" value="0"/>
80*61046927SAndroid Build Coastguard Worker    <!-- Default layout if no other layout is set -->
81*61046927SAndroid Build Coastguard Worker    <value name="Null" value="1"/>
82*61046927SAndroid Build Coastguard Worker    <!-- Morton order -->
83*61046927SAndroid Build Coastguard Worker    <value name="Twiddled" value="2"/>
84*61046927SAndroid Build Coastguard Worker    <!-- With a metadata buffer -->
85*61046927SAndroid Build Coastguard Worker    <value name="Compressed" value="3"/>
86*61046927SAndroid Build Coastguard Worker  </enum>
87*61046927SAndroid Build Coastguard Worker
88*61046927SAndroid Build Coastguard Worker  <enum name="Channels">
89*61046927SAndroid Build Coastguard Worker    <value name="R8" value="0x00"/>
90*61046927SAndroid Build Coastguard Worker    <value name="R16" value="0x09"/>
91*61046927SAndroid Build Coastguard Worker    <value name="R8G8" value="0x0A"/>
92*61046927SAndroid Build Coastguard Worker    <value name="R5G6B5" value="0x0B"/>
93*61046927SAndroid Build Coastguard Worker    <value name="R4G4B4A4" value="0x0C"/>
94*61046927SAndroid Build Coastguard Worker    <value name="A1R5G5B5" value="0x0D"/>
95*61046927SAndroid Build Coastguard Worker    <value name="R5G5B5A1" value="0x0E"/>
96*61046927SAndroid Build Coastguard Worker    <value name="R32" value="0x21"/>
97*61046927SAndroid Build Coastguard Worker    <value name="R16G16" value="0x23"/>
98*61046927SAndroid Build Coastguard Worker    <value name="R11G11B10" value="0x25"/>
99*61046927SAndroid Build Coastguard Worker    <value name="R10G10B10A2" value="0x26"/>
100*61046927SAndroid Build Coastguard Worker    <value name="R9G9B9E5" value="0x27"/>
101*61046927SAndroid Build Coastguard Worker    <value name="R8G8B8A8" value="0x28"/>
102*61046927SAndroid Build Coastguard Worker    <value name="R32G32" value="0x31"/>
103*61046927SAndroid Build Coastguard Worker    <value name="R16G16B16A16" value="0x32"/>
104*61046927SAndroid Build Coastguard Worker
105*61046927SAndroid Build Coastguard Worker    <!-- Software-defined value selected not to clash with the hardware values.
106*61046927SAndroid Build Coastguard Worker         Texture buffer reads from this format are lowered. It is invalid to
107*61046927SAndroid Build Coastguard Worker         use this format for anything else. -->
108*61046927SAndroid Build Coastguard Worker    <value name="R32G32B32 (Emulated)" value="0x36"/>
109*61046927SAndroid Build Coastguard Worker
110*61046927SAndroid Build Coastguard Worker    <value name="R32G32B32A32" value="0x38"/>
111*61046927SAndroid Build Coastguard Worker    <value name="GBGR 422" value="0x40"/> <!-- Subsampled, swizzle BRG1 -->
112*61046927SAndroid Build Coastguard Worker    <value name="BGRG 422" value="0x41"/> <!-- Subsampled, swizzle BRG1 -->
113*61046927SAndroid Build Coastguard Worker
114*61046927SAndroid Build Coastguard Worker    <!-- Compressed -->
115*61046927SAndroid Build Coastguard Worker    <value name="PVRTC 2bpp" value="0x50"/>
116*61046927SAndroid Build Coastguard Worker    <value name="PVRTC 4bpp" value="0x51"/>
117*61046927SAndroid Build Coastguard Worker
118*61046927SAndroid Build Coastguard Worker    <value name="ETC2 RGB8" value="0x58"/>
119*61046927SAndroid Build Coastguard Worker    <value name="ETC2 RGBA8" value="0x59"/>
120*61046927SAndroid Build Coastguard Worker    <value name="ETC2 RGB8A1" value="0x5A"/>
121*61046927SAndroid Build Coastguard Worker    <value name="EAC R11" value="0x5B"/>
122*61046927SAndroid Build Coastguard Worker    <value name="EAC RG11" value="0x5C"/>
123*61046927SAndroid Build Coastguard Worker
124*61046927SAndroid Build Coastguard Worker    <!-- For LDR use with UNORM/no-sRGB, for sRGB use with UNORM/sRGB, for HDR
125*61046927SAndroid Build Coastguard Worker         use with FLOAT/no-sRGB -->
126*61046927SAndroid Build Coastguard Worker    <value name="ASTC 4x4" value="0x60"/>
127*61046927SAndroid Build Coastguard Worker    <value name="ASTC 5x4" value="0x61"/>
128*61046927SAndroid Build Coastguard Worker    <value name="ASTC 5x5" value="0x62"/>
129*61046927SAndroid Build Coastguard Worker    <value name="ASTC 6x5" value="0x63"/>
130*61046927SAndroid Build Coastguard Worker    <value name="ASTC 6x6" value="0x64"/>
131*61046927SAndroid Build Coastguard Worker    <value name="ASTC 8x5" value="0x65"/>
132*61046927SAndroid Build Coastguard Worker    <value name="ASTC 8x6" value="0x66"/>
133*61046927SAndroid Build Coastguard Worker    <value name="ASTC 8x8" value="0x67"/>
134*61046927SAndroid Build Coastguard Worker    <value name="ASTC 10x5" value="0x68"/>
135*61046927SAndroid Build Coastguard Worker    <value name="ASTC 10x6" value="0x69"/>
136*61046927SAndroid Build Coastguard Worker    <value name="ASTC 10x8" value="0x6A"/>
137*61046927SAndroid Build Coastguard Worker    <value name="ASTC 10x10" value="0x6B"/>
138*61046927SAndroid Build Coastguard Worker    <value name="ASTC 12x10" value="0x6C"/>
139*61046927SAndroid Build Coastguard Worker    <value name="ASTC 12x12" value="0x6D"/>
140*61046927SAndroid Build Coastguard Worker
141*61046927SAndroid Build Coastguard Worker    <value name="BC1" value="0x74"/>
142*61046927SAndroid Build Coastguard Worker    <value name="BC2" value="0x75"/>
143*61046927SAndroid Build Coastguard Worker    <value name="BC3" value="0x76"/>
144*61046927SAndroid Build Coastguard Worker    <value name="BC4" value="0x77"/>
145*61046927SAndroid Build Coastguard Worker    <value name="BC5" value="0x78"/>
146*61046927SAndroid Build Coastguard Worker    <value name="BC6H" value="0x79"/>
147*61046927SAndroid Build Coastguard Worker    <value name="BC6H Ufloat" value="0x7A"/>
148*61046927SAndroid Build Coastguard Worker    <value name="BC7" value="0x7B"/>
149*61046927SAndroid Build Coastguard Worker  </enum>
150*61046927SAndroid Build Coastguard Worker
151*61046927SAndroid Build Coastguard Worker  <enum name="Texture Type">
152*61046927SAndroid Build Coastguard Worker    <value name="Unorm" value="0"/>
153*61046927SAndroid Build Coastguard Worker    <value name="Snorm" value="1"/>
154*61046927SAndroid Build Coastguard Worker    <value name="Uint" value="2"/>
155*61046927SAndroid Build Coastguard Worker    <value name="Sint" value="3"/>
156*61046927SAndroid Build Coastguard Worker    <value name="Float" value="4"/>
157*61046927SAndroid Build Coastguard Worker    <value name="XR" value="5"/>
158*61046927SAndroid Build Coastguard Worker  </enum>
159*61046927SAndroid Build Coastguard Worker
160*61046927SAndroid Build Coastguard Worker  <struct name="CF binding header" size="4">
161*61046927SAndroid Build Coastguard Worker    <field name="Number of 32-bit slots" size="8" start="0:0" type="uint"/>
162*61046927SAndroid Build Coastguard Worker    <field name="Number of coefficient registers" size="8" start="0:8" type="uint"/>
163*61046927SAndroid Build Coastguard Worker  </struct>
164*61046927SAndroid Build Coastguard Worker
165*61046927SAndroid Build Coastguard Worker  <enum name="Shade model">
166*61046927SAndroid Build Coastguard Worker    <value name="Flat vertex 0" value="0"/>
167*61046927SAndroid Build Coastguard Worker    <value name="Flat vertex 2" value="2"/>
168*61046927SAndroid Build Coastguard Worker    <value name="Linear" value="3"/>
169*61046927SAndroid Build Coastguard Worker    <value name="Flat vertex 1" value="6"/>
170*61046927SAndroid Build Coastguard Worker    <value name="Perspective" value="7"/>
171*61046927SAndroid Build Coastguard Worker  </enum>
172*61046927SAndroid Build Coastguard Worker
173*61046927SAndroid Build Coastguard Worker  <enum name="Coefficient source">
174*61046927SAndroid Build Coastguard Worker    <value name="Varying" value="0"/>
175*61046927SAndroid Build Coastguard Worker    <value name="Fragcoord Z" value="1"/>
176*61046927SAndroid Build Coastguard Worker    <value name="Point coord" value="2"/>
177*61046927SAndroid Build Coastguard Worker    <value name="Primitive ID" value="3"/>
178*61046927SAndroid Build Coastguard Worker    <!-- Vec2 only -->
179*61046927SAndroid Build Coastguard Worker    <value name="Barycentric coord" value="5"/>
180*61046927SAndroid Build Coastguard Worker  </enum>
181*61046927SAndroid Build Coastguard Worker
182*61046927SAndroid Build Coastguard Worker  <struct name="CF binding" size="4">
183*61046927SAndroid Build Coastguard Worker    <field name="Components" size="2" start="0" type="uint" modifier="minus(1)"/>
184*61046927SAndroid Build Coastguard Worker    <field name="Shade model" size="3" start="2" type="Shade model"/>
185*61046927SAndroid Build Coastguard Worker    <field name="Source" size="3" start="5" type="Coefficient source"/>
186*61046927SAndroid Build Coastguard Worker    <field name="Base slot" size="8" start="8" type="uint"/>
187*61046927SAndroid Build Coastguard Worker    <field name="Base coefficient register" size="8" start="16" type="uint"/>
188*61046927SAndroid Build Coastguard Worker  </struct>
189*61046927SAndroid Build Coastguard Worker
190*61046927SAndroid Build Coastguard Worker  <enum name="Texture dimension">
191*61046927SAndroid Build Coastguard Worker    <value name="1D" value="0"/>
192*61046927SAndroid Build Coastguard Worker    <value name="1D Array" value="1"/>
193*61046927SAndroid Build Coastguard Worker    <value name="2D" value="2"/>
194*61046927SAndroid Build Coastguard Worker    <value name="2D Array" value="3"/>
195*61046927SAndroid Build Coastguard Worker    <value name="2D Multisampled" value="4"/>
196*61046927SAndroid Build Coastguard Worker    <value name="3D" value="5"/>
197*61046927SAndroid Build Coastguard Worker    <value name="Cube" value="6"/>
198*61046927SAndroid Build Coastguard Worker    <value name="Cube Array" value="7"/>
199*61046927SAndroid Build Coastguard Worker    <value name="2D Array Multisampled" value="8"/>
200*61046927SAndroid Build Coastguard Worker  </enum>
201*61046927SAndroid Build Coastguard Worker
202*61046927SAndroid Build Coastguard Worker  <enum name="Sample Count">
203*61046927SAndroid Build Coastguard Worker    <value name="2" value="0"/>
204*61046927SAndroid Build Coastguard Worker    <value name="4" value="1"/>
205*61046927SAndroid Build Coastguard Worker  </enum>
206*61046927SAndroid Build Coastguard Worker
207*61046927SAndroid Build Coastguard Worker  <struct name="PBE" size="24">
208*61046927SAndroid Build Coastguard Worker    <field name="Dimension" size="4" start="0" type="Texture dimension" default="2D"/>
209*61046927SAndroid Build Coastguard Worker    <field name="Layout" size="2" start="4" type="Layout"/>
210*61046927SAndroid Build Coastguard Worker    <field name="Channels" size="7" start="6" type="Channels"/>
211*61046927SAndroid Build Coastguard Worker    <field name="Type" size="3" start="13" type="Texture Type"/>
212*61046927SAndroid Build Coastguard Worker    <field name="Swizzle R" size="2" start="16" type="Channel"/>
213*61046927SAndroid Build Coastguard Worker    <field name="Swizzle G" size="2" start="18" type="Channel"/>
214*61046927SAndroid Build Coastguard Worker    <field name="Swizzle B" size="2" start="20" type="Channel"/>
215*61046927SAndroid Build Coastguard Worker    <field name="Swizzle A" size="2" start="22" type="Channel"/>
216*61046927SAndroid Build Coastguard Worker    <field name="Width" size="14" start="24" type="uint" modifier="minus(1)"/>
217*61046927SAndroid Build Coastguard Worker    <field name="Height" size="14" start="38" type="uint" modifier="minus(1)"/>
218*61046927SAndroid Build Coastguard Worker    <field name="Unk 52" size="1" start="52" type="bool"/>
219*61046927SAndroid Build Coastguard Worker    <field name="Rotate 90" size="1" start="53" type="bool" default="false"/>
220*61046927SAndroid Build Coastguard Worker    <field name="Flip vertical" size="1" start="54" type="bool" default="false"/>
221*61046927SAndroid Build Coastguard Worker    <field name="Samples" size="1" start="56" type="Sample Count"/>
222*61046927SAndroid Build Coastguard Worker    <field name="Unk mipmapped" size="1" start="58" type="bool"/>
223*61046927SAndroid Build Coastguard Worker    <field name="Compressed 1" size="1" start="59" type="bool"/>
224*61046927SAndroid Build Coastguard Worker    <field name="Buffer" size="36" start="64" type="address" modifier="shr(4)"/>
225*61046927SAndroid Build Coastguard Worker    <field name="Level" size="4" start="100" type="uint"/>
226*61046927SAndroid Build Coastguard Worker
227*61046927SAndroid Build Coastguard Worker    <!-- If layout is not linear. Layers must be zero unless rendering to an
228*61046927SAndroid Build Coastguard Worker    array texture (with a layered framebuffer) -->
229*61046927SAndroid Build Coastguard Worker    <field name="Levels" size="4" start="104" type="uint" modifier="minus(1)"/>
230*61046927SAndroid Build Coastguard Worker    <field name="Layers" size="14" start="108" type="uint" modifier="minus(1)" default="1"/>
231*61046927SAndroid Build Coastguard Worker    <field name="Page-aligned layers" size="1" start="124" type="bool"/>
232*61046927SAndroid Build Coastguard Worker
233*61046927SAndroid Build Coastguard Worker    <!-- Should writes to this image convert to sRGB?
234*61046927SAndroid Build Coastguard Worker
235*61046927SAndroid Build Coastguard Worker      Note that imageblock writes do not use this flag, instead doing the
236*61046927SAndroid Build Coastguard Worker      conversion when writing into the tilebuffer. -->
237*61046927SAndroid Build Coastguard Worker    <field name="sRGB" size="1" start="125" type="bool"/>
238*61046927SAndroid Build Coastguard Worker
239*61046927SAndroid Build Coastguard Worker    <!-- Read the next word (set for compression or linear 2D arrays) -->
240*61046927SAndroid Build Coastguard Worker    <field name="Extended" size="1" start="127" type="bool"/>
241*61046927SAndroid Build Coastguard Worker
242*61046927SAndroid Build Coastguard Worker    <!-- If layout is linear. Off by 4? -->
243*61046927SAndroid Build Coastguard Worker    <field name="Stride" size="21" start="104" type="hex"/>
244*61046927SAndroid Build Coastguard Worker
245*61046927SAndroid Build Coastguard Worker    <!-- If layout is compressed -->
246*61046927SAndroid Build Coastguard Worker    <field name="Acceleration buffer" size="64" start="128" type="address" modifier="shr(4)"/>
247*61046927SAndroid Build Coastguard Worker
248*61046927SAndroid Build Coastguard Worker    <!-- If layout is linear, stride has the minus 1 encoded -->
249*61046927SAndroid Build Coastguard Worker    <field name="Depth (linear)" size="11" start="128" type="uint" modifier="minus(1)" default="1"/>
250*61046927SAndroid Build Coastguard Worker    <field name="Layer stride (linear)" size="27" start="139" type="uint" modifier="shr(7)"/>
251*61046927SAndroid Build Coastguard Worker
252*61046927SAndroid Build Coastguard Worker    <!-- If neither, for software use to accelerate atomics and multisampled
253*61046927SAndroid Build Coastguard Worker         writes. These are forbidden for compressed images and linear 2D arrays,
254*61046927SAndroid Build Coastguard Worker         leaving this area free.
255*61046927SAndroid Build Coastguard Worker    -->
256*61046927SAndroid Build Coastguard Worker    <field name="Level offset (sw)" size="27" start="128" type="uint" modifier="shr(7)"/>
257*61046927SAndroid Build Coastguard Worker    <field name="Aligned width MSAA (sw)" size="15" start="128" type="uint"/>
258*61046927SAndroid Build Coastguard Worker    <field name="Tile width (sw)" size="3" start="155" type="uint" modifier="log2" default="1"/>
259*61046927SAndroid Build Coastguard Worker    <field name="Tile height (sw)" size="3" start="158" type="uint" modifier="log2" default="1"/>
260*61046927SAndroid Build Coastguard Worker    <field name="Layer stride (sw)" size="27" start="161" type="uint" modifier="shr(7)"/>
261*61046927SAndroid Build Coastguard Worker    <field name="Sample count log2 (sw)" size="2" start="188" type="uint"/>
262*61046927SAndroid Build Coastguard Worker    <field name="Buffer offset (sw)" size="32" start="128" type="uint"/>
263*61046927SAndroid Build Coastguard Worker  </struct>
264*61046927SAndroid Build Coastguard Worker
265*61046927SAndroid Build Coastguard Worker  <struct name="Texture" size="24">
266*61046927SAndroid Build Coastguard Worker    <field name="Dimension" size="4" start="0" type="Texture dimension"/>
267*61046927SAndroid Build Coastguard Worker    <field name="Layout" size="2" start="4" type="Layout"/>
268*61046927SAndroid Build Coastguard Worker    <field name="Channels" size="7" start="6" type="Channels"/>
269*61046927SAndroid Build Coastguard Worker    <field name="Type" size="3" start="13" type="Texture Type"/>
270*61046927SAndroid Build Coastguard Worker    <field name="Swizzle R" size="3" start="16" type="Channel"/>
271*61046927SAndroid Build Coastguard Worker    <field name="Swizzle G" size="3" start="19" type="Channel"/>
272*61046927SAndroid Build Coastguard Worker    <field name="Swizzle B" size="3" start="22" type="Channel"/>
273*61046927SAndroid Build Coastguard Worker    <field name="Swizzle A" size="3" start="25" type="Channel"/>
274*61046927SAndroid Build Coastguard Worker    <field name="Width" size="14" start="28" type="uint" modifier="minus(1)" default="1"/>
275*61046927SAndroid Build Coastguard Worker    <field name="Height" size="14" start="42" type="uint" modifier="minus(1)" default="1"/>
276*61046927SAndroid Build Coastguard Worker    <field name="First level" size="4" start="56" type="uint"/>
277*61046927SAndroid Build Coastguard Worker    <field name="Last level" size="4" start="60" type="uint"/>
278*61046927SAndroid Build Coastguard Worker    <field name="Samples" size="1" start="64" type="Sample Count"/>
279*61046927SAndroid Build Coastguard Worker    <field name="Address" size="36" start="66" type="hex" modifier="shr(4)"/>
280*61046927SAndroid Build Coastguard Worker    <!-- Unknown bit set by Metal when mipmapping. Might relate to a mechanism
281*61046927SAndroid Build Coastguard Worker    to switch tile size (or disable tiling altogether?) at small mip levels to
282*61046927SAndroid Build Coastguard Worker    reduce wasted memory due to padding. Causing test flakiness when set. -->
283*61046927SAndroid Build Coastguard Worker    <field name="Unk mipmapped" size="1" start="102" type="bool"/>
284*61046927SAndroid Build Coastguard Worker    <field name="Compressed 1" size="1" start="103" type="bool"/>
285*61046927SAndroid Build Coastguard Worker    <!-- This is set when no texture is bound, with layout 1 -->
286*61046927SAndroid Build Coastguard Worker    <field name="Null" size="1" start="105" type="bool"/>
287*61046927SAndroid Build Coastguard Worker    <field name="Compression" size="2" start="106" type="hex"/> <!-- 0 for uncompressed -->
288*61046927SAndroid Build Coastguard Worker    <field name="sRGB" size="1" start="108" type="bool"/>
289*61046927SAndroid Build Coastguard Worker    <field name="sRGB 2-channel" size="1" start="109" type="bool"/>
290*61046927SAndroid Build Coastguard Worker    <field name="Stride" size="18" start="110" type="hex" modifier="shr(4)"/>
291*61046927SAndroid Build Coastguard Worker    <!-- Note that 3D/arrays cannot be linear. -->
292*61046927SAndroid Build Coastguard Worker    <field name="Depth" size="14" start="110" type="uint" modifier="minus(1)" default="1"/>
293*61046927SAndroid Build Coastguard Worker    <field name="Page-aligned layers" size="1" start="126" type="bool"/>
294*61046927SAndroid Build Coastguard Worker
295*61046927SAndroid Build Coastguard Worker    <!-- Read the next word (set for compression or linear 2D arrays) -->
296*61046927SAndroid Build Coastguard Worker    <field name="Extended" size="1" start="127" type="bool"/>
297*61046927SAndroid Build Coastguard Worker
298*61046927SAndroid Build Coastguard Worker    <!-- If layout is compressed -->
299*61046927SAndroid Build Coastguard Worker    <field name="Acceleration buffer" size="64" start="128" type="address" modifier="shr(4)"/>
300*61046927SAndroid Build Coastguard Worker
301*61046927SAndroid Build Coastguard Worker    <!-- If layout is linear, stride has the minus 1 encoded -->
302*61046927SAndroid Build Coastguard Worker    <field name="Depth (linear)" size="11" start="128" type="uint" modifier="minus(1)" default="1"/>
303*61046927SAndroid Build Coastguard Worker    <field name="Layer stride (linear)" size="27" start="139" type="uint" modifier="shr(7)"/>
304*61046927SAndroid Build Coastguard Worker
305*61046927SAndroid Build Coastguard Worker    <!-- Buffer texture metadata  -->
306*61046927SAndroid Build Coastguard Worker    <field name="Buffer size (sw)" size="32" start="128" type="uint"/>
307*61046927SAndroid Build Coastguard Worker    <field name="Buffer offset (sw)" size="32" start="160" type="uint"/>
308*61046927SAndroid Build Coastguard Worker  </struct>
309*61046927SAndroid Build Coastguard Worker
310*61046927SAndroid Build Coastguard Worker  <enum name="Wrap">
311*61046927SAndroid Build Coastguard Worker    <value name="Clamp to edge" value="0"/>
312*61046927SAndroid Build Coastguard Worker    <value name="Repeat" value="1"/>
313*61046927SAndroid Build Coastguard Worker    <value name="Mirrored repeat" value="2"/>
314*61046927SAndroid Build Coastguard Worker    <value name="Clamp to border" value="3"/>
315*61046927SAndroid Build Coastguard Worker    <value name="Clamp (GL)" value="4"/>
316*61046927SAndroid Build Coastguard Worker    <value name="Mirrored clamp to edge" value="5"/>
317*61046927SAndroid Build Coastguard Worker  </enum>
318*61046927SAndroid Build Coastguard Worker
319*61046927SAndroid Build Coastguard Worker  <enum name="Mip filter">
320*61046927SAndroid Build Coastguard Worker    <value name="None" value="0"/>
321*61046927SAndroid Build Coastguard Worker    <value name="Nearest" value="1"/>
322*61046927SAndroid Build Coastguard Worker    <value name="Linear" value="2"/>
323*61046927SAndroid Build Coastguard Worker  </enum>
324*61046927SAndroid Build Coastguard Worker
325*61046927SAndroid Build Coastguard Worker  <enum name="Border colour">
326*61046927SAndroid Build Coastguard Worker    <value name="Transparent black" value="0"/>
327*61046927SAndroid Build Coastguard Worker    <value name="Opaque black" value="1"/>
328*61046927SAndroid Build Coastguard Worker    <value name="Opaque white" value="2"/>
329*61046927SAndroid Build Coastguard Worker    <value name="Custom" value="3"/>
330*61046927SAndroid Build Coastguard Worker  </enum>
331*61046927SAndroid Build Coastguard Worker
332*61046927SAndroid Build Coastguard Worker  <enum name="Filter">
333*61046927SAndroid Build Coastguard Worker    <value name="Nearest" value="0"/>
334*61046927SAndroid Build Coastguard Worker    <value name="Linear" value="1"/>
335*61046927SAndroid Build Coastguard Worker    <value name="Bicubic" value="2"/>
336*61046927SAndroid Build Coastguard Worker  </enum>
337*61046927SAndroid Build Coastguard Worker
338*61046927SAndroid Build Coastguard Worker  <struct name="Sampler" size="8">
339*61046927SAndroid Build Coastguard Worker    <field name="Minimum LOD" size="10" start="0" type="lod" default="0.0"/>
340*61046927SAndroid Build Coastguard Worker    <field name="Maximum LOD" size="10" start="10" type="lod" default="INFINITY"/>
341*61046927SAndroid Build Coastguard Worker    <field name="Maximum anisotropy" size="3" start="20" type="uint" default="1" modifier="log2"/>
342*61046927SAndroid Build Coastguard Worker    <field name="Magnify" size="2" start="23" type="Filter"/>
343*61046927SAndroid Build Coastguard Worker    <field name="Minify" size="2" start="25" type="Filter"/>
344*61046927SAndroid Build Coastguard Worker    <field name="Mip filter" size="2" start="27" type="Mip filter"/>
345*61046927SAndroid Build Coastguard Worker    <field name="Wrap S" size="3" start="29" type="Wrap"/>
346*61046927SAndroid Build Coastguard Worker    <field name="Wrap T" size="3" start="32" type="Wrap"/>
347*61046927SAndroid Build Coastguard Worker    <field name="Wrap R" size="3" start="35" type="Wrap"/>
348*61046927SAndroid Build Coastguard Worker    <field name="Pixel coordinates" size="1" start="38" type="bool"/>
349*61046927SAndroid Build Coastguard Worker    <field name="Compare func" size="3" start="39" type="Compare func"/>
350*61046927SAndroid Build Coastguard Worker    <field name="Compare enable" size="1" start="42" type="bool"/>
351*61046927SAndroid Build Coastguard Worker    <field name="Border colour" size="2" start="55" type="Border colour"/>
352*61046927SAndroid Build Coastguard Worker    <field name="Seamful cube maps" size="1" start="57" type="bool"/>
353*61046927SAndroid Build Coastguard Worker  </struct>
354*61046927SAndroid Build Coastguard Worker
355*61046927SAndroid Build Coastguard Worker  <struct name="Border" size="16">
356*61046927SAndroid Build Coastguard Worker    <field name="Channel 0" size="32" start="0:0" type="hex"/>
357*61046927SAndroid Build Coastguard Worker    <field name="Channel 1" size="32" start="1:0" type="hex"/>
358*61046927SAndroid Build Coastguard Worker    <field name="Channel 2" size="32" start="2:0" type="hex"/>
359*61046927SAndroid Build Coastguard Worker    <field name="Channel 3" size="32" start="3:0" type="hex"/>
360*61046927SAndroid Build Coastguard Worker  </struct>
361*61046927SAndroid Build Coastguard Worker
362*61046927SAndroid Build Coastguard Worker  <!--- Pointed to from the command buffer -->
363*61046927SAndroid Build Coastguard Worker  <struct name="Scissor" size="16">
364*61046927SAndroid Build Coastguard Worker    <field name="Max X" size="16" start="0:0" type="uint"/>
365*61046927SAndroid Build Coastguard Worker    <field name="Min X" size="16" start="0:16" type="uint"/>
366*61046927SAndroid Build Coastguard Worker    <field name="Max Y" size="16" start="1:0" type="uint"/>
367*61046927SAndroid Build Coastguard Worker    <field name="Min Y" size="16" start="1:16" type="uint"/>
368*61046927SAndroid Build Coastguard Worker    <field name="Min Z" size="32" start="2:0" type="float"/>
369*61046927SAndroid Build Coastguard Worker    <field name="Max Z" size="32" start="3:0" type="float"/>
370*61046927SAndroid Build Coastguard Worker  </struct>
371*61046927SAndroid Build Coastguard Worker
372*61046927SAndroid Build Coastguard Worker  <!-- Note: this structure is not padded. It really is 12 bytes -->
373*61046927SAndroid Build Coastguard Worker  <struct name="Depth bias" size="12">
374*61046927SAndroid Build Coastguard Worker    <field name="Depth bias" size="32" start="0:0" type="float"/>
375*61046927SAndroid Build Coastguard Worker    <field name="Slope scale" size="32" start="1:0" type="float"/>
376*61046927SAndroid Build Coastguard Worker    <field name="Clamp" size="32" start="2:0" type="float"/>
377*61046927SAndroid Build Coastguard Worker  </struct>
378*61046927SAndroid Build Coastguard Worker
379*61046927SAndroid Build Coastguard Worker  <enum name="Sampler states">
380*61046927SAndroid Build Coastguard Worker    <value name="0" value="0"/>
381*61046927SAndroid Build Coastguard Worker    <value name="4 compact" value="1"/>
382*61046927SAndroid Build Coastguard Worker    <value name="8 compact" value="2"/>
383*61046927SAndroid Build Coastguard Worker    <value name="12 compact" value="3"/>
384*61046927SAndroid Build Coastguard Worker    <value name="16 compact" value="4"/>
385*61046927SAndroid Build Coastguard Worker    <value name="8 extended" value="6"/>
386*61046927SAndroid Build Coastguard Worker    <value name="16 extended" value="7"/>
387*61046927SAndroid Build Coastguard Worker  </enum>
388*61046927SAndroid Build Coastguard Worker
389*61046927SAndroid Build Coastguard Worker  <struct name="Counts" size="4">
390*61046927SAndroid Build Coastguard Worker    <field name="Unknown 0" size="1" start="0" type="hex" default="0"/>
391*61046927SAndroid Build Coastguard Worker    <field name="Uniform register count" size="3" start="1" type="uint" modifier="groups(64)"/>
392*61046927SAndroid Build Coastguard Worker    <field name="Texture state register count" size="5" start="4" type="uint" modifier="groups(8)"/>
393*61046927SAndroid Build Coastguard Worker    <field name="Sampler state register count" size="3" start="9" type="Sampler states"/>
394*61046927SAndroid Build Coastguard Worker    <field name="Preshader register count" size="4" start="12" type="uint" modifier="groups(16)"/>
395*61046927SAndroid Build Coastguard Worker    <field name="CF binding count" size="7" start="16" type="uint"/>
396*61046927SAndroid Build Coastguard Worker
397*61046927SAndroid Build Coastguard Worker    <!-- Only for fragment shaders -->
398*61046927SAndroid Build Coastguard Worker    <field name="Unknown" size="16" start="16" type="hex"/>
399*61046927SAndroid Build Coastguard Worker  </struct>
400*61046927SAndroid Build Coastguard Worker
401*61046927SAndroid Build Coastguard Worker  <!-- PPP state starts -->
402*61046927SAndroid Build Coastguard Worker  <struct name="PPP Header" size="4">
403*61046927SAndroid Build Coastguard Worker    <field name="Fragment control" size="1" start="0" type="bool"/>
404*61046927SAndroid Build Coastguard Worker    <field name="Fragment control 2" size="1" start="1" type="bool"/>
405*61046927SAndroid Build Coastguard Worker    <field name="Fragment front face" size="1" start="2" type="bool"/>
406*61046927SAndroid Build Coastguard Worker    <field name="Fragment front face 2" size="1" start="3" type="bool"/>
407*61046927SAndroid Build Coastguard Worker    <field name="Fragment front stencil" size="1" start="4" type="bool"/>
408*61046927SAndroid Build Coastguard Worker    <field name="Fragment back face" size="1" start="5" type="bool"/>
409*61046927SAndroid Build Coastguard Worker    <field name="Fragment back face 2" size="1" start="6" type="bool"/>
410*61046927SAndroid Build Coastguard Worker    <field name="Fragment back stencil" size="1" start="7" type="bool"/>
411*61046927SAndroid Build Coastguard Worker    <field name="Depth bias/scissor" size="1" start="8" type="bool"/>
412*61046927SAndroid Build Coastguard Worker    <field name="Region clip" size="1" start="10" type="bool"/>
413*61046927SAndroid Build Coastguard Worker    <field name="Viewport" size="1" start="11" type="bool"/>
414*61046927SAndroid Build Coastguard Worker    <field name="Viewport count" size="4" start="12" type="uint" default="1" modifier="minus(1)"/>
415*61046927SAndroid Build Coastguard Worker    <field name="W clamp" size="1" start="16" type="bool"/>
416*61046927SAndroid Build Coastguard Worker    <field name="Output select" size="1" start="17" type="bool"/>
417*61046927SAndroid Build Coastguard Worker    <field name="Varying counts 32" size="1" start="18" type="bool"/>
418*61046927SAndroid Build Coastguard Worker    <field name="Varying counts 16" size="1" start="19" type="bool"/>
419*61046927SAndroid Build Coastguard Worker    <field name="Cull" size="1" start="21" type="bool"/>
420*61046927SAndroid Build Coastguard Worker    <field name="Cull 2" size="1" start="22" type="bool"/>
421*61046927SAndroid Build Coastguard Worker    <field name="Fragment shader" size="1" start="23" type="bool"/>
422*61046927SAndroid Build Coastguard Worker    <field name="Occlusion query" size="1" start="24" type="bool"/>
423*61046927SAndroid Build Coastguard Worker    <field name="Occlusion query 2" size="1" start="25" type="bool"/>
424*61046927SAndroid Build Coastguard Worker    <field name="Output unknown" size="1" start="26" type="bool"/>
425*61046927SAndroid Build Coastguard Worker    <field name="Output size" size="1" start="27" type="bool"/>
426*61046927SAndroid Build Coastguard Worker    <field name="Varying word 2" size="1" start="28" type="bool"/>
427*61046927SAndroid Build Coastguard Worker  </struct>
428*61046927SAndroid Build Coastguard Worker
429*61046927SAndroid Build Coastguard Worker  <!-- Acts like a scissor at 32x32 tile boundaries, ignored unless clip tile is set -->
430*61046927SAndroid Build Coastguard Worker  <struct name="Region clip" size="8">
431*61046927SAndroid Build Coastguard Worker    <field name="Max X" size="9" start="0" type="uint" modifier="minus(1)"/>
432*61046927SAndroid Build Coastguard Worker    <field name="Min X" size="9" start="16" type="uint"/>
433*61046927SAndroid Build Coastguard Worker    <field name="Enable" size="1" start="31" type="bool"/>
434*61046927SAndroid Build Coastguard Worker    <field name="Max Y" size="9" start="32" type="uint" modifier="minus(1)"/>
435*61046927SAndroid Build Coastguard Worker    <field name="Min Y" size="9" start="48" type="uint"/>
436*61046927SAndroid Build Coastguard Worker  </struct>
437*61046927SAndroid Build Coastguard Worker
438*61046927SAndroid Build Coastguard Worker  <struct name="Viewport control" size="4">
439*61046927SAndroid Build Coastguard Worker     <!-- so far only seen zeroes, but it stands to reason this is meant as a
440*61046927SAndroid Build Coastguard Worker          control word for the viewports -->
441*61046927SAndroid Build Coastguard Worker  </struct>
442*61046927SAndroid Build Coastguard Worker
443*61046927SAndroid Build Coastguard Worker  <!-- Used to convert clip space coordinates to NDC, does not clip -->
444*61046927SAndroid Build Coastguard Worker  <struct name="Viewport" size="24">
445*61046927SAndroid Build Coastguard Worker    <field name="Translate X" size="32" start="0:0" type="float"/>
446*61046927SAndroid Build Coastguard Worker    <field name="Scale X" size="32" start="1:0" type="float"/>
447*61046927SAndroid Build Coastguard Worker    <field name="Translate Y" size="32" start="2:0" type="float"/>
448*61046927SAndroid Build Coastguard Worker    <field name="Scale Y" size="32" start="3:0" type="float"/>
449*61046927SAndroid Build Coastguard Worker    <field name="Translate Z" size="32" start="4:0" type="float"/>
450*61046927SAndroid Build Coastguard Worker    <field name="Scale Z" size="32" start="5:0" type="float"/>
451*61046927SAndroid Build Coastguard Worker  </struct>
452*61046927SAndroid Build Coastguard Worker
453*61046927SAndroid Build Coastguard Worker  <struct name="Fragment face" size="4">
454*61046927SAndroid Build Coastguard Worker    <field name="Stencil reference" size="8" start="0" type="hex"/>
455*61046927SAndroid Build Coastguard Worker    <!-- line width is 4:4 fixed point with off-by-one applied -->
456*61046927SAndroid Build Coastguard Worker    <field name="Line width" size="8" start="8" type="hex"/>
457*61046927SAndroid Build Coastguard Worker    <field name="Polygon mode" size="2" start="18" type="Polygon Mode"/>
458*61046927SAndroid Build Coastguard Worker    <field name="Disable depth write" size="1" start="21" type="bool"/>
459*61046927SAndroid Build Coastguard Worker    <field name="Unk - visibility test internal" size="2" start="22" type="hex"/>
460*61046927SAndroid Build Coastguard Worker    <field name="Depth function" size="3" start="24" type="ZS Func"/>
461*61046927SAndroid Build Coastguard Worker  </struct>
462*61046927SAndroid Build Coastguard Worker
463*61046927SAndroid Build Coastguard Worker  <enum name="Conservative depth">
464*61046927SAndroid Build Coastguard Worker    <value name="Any" value="0"/>
465*61046927SAndroid Build Coastguard Worker    <value name="Greater" value="1"/>
466*61046927SAndroid Build Coastguard Worker    <value name="Less" value="2"/>
467*61046927SAndroid Build Coastguard Worker    <value name="Unchanged" value="3"/>
468*61046927SAndroid Build Coastguard Worker  </enum>
469*61046927SAndroid Build Coastguard Worker
470*61046927SAndroid Build Coastguard Worker  <struct name="Fragment face 2" size="4">
471*61046927SAndroid Build Coastguard Worker    <!-- If either disable is zeroed, depth is written -->
472*61046927SAndroid Build Coastguard Worker    <field name="Disable depth write" size="1" start="21" type="bool" default="true"/>
473*61046927SAndroid Build Coastguard Worker    <!-- If depth written from FS -->
474*61046927SAndroid Build Coastguard Worker    <field name="Conservative depth" size="2" start="22" type="Conservative depth" default="Unchanged"/>
475*61046927SAndroid Build Coastguard Worker    <!-- Both depth functions must pass -->
476*61046927SAndroid Build Coastguard Worker    <field name="Depth function" size="3" start="24" type="ZS Func" default="Always"/>
477*61046927SAndroid Build Coastguard Worker    <field name="Object type" size="4" start="28" type="Object Type"/>
478*61046927SAndroid Build Coastguard Worker  </struct>
479*61046927SAndroid Build Coastguard Worker
480*61046927SAndroid Build Coastguard Worker  <struct name="Fragment stencil" size="4">
481*61046927SAndroid Build Coastguard Worker    <field name="Write mask" size="8" start="0" type="hex"/>
482*61046927SAndroid Build Coastguard Worker    <field name="Read mask" size="8" start="8" type="hex"/>
483*61046927SAndroid Build Coastguard Worker    <field name="Depth pass" size="3" start="16" type="Stencil Op"/>
484*61046927SAndroid Build Coastguard Worker    <field name="Depth fail" size="3" start="19" type="Stencil Op"/>
485*61046927SAndroid Build Coastguard Worker    <field name="Stencil fail" size="3" start="22" type="Stencil Op"/>
486*61046927SAndroid Build Coastguard Worker    <field name="Compare" size="3" start="25" type="ZS Func"/>
487*61046927SAndroid Build Coastguard Worker  </struct>
488*61046927SAndroid Build Coastguard Worker
489*61046927SAndroid Build Coastguard Worker  <enum name="Pass type">
490*61046927SAndroid Build Coastguard Worker    <value name="Opaque" value="0"/>
491*61046927SAndroid Build Coastguard Worker    <value name="Translucent" value="1"/>
492*61046927SAndroid Build Coastguard Worker    <value name="Punch through" value="2"/>
493*61046927SAndroid Build Coastguard Worker    <value name="Translucent punch through" value="3"/>
494*61046927SAndroid Build Coastguard Worker    <!-- See PASSTYPE in rogue_ppp.xml if more values are observed on AGX...
495*61046927SAndroid Build Coastguard Worker         Translucent punch through seems notably different though? -->
496*61046927SAndroid Build Coastguard Worker  </enum>
497*61046927SAndroid Build Coastguard Worker
498*61046927SAndroid Build Coastguard Worker  <struct name="Fragment control" size="4">
499*61046927SAndroid Build Coastguard Worker    <field name="Unk 1" size="1" start="9" type="bool" default="true"/>
500*61046927SAndroid Build Coastguard Worker    <field name="Visibility mode" size="2" start="14" type="Visibility Mode"/>
501*61046927SAndroid Build Coastguard Worker    <field name="Scissor enable" size="1" start="16" type="bool"/>
502*61046927SAndroid Build Coastguard Worker    <field name="Depth bias enable" size="1" start="17" type="bool"/>
503*61046927SAndroid Build Coastguard Worker    <field name="Stencil test enable" size="1" start="18" type="bool"/>
504*61046927SAndroid Build Coastguard Worker    <field name="Two-sided stencil" size="1" start="19" type="bool"/>
505*61046927SAndroid Build Coastguard Worker    <field name="Tag write disable" size="1" start="21" type="bool"/>
506*61046927SAndroid Build Coastguard Worker    <field name="Sample mask after depth/stencil" size="1" start="25" type="bool"/>
507*61046927SAndroid Build Coastguard Worker    <field name="Disable tri merging" size="1" start="26" type="bool"/>
508*61046927SAndroid Build Coastguard Worker    <field name="Pass type" size="3" start="29" type="Pass type"/>
509*61046927SAndroid Build Coastguard Worker  </struct>
510*61046927SAndroid Build Coastguard Worker
511*61046927SAndroid Build Coastguard Worker  <struct name="Fragment occlusion query" size="4">
512*61046927SAndroid Build Coastguard Worker    <!-- 64-bit index into occlusion result buffer -->
513*61046927SAndroid Build Coastguard Worker    <field name="Index" size="15" start="17" type="uint"/>
514*61046927SAndroid Build Coastguard Worker  </struct>
515*61046927SAndroid Build Coastguard Worker
516*61046927SAndroid Build Coastguard Worker  <struct name="Fragment occlusion query 2" size="4">
517*61046927SAndroid Build Coastguard Worker    <field name="Unknown" size="17" start="0" type="hex"/>
518*61046927SAndroid Build Coastguard Worker  </struct>
519*61046927SAndroid Build Coastguard Worker
520*61046927SAndroid Build Coastguard Worker  <struct name="W Clamp" size="4">
521*61046927SAndroid Build Coastguard Worker    <field name="W Clamp" size="32" start="0" type="float"/>
522*61046927SAndroid Build Coastguard Worker  </struct>
523*61046927SAndroid Build Coastguard Worker
524*61046927SAndroid Build Coastguard Worker  <enum name="PPP Vertex">
525*61046927SAndroid Build Coastguard Worker    <value name="0" value="1"/>
526*61046927SAndroid Build Coastguard Worker    <value name="1" value="2"/>
527*61046927SAndroid Build Coastguard Worker    <value name="2" value="3"/>
528*61046927SAndroid Build Coastguard Worker  </enum>
529*61046927SAndroid Build Coastguard Worker
530*61046927SAndroid Build Coastguard Worker  <struct name="Cull" size="4">
531*61046927SAndroid Build Coastguard Worker    <field name="Cull front" size="1" start="0" type="bool"/>
532*61046927SAndroid Build Coastguard Worker    <field name="Cull back" size="1" start="1" type="bool"/>
533*61046927SAndroid Build Coastguard Worker    <field name="Flat shading vertex" size="2" start="7" type="PPP Vertex"/>
534*61046927SAndroid Build Coastguard Worker    <field name="Depth clip" size="1" start="10" type="bool"/>
535*61046927SAndroid Build Coastguard Worker    <field name="Depth clamp" size="1" start="11" type="bool"/>
536*61046927SAndroid Build Coastguard Worker    <field name="Primitive MSAA" size="1" start="15" type="bool"/>
537*61046927SAndroid Build Coastguard Worker    <field name="Front face CCW" size="1" start="16" type="bool"/>
538*61046927SAndroid Build Coastguard Worker    <field name="Rasterizer discard" size="1" start="17" type="bool"/>
539*61046927SAndroid Build Coastguard Worker  </struct>
540*61046927SAndroid Build Coastguard Worker
541*61046927SAndroid Build Coastguard Worker  <struct name="Cull 2" size="4">
542*61046927SAndroid Build Coastguard Worker    <field name="Unknown 5" size="1" start="5" type="bool" default="true"/>
543*61046927SAndroid Build Coastguard Worker    <field name="Draw clipped edges" size="1" start="9" type="bool"/>
544*61046927SAndroid Build Coastguard Worker    <field name="Needs Primitive ID" size="1" start="12" type="bool"/>
545*61046927SAndroid Build Coastguard Worker    <field name="Rasterizer discard" size="1" start="17" type="bool"/>
546*61046927SAndroid Build Coastguard Worker  </struct>
547*61046927SAndroid Build Coastguard Worker
548*61046927SAndroid Build Coastguard Worker  <struct name="Varying Counts" size="4">
549*61046927SAndroid Build Coastguard Worker    <field name="Smooth" size="8" start="0" type="uint"/>
550*61046927SAndroid Build Coastguard Worker    <field name="Flat" size="8" start="8" type="uint"/>
551*61046927SAndroid Build Coastguard Worker    <field name="Linear" size="8" start="16" type="uint"/>
552*61046927SAndroid Build Coastguard Worker  </struct>
553*61046927SAndroid Build Coastguard Worker
554*61046927SAndroid Build Coastguard Worker  <struct name="Varying 2" size="8">
555*61046927SAndroid Build Coastguard Worker    <!-- TODO -->
556*61046927SAndroid Build Coastguard Worker  </struct>
557*61046927SAndroid Build Coastguard Worker
558*61046927SAndroid Build Coastguard Worker  <struct name="Output Select" size="4">
559*61046927SAndroid Build Coastguard Worker    <field name="Clip distance plane 0" size="1" start="0" type="bool"/>
560*61046927SAndroid Build Coastguard Worker    <field name="Clip distance plane 1" size="1" start="1" type="bool"/>
561*61046927SAndroid Build Coastguard Worker    <field name="Clip distance plane 2" size="1" start="2" type="bool"/>
562*61046927SAndroid Build Coastguard Worker    <field name="Clip distance plane 3" size="1" start="3" type="bool"/>
563*61046927SAndroid Build Coastguard Worker    <field name="Clip distance plane 4" size="1" start="4" type="bool"/>
564*61046927SAndroid Build Coastguard Worker    <field name="Clip distance plane 5" size="1" start="5" type="bool"/>
565*61046927SAndroid Build Coastguard Worker    <field name="Clip distance plane 6" size="1" start="6" type="bool"/>
566*61046927SAndroid Build Coastguard Worker    <field name="Clip distance plane 7" size="1" start="7" type="bool"/>
567*61046927SAndroid Build Coastguard Worker    <field name="Clip distance plane 8" size="1" start="8" type="bool"/>
568*61046927SAndroid Build Coastguard Worker    <field name="Clip distance plane 9" size="1" start="9" type="bool"/>
569*61046927SAndroid Build Coastguard Worker    <field name="Clip distance plane 10" size="1" start="10" type="bool"/>
570*61046927SAndroid Build Coastguard Worker    <field name="Clip distance plane 11" size="1" start="11" type="bool"/>
571*61046927SAndroid Build Coastguard Worker    <field name="Clip distance plane 12" size="1" start="12" type="bool"/>
572*61046927SAndroid Build Coastguard Worker    <field name="Clip distance plane 13" size="1" start="13" type="bool"/>
573*61046927SAndroid Build Coastguard Worker    <field name="Clip distance plane 14" size="1" start="14" type="bool"/>
574*61046927SAndroid Build Coastguard Worker    <field name="Clip distance plane 15" size="1" start="15" type="bool"/>
575*61046927SAndroid Build Coastguard Worker    <field name="Varyings" size="1" start="16" type="bool"/>
576*61046927SAndroid Build Coastguard Worker    <field name="Point size" size="1" start="18" type="bool"/>
577*61046927SAndroid Build Coastguard Worker    <!-- For layered rendering, enable both and write the 2x16-bit tuple from
578*61046927SAndroid Build Coastguard Worker    the vertex shader (layer, (viewport << u) + (u & layer)). So far unclear
579*61046927SAndroid Build Coastguard Worker    what u is supposed to be. If u=0, this simplifies to the expected (layer,
580*61046927SAndroid Build Coastguard Worker        viewport) at least. -->
581*61046927SAndroid Build Coastguard Worker    <field name="Viewport target" size="1" start="19" type="bool"/>
582*61046927SAndroid Build Coastguard Worker    <field name="Render target" size="1" start="20" type="bool"/>
583*61046927SAndroid Build Coastguard Worker    <field name="Frag coord Z" size="1" start="21" type="bool"/>
584*61046927SAndroid Build Coastguard Worker    <field name="Barycentric coordinates" size="1" start="22" type="bool"/>
585*61046927SAndroid Build Coastguard Worker  </struct>
586*61046927SAndroid Build Coastguard Worker
587*61046927SAndroid Build Coastguard Worker  <struct name="Output Unknown" size="4">
588*61046927SAndroid Build Coastguard Worker    <!-- So far always zero -->
589*61046927SAndroid Build Coastguard Worker  </struct>
590*61046927SAndroid Build Coastguard Worker
591*61046927SAndroid Build Coastguard Worker  <struct name="Output Size" size="4">
592*61046927SAndroid Build Coastguard Worker    <field name="Count" size="32" start="0" type="uint"/>
593*61046927SAndroid Build Coastguard Worker  </struct>
594*61046927SAndroid Build Coastguard Worker
595*61046927SAndroid Build Coastguard Worker  <!-- Indexes into the scissor and depth bias arrays -->
596*61046927SAndroid Build Coastguard Worker  <struct name="Depth bias/Scissor" size="4">
597*61046927SAndroid Build Coastguard Worker    <field name="Scissor" size="16" start="0" type="uint"/>
598*61046927SAndroid Build Coastguard Worker    <field name="Depth bias" size="16" start="16" type="uint"/>
599*61046927SAndroid Build Coastguard Worker  </struct>
600*61046927SAndroid Build Coastguard Worker
601*61046927SAndroid Build Coastguard Worker  <struct name="Fragment Shader Word 0" size="4">
602*61046927SAndroid Build Coastguard Worker    <field name="Unknown 0" size="1" start="0" type="hex" default="0"/>
603*61046927SAndroid Build Coastguard Worker    <field name="Uniform register count" size="3" start="1" type="uint" modifier="groups(64)"/>
604*61046927SAndroid Build Coastguard Worker    <field name="Texture state register count" size="5" start="4" type="uint" modifier="groups(8)"/>
605*61046927SAndroid Build Coastguard Worker    <field name="Sampler state register count" size="3" start="9" type="Sampler states"/>
606*61046927SAndroid Build Coastguard Worker    <field name="Preshader register count" size="4" start="12" type="uint" modifier="groups(16)"/>
607*61046927SAndroid Build Coastguard Worker    <field name="CF binding count" size="7" start="16" type="uint"/>
608*61046927SAndroid Build Coastguard Worker  </struct>
609*61046927SAndroid Build Coastguard Worker
610*61046927SAndroid Build Coastguard Worker  <struct name="Fragment Shader Word 1" size="4">
611*61046927SAndroid Build Coastguard Worker    <field name="Unknown 1:0" size="2" start="0" type="hex"/>
612*61046927SAndroid Build Coastguard Worker    <field name="Pipeline" size="26" start="6" type="address" modifier="shr(6)"/>
613*61046927SAndroid Build Coastguard Worker  </struct>
614*61046927SAndroid Build Coastguard Worker
615*61046927SAndroid Build Coastguard Worker  <struct name="Fragment Shader Word 2" size="4">
616*61046927SAndroid Build Coastguard Worker    <field name="CF bindings" size="30" start="2" type="address" modifier="shr(2)"/>
617*61046927SAndroid Build Coastguard Worker  </struct>
618*61046927SAndroid Build Coastguard Worker
619*61046927SAndroid Build Coastguard Worker  <struct name="Fragment Shader Word 3" size="4">
620*61046927SAndroid Build Coastguard Worker    <!-- Seems to be set to small values depending on textures? and pushed
621*61046927SAndroid Build Coastguard Worker         uniforms? Needs investigation -->
622*61046927SAndroid Build Coastguard Worker    <field name="Unknown" start="0" size="4" type="hex"/>
623*61046927SAndroid Build Coastguard Worker  </struct>
624*61046927SAndroid Build Coastguard Worker  <!-- PPP state ends -->
625*61046927SAndroid Build Coastguard Worker
626*61046927SAndroid Build Coastguard Worker  <!-- USC state starts -->
627*61046927SAndroid Build Coastguard Worker  <enum name="USC Control">
628*61046927SAndroid Build Coastguard Worker    <value name="Preshader" value="0x38"/>
629*61046927SAndroid Build Coastguard Worker    <value name="Fragment properties" value="0x58"/>
630*61046927SAndroid Build Coastguard Worker    <value name="No preshader" value="0x88"/>
631*61046927SAndroid Build Coastguard Worker    <value name="Shader" value="0x0d"/>
632*61046927SAndroid Build Coastguard Worker    <value name="Uniform" value="0x1d"/>
633*61046927SAndroid Build Coastguard Worker    <value name="Uniform high" value="0x3d"/>
634*61046927SAndroid Build Coastguard Worker    <value name="Shared" value="0x4d"/>
635*61046927SAndroid Build Coastguard Worker    <value name="Registers" value="0x8d"/>
636*61046927SAndroid Build Coastguard Worker    <value name="Sampler" value="0x9d"/>
637*61046927SAndroid Build Coastguard Worker    <value name="Texture" value="0xdd"/>
638*61046927SAndroid Build Coastguard Worker  </enum>
639*61046927SAndroid Build Coastguard Worker
640*61046927SAndroid Build Coastguard Worker  <struct name="USC Uniform" size="8">
641*61046927SAndroid Build Coastguard Worker    <field name="Tag" size="8" start="0:0" type="USC Control" default="Uniform"/>
642*61046927SAndroid Build Coastguard Worker    <field name="Start (halfs)" size="8" start="0:8" type="uint"/>
643*61046927SAndroid Build Coastguard Worker    <field name="Size (halfs)" size="6" start="0:20" type="uint" modifier="groups(1)"/>
644*61046927SAndroid Build Coastguard Worker    <field name="Buffer" size="38" start="0:26" type="address" modifier="shr(2)"/>
645*61046927SAndroid Build Coastguard Worker  </struct>
646*61046927SAndroid Build Coastguard Worker
647*61046927SAndroid Build Coastguard Worker  <struct name="USC Uniform High" size="8">
648*61046927SAndroid Build Coastguard Worker    <field name="Tag" size="8" start="0:0" type="USC Control" default="Uniform High"/>
649*61046927SAndroid Build Coastguard Worker    <field name="Start (halfs)" size="8" start="0:8" type="uint"/>
650*61046927SAndroid Build Coastguard Worker    <field name="Size (halfs)" size="6" start="0:20" type="uint" modifier="groups(1)"/>
651*61046927SAndroid Build Coastguard Worker    <field name="Buffer" size="38" start="0:26" type="address" modifier="shr(2)"/>
652*61046927SAndroid Build Coastguard Worker  </struct>
653*61046927SAndroid Build Coastguard Worker
654*61046927SAndroid Build Coastguard Worker  <struct name="USC Texture" size="8">
655*61046927SAndroid Build Coastguard Worker    <field name="Tag" size="8" start="0:0" type="USC Control" default="Texture"/>
656*61046927SAndroid Build Coastguard Worker    <field name="Start" size="8" start="0:8" type="uint"/>
657*61046927SAndroid Build Coastguard Worker    <!-- Exact split is unknown. Count is at least 5 bits. Less than 8 bits. -->
658*61046927SAndroid Build Coastguard Worker    <field name="Count" size="7" start="0:20" type="uint"/>
659*61046927SAndroid Build Coastguard Worker    <field name="Buffer" size="36" start="0:27" type="address" modifier="shr(3)"/>
660*61046927SAndroid Build Coastguard Worker  </struct>
661*61046927SAndroid Build Coastguard Worker
662*61046927SAndroid Build Coastguard Worker  <struct name="USC Sampler" size="8">
663*61046927SAndroid Build Coastguard Worker    <field name="Tag" size="8" start="0:0" type="USC Control" default="Sampler"/>
664*61046927SAndroid Build Coastguard Worker    <field name="Start" size="8" start="0:8" type="uint"/>
665*61046927SAndroid Build Coastguard Worker    <field name="Count" size="7" start="0:20" type="uint"/>
666*61046927SAndroid Build Coastguard Worker    <!-- Exact split is unknown. -->
667*61046927SAndroid Build Coastguard Worker    <field name="Buffer" size="36" start="0:27" type="address" modifier="shr(3)"/>
668*61046927SAndroid Build Coastguard Worker  </struct>
669*61046927SAndroid Build Coastguard Worker
670*61046927SAndroid Build Coastguard Worker  <enum name="Shared layout">
671*61046927SAndroid Build Coastguard Worker    <value name="Vertex/compute" value="0x24"/>
672*61046927SAndroid Build Coastguard Worker    <value name="32x32" value="0x2f"/>
673*61046927SAndroid Build Coastguard Worker    <value name="32x16" value="0x3f"/>
674*61046927SAndroid Build Coastguard Worker    <value name="16x16" value="0x36"/>
675*61046927SAndroid Build Coastguard Worker  </enum>
676*61046927SAndroid Build Coastguard Worker
677*61046927SAndroid Build Coastguard Worker  <struct name="USC Shared" size="4">
678*61046927SAndroid Build Coastguard Worker    <field name="Tag" size="8" start="0" type="USC Control" default="Shared"/>
679*61046927SAndroid Build Coastguard Worker    <field name="Uses shared memory" size="1" start="8" type="bool"/>
680*61046927SAndroid Build Coastguard Worker    <field name="Layout" size="6" start="10" type="Shared layout"/>
681*61046927SAndroid Build Coastguard Worker    <field name="Sample count" size="2" start="16" type="uint" default="1" modifier="log2"/>
682*61046927SAndroid Build Coastguard Worker    <field name="Sample stride in 8 bytes" size="4" start="20" type="uint"/>
683*61046927SAndroid Build Coastguard Worker    <field name="Bytes per threadgroup" size="8" start="24" type="uint" modifier="groups(256)"/>
684*61046927SAndroid Build Coastguard Worker  </struct>
685*61046927SAndroid Build Coastguard Worker
686*61046927SAndroid Build Coastguard Worker  <struct name="USC Shader" size="6">
687*61046927SAndroid Build Coastguard Worker    <field name="Tag" size="8" start="0" type="USC Control" default="Shader"/>
688*61046927SAndroid Build Coastguard Worker    <field name="Loads varyings" size="1" start="8" type="bool"/>
689*61046927SAndroid Build Coastguard Worker    <!-- Seen set for pixel rate fragment shaders? -->
690*61046927SAndroid Build Coastguard Worker    <field name="Unk 1" size="1" start="9" type="bool" default="0"/>
691*61046927SAndroid Build Coastguard Worker    <field name="Unk 2" size="6" start="10" type="uint" default="3"/>
692*61046927SAndroid Build Coastguard Worker    <field name="Code" size="32" start="16" type="address"/>
693*61046927SAndroid Build Coastguard Worker  </struct>
694*61046927SAndroid Build Coastguard Worker
695*61046927SAndroid Build Coastguard Worker  <struct name="USC Registers" size="4">
696*61046927SAndroid Build Coastguard Worker    <field name="Tag" size="8" start="0" type="USC Control" default="Registers"/>
697*61046927SAndroid Build Coastguard Worker    <field name="Register count" size="5" start="8" type="uint" modifier="groups(8)"/>
698*61046927SAndroid Build Coastguard Worker    <field name="Unk 1" size="1" start="13" type="bool" default="false"/>
699*61046927SAndroid Build Coastguard Worker    <field name="Spill size" size="4" start="18" type="hex" default="0"/>
700*61046927SAndroid Build Coastguard Worker    <field name="Unk 4" size="8" start="24" type="hex" default="0x1"/>
701*61046927SAndroid Build Coastguard Worker  </struct>
702*61046927SAndroid Build Coastguard Worker
703*61046927SAndroid Build Coastguard Worker  <struct name="USC No Preshader" size="2">
704*61046927SAndroid Build Coastguard Worker    <field name="Tag" size="8" start="0" type="USC Control" default="No preshader"/>
705*61046927SAndroid Build Coastguard Worker  </struct>
706*61046927SAndroid Build Coastguard Worker
707*61046927SAndroid Build Coastguard Worker  <struct name="USC Preshader" size="8">
708*61046927SAndroid Build Coastguard Worker    <field name="Tag" size="8" start="0" type="USC Control" default="Preshader"/>
709*61046927SAndroid Build Coastguard Worker    <field name="Unk" size="24" start="8" type="hex" default="0xc08000"/>
710*61046927SAndroid Build Coastguard Worker    <field name="Code" size="32" start="32" type="address"/>
711*61046927SAndroid Build Coastguard Worker  </struct>
712*61046927SAndroid Build Coastguard Worker
713*61046927SAndroid Build Coastguard Worker  <struct name="USC Fragment Properties" size="4">
714*61046927SAndroid Build Coastguard Worker    <field name="Tag" size="8" start="0" type="USC Control" default="Fragment properties"/>
715*61046927SAndroid Build Coastguard Worker    <!-- Guess. Set if the shader does not write the sample mask (including by
716*61046927SAndroid Build Coastguard Worker        discard_fragment) -->
717*61046927SAndroid Build Coastguard Worker    <field name="Early-z testing" size="1" start="8" type="bool"/>
718*61046927SAndroid Build Coastguard Worker    <field name="Unk 2" size="1" start="9" type="bool" default="true"/>
719*61046927SAndroid Build Coastguard Worker    <field name="Unconditional discard 1" size="1" start="10" type="bool"/>
720*61046927SAndroid Build Coastguard Worker    <field name="Unconditional discard 2" size="1" start="11" type="bool"/>
721*61046927SAndroid Build Coastguard Worker    <field name="Unk 3" size="4" start="12" type="hex" default="0xf"/>
722*61046927SAndroid Build Coastguard Worker    <field name="Unk 4" size="8" start="16" type="hex" default="0"/> <!-- TODO: determine relation, see docs/table.py -->
723*61046927SAndroid Build Coastguard Worker    <field name="Unk 5" size="8" start="24" type="hex" default="0x01"/>
724*61046927SAndroid Build Coastguard Worker  </struct>
725*61046927SAndroid Build Coastguard Worker  <!-- USC commands end -->
726*61046927SAndroid Build Coastguard Worker
727*61046927SAndroid Build Coastguard Worker  <!-- VDM commands start. VDM commands are padded out to 8b alignment. -->
728*61046927SAndroid Build Coastguard Worker  <enum name="VDM Block Type">
729*61046927SAndroid Build Coastguard Worker    <value name="PPP State Update" value="0"/>
730*61046927SAndroid Build Coastguard Worker    <value name="Barrier" value="1"/>
731*61046927SAndroid Build Coastguard Worker    <value name="VDM State Update" value="2"/>
732*61046927SAndroid Build Coastguard Worker    <value name="Index List" value="3"/>
733*61046927SAndroid Build Coastguard Worker    <value name="Stream Link" value="4"/>
734*61046927SAndroid Build Coastguard Worker    <value name="Tessellate" value="5"/>
735*61046927SAndroid Build Coastguard Worker    <value name="Stream terminate" value="6"/>
736*61046927SAndroid Build Coastguard Worker  </enum>
737*61046927SAndroid Build Coastguard Worker
738*61046927SAndroid Build Coastguard Worker  <struct name="PPP State" size="8">
739*61046927SAndroid Build Coastguard Worker    <field name="Pointer (hi)" size="8" start="0" type="hex"/>
740*61046927SAndroid Build Coastguard Worker    <field name="Size (words)" size="8" start="8" type="uint"/>
741*61046927SAndroid Build Coastguard Worker    <field name="Block Type" size="3" start="29" type="VDM Block Type" default="PPP State Update"/>
742*61046927SAndroid Build Coastguard Worker    <field name="Pointer (lo)" size="32" start="32" type="address"/>
743*61046927SAndroid Build Coastguard Worker  </struct>
744*61046927SAndroid Build Coastguard Worker
745*61046927SAndroid Build Coastguard Worker  <struct name="VDM Barrier">
746*61046927SAndroid Build Coastguard Worker    <field name="USC cache inval" size="1" start="3" type="bool" default="false"/>
747*61046927SAndroid Build Coastguard Worker    <field name="Unk 4" size="1" start="4" type="bool" default="false"/>
748*61046927SAndroid Build Coastguard Worker    <field name="Unk 5" size="1" start="5" type="bool" default="false"/>
749*61046927SAndroid Build Coastguard Worker    <field name="Unk 6" size="1" start="6" type="bool" default="false"/>
750*61046927SAndroid Build Coastguard Worker    <field name="Unk 8" size="1" start="8" type="bool" default="false"/>
751*61046927SAndroid Build Coastguard Worker    <field name="Unk 11" size="1" start="11" type="bool" default="false"/>
752*61046927SAndroid Build Coastguard Worker    <field name="Unk 20" size="1" start="20" type="bool" default="false"/>
753*61046927SAndroid Build Coastguard Worker    <field name="Unk 24" size="1" start="24" type="bool" default="false"/>
754*61046927SAndroid Build Coastguard Worker    <field name="Unk 26" size="1" start="26" type="bool" default="false"/>
755*61046927SAndroid Build Coastguard Worker    <field name="Returns" size="1" start="27" type="bool" default="false"/>
756*61046927SAndroid Build Coastguard Worker    <field name="Block Type" size="3" start="29" type="VDM Block Type" default="Barrier"/>
757*61046927SAndroid Build Coastguard Worker  </struct>
758*61046927SAndroid Build Coastguard Worker
759*61046927SAndroid Build Coastguard Worker  <enum name="Index size">
760*61046927SAndroid Build Coastguard Worker    <value name="U8" value="0"/>
761*61046927SAndroid Build Coastguard Worker    <value name="U16" value="1"/>
762*61046927SAndroid Build Coastguard Worker    <value name="U32" value="2"/>
763*61046927SAndroid Build Coastguard Worker  </enum>
764*61046927SAndroid Build Coastguard Worker
765*61046927SAndroid Build Coastguard Worker  <struct name="VDM State" size="4">
766*61046927SAndroid Build Coastguard Worker    <field name="Restart index present" size="1" start="0" type="bool"/>
767*61046927SAndroid Build Coastguard Worker    <field name="Vertex shader word 0 present" size="1" start="1" type="bool"/>
768*61046927SAndroid Build Coastguard Worker    <field name="Vertex shader word 1 present" size="1" start="2" type="bool"/>
769*61046927SAndroid Build Coastguard Worker    <field name="Vertex outputs present" size="1" start="3" type="bool"/>
770*61046927SAndroid Build Coastguard Worker    <field name="Tessellation present" size="1" start="4" type="bool"/>
771*61046927SAndroid Build Coastguard Worker    <field name="Vertex unknown present" size="1" start="5" type="bool"/>
772*61046927SAndroid Build Coastguard Worker    <field name="Tessellation scale present" size="1" start="7" type="bool"/>
773*61046927SAndroid Build Coastguard Worker    <field name="Block Type" size="3" start="29" type="VDM Block Type" default="VDM State Update"/>
774*61046927SAndroid Build Coastguard Worker  </struct>
775*61046927SAndroid Build Coastguard Worker
776*61046927SAndroid Build Coastguard Worker  <struct name="VDM State Restart Index" size="4">
777*61046927SAndroid Build Coastguard Worker    <field name="Value" size="32" start="0" type="hex"/>
778*61046927SAndroid Build Coastguard Worker  </struct>
779*61046927SAndroid Build Coastguard Worker
780*61046927SAndroid Build Coastguard Worker  <struct name="VDM State Vertex Shader Word 0" size="4">
781*61046927SAndroid Build Coastguard Worker    <field name="Unknown 0" size="1" start="0" type="hex" default="0"/>
782*61046927SAndroid Build Coastguard Worker    <field name="Uniform register count" size="3" start="1" type="uint" modifier="groups(64)"/>
783*61046927SAndroid Build Coastguard Worker    <field name="Texture state register count" size="5" start="4" type="uint" modifier="groups(8)"/>
784*61046927SAndroid Build Coastguard Worker    <field name="Sampler state register count" size="3" start="9" type="Sampler states"/>
785*61046927SAndroid Build Coastguard Worker    <field name="Preshader register count" size="4" start="12" type="uint" modifier="groups(16)"/>
786*61046927SAndroid Build Coastguard Worker  </struct>
787*61046927SAndroid Build Coastguard Worker
788*61046927SAndroid Build Coastguard Worker  <struct name="VDM State Vertex Shader Word 1" size="4">
789*61046927SAndroid Build Coastguard Worker    <field name="Unknown 1:0" size="2" start="0" type="hex"/>
790*61046927SAndroid Build Coastguard Worker    <field name="Pipeline" size="26" start="6" type="address" modifier="shr(6)"/>
791*61046927SAndroid Build Coastguard Worker  </struct>
792*61046927SAndroid Build Coastguard Worker
793*61046927SAndroid Build Coastguard Worker  <struct name="VDM State Vertex Outputs" size="4">
794*61046927SAndroid Build Coastguard Worker    <field name="Output count 1" size="8" start="0" type="uint" default="0"/>
795*61046927SAndroid Build Coastguard Worker    <field name="Output count 2" size="8" start="8" type="uint" default="0"/>
796*61046927SAndroid Build Coastguard Worker  </struct>
797*61046927SAndroid Build Coastguard Worker
798*61046927SAndroid Build Coastguard Worker  <enum name="VDM Vertex">
799*61046927SAndroid Build Coastguard Worker    <value name="0" value="0"/>
800*61046927SAndroid Build Coastguard Worker    <value name="1" value="1"/>
801*61046927SAndroid Build Coastguard Worker    <value name="2" value="2"/>
802*61046927SAndroid Build Coastguard Worker  </enum>
803*61046927SAndroid Build Coastguard Worker
804*61046927SAndroid Build Coastguard Worker  <enum name="Partition mode">
805*61046927SAndroid Build Coastguard Worker    <value name="Pow 2" value="0"/>
806*61046927SAndroid Build Coastguard Worker    <value name="Integer" value="1"/>
807*61046927SAndroid Build Coastguard Worker    <value name="Fractional odd" value="2"/>
808*61046927SAndroid Build Coastguard Worker    <value name="Fractional even" value="3"/>
809*61046927SAndroid Build Coastguard Worker  </enum>
810*61046927SAndroid Build Coastguard Worker
811*61046927SAndroid Build Coastguard Worker  <enum name="Step function">
812*61046927SAndroid Build Coastguard Worker    <value name="Constant" value="0"/>
813*61046927SAndroid Build Coastguard Worker    <value name="Per patch" value="1"/>
814*61046927SAndroid Build Coastguard Worker    <value name="Per instance" value="2"/>
815*61046927SAndroid Build Coastguard Worker    <value name="Per patch and per instance" value="3"/>
816*61046927SAndroid Build Coastguard Worker  </enum>
817*61046927SAndroid Build Coastguard Worker
818*61046927SAndroid Build Coastguard Worker  <enum name="Patch type">
819*61046927SAndroid Build Coastguard Worker    <value name="Triangles" value="0"/>
820*61046927SAndroid Build Coastguard Worker    <value name="Quads" value="1"/>
821*61046927SAndroid Build Coastguard Worker  </enum>
822*61046927SAndroid Build Coastguard Worker
823*61046927SAndroid Build Coastguard Worker  <enum name="Factor type">
824*61046927SAndroid Build Coastguard Worker    <value name="FP16" value="0"/>
825*61046927SAndroid Build Coastguard Worker    <value name="FP32" value="1"/>
826*61046927SAndroid Build Coastguard Worker  </enum>
827*61046927SAndroid Build Coastguard Worker
828*61046927SAndroid Build Coastguard Worker  <struct name="VDM State Tessellation" size="4">
829*61046927SAndroid Build Coastguard Worker    <field name="Unknown" size="17" start="0" type="hex"/> <!-- 0 -->
830*61046927SAndroid Build Coastguard Worker    <field name="Step function" size="2" start="17" type="Step function"/>
831*61046927SAndroid Build Coastguard Worker    <!-- Not yet hardware tested, firm guess from stuffing values -->
832*61046927SAndroid Build Coastguard Worker    <field name="Factor type" size="1" start="19" type="Factor type"/>
833*61046927SAndroid Build Coastguard Worker    <!-- XXX: Possibly unknown 3 is part of the patch type, with points &
834*61046927SAndroid Build Coastguard Worker    isolines also supported? would be a natural encoding. Needs testing to see
835*61046927SAndroid Build Coastguard Worker    if implemeneted in hw. -->
836*61046927SAndroid Build Coastguard Worker    <field name="Patch type" size="1" start="20" type="Patch type"/>
837*61046927SAndroid Build Coastguard Worker    <field name="Unknown 3" size="2" start="21" type="hex"/> <!-- 1 -->
838*61046927SAndroid Build Coastguard Worker
839*61046927SAndroid Build Coastguard Worker    <!-- Subtract 1 for fractional odd -->
840*61046927SAndroid Build Coastguard Worker    <field name="Max tess factor" size="6" start="23" type="uint" modifier="minus(1)"/>
841*61046927SAndroid Build Coastguard Worker    <field name="Counterclockwise winding" size="1" start="29" type="bool"/>
842*61046927SAndroid Build Coastguard Worker    <field name="Partition mode" size="2" start="30" type="Partition mode"/>
843*61046927SAndroid Build Coastguard Worker  </struct>
844*61046927SAndroid Build Coastguard Worker
845*61046927SAndroid Build Coastguard Worker  <struct name="VDM State Tessellation Scale" size="4">
846*61046927SAndroid Build Coastguard Worker    <!-- Always applied. Set to 1.0 to "disable" -->
847*61046927SAndroid Build Coastguard Worker    <field name="Scale" size="16" start="0" type="half"/>
848*61046927SAndroid Build Coastguard Worker  </struct>
849*61046927SAndroid Build Coastguard Worker
850*61046927SAndroid Build Coastguard Worker  <struct name="VDM State Vertex Unknown" size="4">
851*61046927SAndroid Build Coastguard Worker    <field name="Flat shading control" start="0" size="2" type="VDM Vertex"/>
852*61046927SAndroid Build Coastguard Worker    <field name="Unknown 4" size="1" start="4" type="bool"/>
853*61046927SAndroid Build Coastguard Worker    <field name="Unknown 5" size="1" start="5" type="bool"/>
854*61046927SAndroid Build Coastguard Worker    <field name="Generate primitive ID" size="1" start="6" type="bool"/>
855*61046927SAndroid Build Coastguard Worker  </struct>
856*61046927SAndroid Build Coastguard Worker
857*61046927SAndroid Build Coastguard Worker  <!--- Command to issue a direct non-indexed draw -->
858*61046927SAndroid Build Coastguard Worker  <struct name="Index List" size="4">
859*61046927SAndroid Build Coastguard Worker    <field name="Index buffer hi" size="8" start="0" type="hex"/>
860*61046927SAndroid Build Coastguard Worker    <field name="Primitive" size="8" start="8" type="Primitive"/>
861*61046927SAndroid Build Coastguard Worker    <field name="Restart enable" size="1" start="16" type="bool"/>
862*61046927SAndroid Build Coastguard Worker    <field name="Index size" size="3" start="17" type="Index size"/>
863*61046927SAndroid Build Coastguard Worker
864*61046927SAndroid Build Coastguard Worker    <field name="Index buffer size present" size="1" start="20" type="bool"/>
865*61046927SAndroid Build Coastguard Worker    <field name="Index buffer present" size="1" start="21" type="bool"/>
866*61046927SAndroid Build Coastguard Worker
867*61046927SAndroid Build Coastguard Worker    <!-- Order in the cmdstream is the same as bit order for these -->
868*61046927SAndroid Build Coastguard Worker    <field name="Index count present" size="1" start="22" type="bool"/>
869*61046927SAndroid Build Coastguard Worker    <field name="Instance count present" size="1" start="23" type="bool"/>
870*61046927SAndroid Build Coastguard Worker    <field name="Start present" size="1" start="24" type="bool"/>
871*61046927SAndroid Build Coastguard Worker    <!-- 2 words, 1st word is some kind of extra vertex offset? -->
872*61046927SAndroid Build Coastguard Worker    <field name="Unk 1 present" size="1" start="25" type="bool"/>
873*61046927SAndroid Build Coastguard Worker    <field name="Indirect buffer present" size="1" start="26" type="bool"/>
874*61046927SAndroid Build Coastguard Worker    <!-- 1 word, unknown purpose -->
875*61046927SAndroid Build Coastguard Worker    <field name="Unk 2 present" size="1" start="27" type="bool"/>
876*61046927SAndroid Build Coastguard Worker
877*61046927SAndroid Build Coastguard Worker    <field name="Block Type" size="3" start="29" type="VDM Block Type" default="Index List"/>
878*61046927SAndroid Build Coastguard Worker  </struct>
879*61046927SAndroid Build Coastguard Worker
880*61046927SAndroid Build Coastguard Worker  <struct name="Index List: Buffer lo" size="4">
881*61046927SAndroid Build Coastguard Worker    <!-- Index buffer lsb -->
882*61046927SAndroid Build Coastguard Worker    <field name="Buffer lo" size="32" start="0" type="hex"/>
883*61046927SAndroid Build Coastguard Worker  </struct>
884*61046927SAndroid Build Coastguard Worker
885*61046927SAndroid Build Coastguard Worker  <struct name="Index List: Count" size="4">
886*61046927SAndroid Build Coastguard Worker    <!-- Vertex count for non-indexed, index count for index count -->
887*61046927SAndroid Build Coastguard Worker    <field name="Count" size="32" start="0" type="uint"/>
888*61046927SAndroid Build Coastguard Worker  </struct>
889*61046927SAndroid Build Coastguard Worker
890*61046927SAndroid Build Coastguard Worker  <struct name="Index List: Instances" size="4">
891*61046927SAndroid Build Coastguard Worker    <field name="Count" size="32" start="0" type="uint"/> <!-- must be nonzero -->
892*61046927SAndroid Build Coastguard Worker  </struct>
893*61046927SAndroid Build Coastguard Worker
894*61046927SAndroid Build Coastguard Worker  <struct name="Index List: Start" size="4">
895*61046927SAndroid Build Coastguard Worker    <!-- Base vertex for indexed draws -->
896*61046927SAndroid Build Coastguard Worker    <field name="Start" size="32" start="0" type="uint"/>
897*61046927SAndroid Build Coastguard Worker  </struct>
898*61046927SAndroid Build Coastguard Worker
899*61046927SAndroid Build Coastguard Worker  <struct name="Index List: Buffer size" size="4">
900*61046927SAndroid Build Coastguard Worker    <field name="Size" size="32" start="0" type="uint" modifier="shr(2)"/>
901*61046927SAndroid Build Coastguard Worker  </struct>
902*61046927SAndroid Build Coastguard Worker
903*61046927SAndroid Build Coastguard Worker  <struct name="Index List: Indirect buffer" size="8">
904*61046927SAndroid Build Coastguard Worker    <field name="Address hi" size="8" start="0" type="hex"/>
905*61046927SAndroid Build Coastguard Worker    <field name="Address lo" size="32" start="32" type="hex"/>
906*61046927SAndroid Build Coastguard Worker  </struct>
907*61046927SAndroid Build Coastguard Worker
908*61046927SAndroid Build Coastguard Worker  <!-- Conditional branching and function calls may be supported, see the
909*61046927SAndroid Build Coastguard Worker       STREAM_LINK0 struct in mesa/src/imagination/csbgen/rogue_vdm.xml for a
910*61046927SAndroid Build Coastguard Worker       probable definition -->
911*61046927SAndroid Build Coastguard Worker  <struct name="VDM Stream Link" size="8">
912*61046927SAndroid Build Coastguard Worker    <field name="Target hi" size="8" start="0" type="hex"/>
913*61046927SAndroid Build Coastguard Worker    <field name="With return" size="1" start="28" type="bool"/>
914*61046927SAndroid Build Coastguard Worker    <field name="Block Type" size="3" start="29" type="VDM Block Type" default="Stream Link"/>
915*61046927SAndroid Build Coastguard Worker    <field name="Target lo" size="32" start="32" type="hex"/>
916*61046927SAndroid Build Coastguard Worker  </struct>
917*61046927SAndroid Build Coastguard Worker
918*61046927SAndroid Build Coastguard Worker  <struct name="VDM Tessellate" size="4">
919*61046927SAndroid Build Coastguard Worker    <field name="Factor buffer hi" size="8" start="0" type="hex"/>
920*61046927SAndroid Build Coastguard Worker    <field name="Unknown 0" size="12" start="8" type="hex"/> <!-- 0xc -->
921*61046927SAndroid Build Coastguard Worker
922*61046927SAndroid Build Coastguard Worker    <!-- Set for both indirect and direct -->
923*61046927SAndroid Build Coastguard Worker    <field name="Unknown 2" size="1" start="20" type="bool"/>
924*61046927SAndroid Build Coastguard Worker
925*61046927SAndroid Build Coastguard Worker    <!-- Present for both indirect and direct -->
926*61046927SAndroid Build Coastguard Worker    <!-- XXX: Order is an (educated) guess -->
927*61046927SAndroid Build Coastguard Worker    <field name="Factor buffer present" size="1" start="21" type="bool"/>
928*61046927SAndroid Build Coastguard Worker
929*61046927SAndroid Build Coastguard Worker    <!-- XXX: out of bits???? not set for indirect??? -->
930*61046927SAndroid Build Coastguard Worker    <field name="Patch count present" size="1" start="22" type="bool"/>
931*61046927SAndroid Build Coastguard Worker
932*61046927SAndroid Build Coastguard Worker    <!-- These four are omitted for indirect draws -->
933*61046927SAndroid Build Coastguard Worker    <!-- XXX: Order is an (educated) guess -->
934*61046927SAndroid Build Coastguard Worker    <field name="Instance count present" size="1" start="22" type="bool"/>
935*61046927SAndroid Build Coastguard Worker    <field name="Base patch present" size="1" start="23" type="bool"/>
936*61046927SAndroid Build Coastguard Worker    <field name="Base instance present" size="1" start="25" type="bool"/>
937*61046927SAndroid Build Coastguard Worker    <!-- XXX: Out of bits!!! -->
938*61046927SAndroid Build Coastguard Worker    <field name="Instance stride present" size="1" start="25" type="bool"/>
939*61046927SAndroid Build Coastguard Worker
940*61046927SAndroid Build Coastguard Worker    <field name="Indirect present" size="1" start="26" type="bool"/>
941*61046927SAndroid Build Coastguard Worker    <!-- Present for both indirect and direct -->
942*61046927SAndroid Build Coastguard Worker    <field name="Unknown present" size="1" start="28" type="bool"/>
943*61046927SAndroid Build Coastguard Worker
944*61046927SAndroid Build Coastguard Worker    <field name="Unknown 1" size="1" start="28" type="hex"/> <!-- 1 -->
945*61046927SAndroid Build Coastguard Worker    <field name="Block Type" size="3" start="29" type="VDM Block Type" default="Tessellate"/>
946*61046927SAndroid Build Coastguard Worker  </struct>
947*61046927SAndroid Build Coastguard Worker
948*61046927SAndroid Build Coastguard Worker  <struct name="VDM Tessellate: Factor buffer" size="4">
949*61046927SAndroid Build Coastguard Worker    <field name="Factor buffer lo" size="32" start="0" type="hex"/>
950*61046927SAndroid Build Coastguard Worker  </struct>
951*61046927SAndroid Build Coastguard Worker
952*61046927SAndroid Build Coastguard Worker  <struct name="VDM Tessellate: Patch count" size="4">
953*61046927SAndroid Build Coastguard Worker    <field name="Patch count" size="32" start="0" type="uint"/>
954*61046927SAndroid Build Coastguard Worker  </struct>
955*61046927SAndroid Build Coastguard Worker
956*61046927SAndroid Build Coastguard Worker  <struct name="VDM Tessellate: Instance count" size="4">
957*61046927SAndroid Build Coastguard Worker    <field name="Instance count" size="32" start="0" type="uint"/>
958*61046927SAndroid Build Coastguard Worker  </struct>
959*61046927SAndroid Build Coastguard Worker
960*61046927SAndroid Build Coastguard Worker  <struct name="VDM Tessellate: Base patch" size="4">
961*61046927SAndroid Build Coastguard Worker    <field name="Base patch" size="32" start="0" type="uint"/>
962*61046927SAndroid Build Coastguard Worker  </struct>
963*61046927SAndroid Build Coastguard Worker
964*61046927SAndroid Build Coastguard Worker  <struct name="VDM Tessellate: Base instance" size="4">
965*61046927SAndroid Build Coastguard Worker    <field name="Base instance" size="32" start="0" type="uint"/>
966*61046927SAndroid Build Coastguard Worker  </struct>
967*61046927SAndroid Build Coastguard Worker
968*61046927SAndroid Build Coastguard Worker  <struct name="VDM Tessellate: Instance stride" size="4">
969*61046927SAndroid Build Coastguard Worker    <!-- Divided by 4 for QUADS -->
970*61046927SAndroid Build Coastguard Worker    <field name="Instance stride" size="32" start="0" type="uint"/>
971*61046927SAndroid Build Coastguard Worker  </struct>
972*61046927SAndroid Build Coastguard Worker
973*61046927SAndroid Build Coastguard Worker  <struct name="VDM Tessellate: Indirect" size="12">
974*61046927SAndroid Build Coastguard Worker    <!-- Address of the indirect buffer, format presumably matches Metal -->
975*61046927SAndroid Build Coastguard Worker    <field name="Address hi" size="8" start="0:0" type="hex"/>
976*61046927SAndroid Build Coastguard Worker    <field name="Address lo" size="32" start="1:0" type="hex"/>
977*61046927SAndroid Build Coastguard Worker
978*61046927SAndroid Build Coastguard Worker    <!-- # of bytes in the buffer, presumably for hw bounds checking -->
979*61046927SAndroid Build Coastguard Worker    <field name="Size" size="32" start="2:0" type="uint"/>
980*61046927SAndroid Build Coastguard Worker  </struct>
981*61046927SAndroid Build Coastguard Worker
982*61046927SAndroid Build Coastguard Worker  <struct name="VDM Tessellate: Unknown" size="4">
983*61046927SAndroid Build Coastguard Worker    <field name="Unknown 7" size="32" start="0" type="hex"/> <!-- 3F -->
984*61046927SAndroid Build Coastguard Worker  </struct>
985*61046927SAndroid Build Coastguard Worker
986*61046927SAndroid Build Coastguard Worker  <struct name="VDM Stream Terminate" size="32">
987*61046927SAndroid Build Coastguard Worker    <field name="Block Type" size="3" start="29" type="VDM Block Type" default="Stream Terminate"/>
988*61046927SAndroid Build Coastguard Worker  </struct>
989*61046927SAndroid Build Coastguard Worker
990*61046927SAndroid Build Coastguard Worker  <!-- VDM commands end -->
991*61046927SAndroid Build Coastguard Worker
992*61046927SAndroid Build Coastguard Worker  <!-- CDM commands start -->
993*61046927SAndroid Build Coastguard Worker  <enum name="CDM Block Type">
994*61046927SAndroid Build Coastguard Worker    <value name="Launch" value="0"/>
995*61046927SAndroid Build Coastguard Worker    <value name="Stream Link" value="1"/>
996*61046927SAndroid Build Coastguard Worker    <value name="Stream Terminate" value="2"/>
997*61046927SAndroid Build Coastguard Worker    <value name="Barrier" value="3"/>
998*61046927SAndroid Build Coastguard Worker  </enum>
999*61046927SAndroid Build Coastguard Worker
1000*61046927SAndroid Build Coastguard Worker  <enum name="CDM Mode">
1001*61046927SAndroid Build Coastguard Worker    <!-- Global size + Local size -->
1002*61046927SAndroid Build Coastguard Worker    <value name="Direct" value="0"/>
1003*61046927SAndroid Build Coastguard Worker
1004*61046927SAndroid Build Coastguard Worker    <!-- Indirect buffer + Local size. Indirect buffer contains 3x 32-bit global
1005*61046927SAndroid Build Coastguard Worker         size. Used for indirect dispatch when the local size must be
1006*61046927SAndroid Build Coastguard Worker         fixed (e.g. due to local memory being used) -->
1007*61046927SAndroid Build Coastguard Worker    <value name="Indirect global" value="1"/>
1008*61046927SAndroid Build Coastguard Worker
1009*61046927SAndroid Build Coastguard Worker    <!-- Indirect buffer, containing 6x 32-bit size. Used for indirect dispatch
1010*61046927SAndroid Build Coastguard Worker         when the driver wants to optimize the local size with an auxiliary
1011*61046927SAndroid Build Coastguard Worker         compute kernel (requiring e.g. no local memory use) -->
1012*61046927SAndroid Build Coastguard Worker    <value name="Indirect local" value="2"/>
1013*61046927SAndroid Build Coastguard Worker  </enum>
1014*61046927SAndroid Build Coastguard Worker
1015*61046927SAndroid Build Coastguard Worker  <struct name="CDM Launch Word 0" size="4">
1016*61046927SAndroid Build Coastguard Worker    <field name="Uniform register count" size="3" start="1" type="uint" modifier="groups(64)"/>
1017*61046927SAndroid Build Coastguard Worker    <field name="Texture state register count" size="5" start="4" type="uint" modifier="groups(8)"/>
1018*61046927SAndroid Build Coastguard Worker    <field name="Sampler state register count" size="3" start="9" type="Sampler states"/>
1019*61046927SAndroid Build Coastguard Worker    <field name="Preshader register count" size="4" start="12" type="uint" modifier="groups(16)"/>
1020*61046927SAndroid Build Coastguard Worker    <field name="Mode" size="2" start="27" type="CDM Mode"/>
1021*61046927SAndroid Build Coastguard Worker    <field name="Block Type" size="3" start="29" type="CDM Block Type" default="Launch"/>
1022*61046927SAndroid Build Coastguard Worker  </struct>
1023*61046927SAndroid Build Coastguard Worker
1024*61046927SAndroid Build Coastguard Worker  <struct name="CDM Launch Word 1" size="4">
1025*61046927SAndroid Build Coastguard Worker    <field name="Pipeline" size="26" start="6" type="address" modifier="shr(6)"/>
1026*61046927SAndroid Build Coastguard Worker  </struct>
1027*61046927SAndroid Build Coastguard Worker
1028*61046927SAndroid Build Coastguard Worker  <struct name="CDM Unk G14X" size="8">
1029*61046927SAndroid Build Coastguard Worker    <field name="Unknown 30" size="1" start="1:30" type="bool" default="true"/>
1030*61046927SAndroid Build Coastguard Worker  </struct>
1031*61046927SAndroid Build Coastguard Worker
1032*61046927SAndroid Build Coastguard Worker  <struct name="CDM Indirect" size="8">
1033*61046927SAndroid Build Coastguard Worker    <field name="Address hi" size="8" start="0" type="hex"/>
1034*61046927SAndroid Build Coastguard Worker    <field name="Address lo" size="30" start="34" type="hex" modifier="shr(2)"/>
1035*61046927SAndroid Build Coastguard Worker  </struct>
1036*61046927SAndroid Build Coastguard Worker
1037*61046927SAndroid Build Coastguard Worker  <struct name="CDM Global size" size="12">
1038*61046927SAndroid Build Coastguard Worker    <field name="X" size="32" start="0:0" type="uint"/>
1039*61046927SAndroid Build Coastguard Worker    <field name="Y" size="32" start="1:0" type="uint"/>
1040*61046927SAndroid Build Coastguard Worker    <field name="Z" size="32" start="2:0" type="uint"/>
1041*61046927SAndroid Build Coastguard Worker  </struct>
1042*61046927SAndroid Build Coastguard Worker
1043*61046927SAndroid Build Coastguard Worker  <struct name="CDM Local size" size="12">
1044*61046927SAndroid Build Coastguard Worker    <field name="X" size="32" start="0:0" type="uint"/>
1045*61046927SAndroid Build Coastguard Worker    <field name="Y" size="32" start="1:0" type="uint"/>
1046*61046927SAndroid Build Coastguard Worker    <field name="Z" size="32" start="2:0" type="uint"/>
1047*61046927SAndroid Build Coastguard Worker  </struct>
1048*61046927SAndroid Build Coastguard Worker
1049*61046927SAndroid Build Coastguard Worker  <struct name="CDM Barrier" size="4">
1050*61046927SAndroid Build Coastguard Worker    <field name="Unk 0" size="1" start="0" type="bool" default="false"/>
1051*61046927SAndroid Build Coastguard Worker    <field name="Unk 1" size="1" start="1" type="bool" default="false"/>
1052*61046927SAndroid Build Coastguard Worker    <field name="Unk 2" size="1" start="2" type="bool" default="false"/>
1053*61046927SAndroid Build Coastguard Worker    <field name="USC cache inval" size="1" start="3" type="bool" default="false"/>
1054*61046927SAndroid Build Coastguard Worker    <field name="Unk 4" size="1" start="4" type="bool" default="false"/>
1055*61046927SAndroid Build Coastguard Worker    <field name="Unk 5" size="1" start="5" type="bool" default="false"/>
1056*61046927SAndroid Build Coastguard Worker    <field name="Unk 6" size="1" start="6" type="bool" default="false"/>
1057*61046927SAndroid Build Coastguard Worker    <field name="Unk 7" size="1" start="7" type="bool" default="false"/>
1058*61046927SAndroid Build Coastguard Worker    <field name="Unk 8" size="1" start="8" type="bool" default="false"/>
1059*61046927SAndroid Build Coastguard Worker    <field name="Unk 9" size="1" start="9" type="bool" default="false"/>
1060*61046927SAndroid Build Coastguard Worker    <field name="Unk 10" size="1" start="10" type="bool" default="false"/>
1061*61046927SAndroid Build Coastguard Worker    <field name="Unk 11" size="1" start="11" type="bool" default="false"/>
1062*61046927SAndroid Build Coastguard Worker    <field name="Unk 12" size="1" start="12" type="bool" default="false"/>
1063*61046927SAndroid Build Coastguard Worker    <field name="Unk 13" size="1" start="13" type="bool" default="false"/>
1064*61046927SAndroid Build Coastguard Worker    <field name="Unk 14" size="1" start="14" type="bool" default="false"/>
1065*61046927SAndroid Build Coastguard Worker    <field name="Unk 15" size="1" start="15" type="bool" default="false"/>
1066*61046927SAndroid Build Coastguard Worker    <field name="Unk 16" size="1" start="16" type="bool" default="false"/>
1067*61046927SAndroid Build Coastguard Worker    <field name="Unk 17" size="1" start="17" type="bool" default="false"/>
1068*61046927SAndroid Build Coastguard Worker    <field name="Unk 18" size="1" start="18" type="bool" default="false"/>
1069*61046927SAndroid Build Coastguard Worker    <field name="Unk 19" size="1" start="19" type="bool" default="false"/>
1070*61046927SAndroid Build Coastguard Worker    <field name="Unk 20" size="1" start="20" type="bool" default="false"/>
1071*61046927SAndroid Build Coastguard Worker    <field name="Unk 24" size="1" start="24" type="bool" default="false"/>
1072*61046927SAndroid Build Coastguard Worker    <field name="Unk 26" size="1" start="26" type="bool" default="false"/>
1073*61046927SAndroid Build Coastguard Worker    <field name="Returns" size="1" start="27" type="bool" default="false"/>
1074*61046927SAndroid Build Coastguard Worker    <field name="Block Type" size="3" start="29" type="CDM Block Type" default="Barrier"/>
1075*61046927SAndroid Build Coastguard Worker  </struct>
1076*61046927SAndroid Build Coastguard Worker
1077*61046927SAndroid Build Coastguard Worker  <struct name="CDM Stream Link" size="8">
1078*61046927SAndroid Build Coastguard Worker    <field name="Target hi" size="8" start="0" type="hex"/>
1079*61046927SAndroid Build Coastguard Worker    <field name="Block Type" size="3" start="29" type="CDM Block Type" default="Stream Link"/>
1080*61046927SAndroid Build Coastguard Worker    <field name="Target lo" size="32" start="32" type="hex"/>
1081*61046927SAndroid Build Coastguard Worker  </struct>
1082*61046927SAndroid Build Coastguard Worker
1083*61046927SAndroid Build Coastguard Worker  <struct name="CDM Stream Terminate" size="8">
1084*61046927SAndroid Build Coastguard Worker    <field name="Block Type" size="3" start="29" type="CDM Block Type" default="Stream Terminate"/>
1085*61046927SAndroid Build Coastguard Worker  </struct>
1086*61046927SAndroid Build Coastguard Worker  <!-- CDM commands end -->
1087*61046927SAndroid Build Coastguard Worker
1088*61046927SAndroid Build Coastguard Worker  <!--- The rest of this file is likely software defined by macOS kernel -->
1089*61046927SAndroid Build Coastguard Worker  <enum name="IOGPU Attachment Type">
1090*61046927SAndroid Build Coastguard Worker    <value name="Colour" value="0xE"/>
1091*61046927SAndroid Build Coastguard Worker    <value name="Depth" value="0x10"/>
1092*61046927SAndroid Build Coastguard Worker    <value name="Stencil" value="0x11"/>
1093*61046927SAndroid Build Coastguard Worker    <value name="Visibility" value="0x12"/>
1094*61046927SAndroid Build Coastguard Worker  </enum>
1095*61046927SAndroid Build Coastguard Worker
1096*61046927SAndroid Build Coastguard Worker  <struct name="IOGPU Attachment" size="24">
1097*61046927SAndroid Build Coastguard Worker    <field name="Unk 0" start="0:0" size="16" default="0x100" type="hex"/>
1098*61046927SAndroid Build Coastguard Worker    <field name="Address" start="0:16" size="48" type="address"/>
1099*61046927SAndroid Build Coastguard Worker    <field name="Type" start="2:16" size="16" type="IOGPU Attachment Type"/>
1100*61046927SAndroid Build Coastguard Worker    <field name="Size" start="3:9" size="32" type="uint"/>
1101*61046927SAndroid Build Coastguard Worker    <field name="Unk 3" start="4:16" size="4" type="hex" default="0xC"/>
1102*61046927SAndroid Build Coastguard Worker    <!-- Percent of total attachment space used for this attachment, expressed
1103*61046927SAndroid Build Coastguard Worker         in a decimal percentage [0, 100] <field name="Percent" start="5:16" -->
1104*61046927SAndroid Build Coastguard Worker    <field name="Percent" start="5:16" size="16" type="uint"/>
1105*61046927SAndroid Build Coastguard Worker  </struct>
1106*61046927SAndroid Build Coastguard Worker
1107*61046927SAndroid Build Coastguard Worker  <enum name="ZLS Format">
1108*61046927SAndroid Build Coastguard Worker    <value name="32F" value="0"/>
1109*61046927SAndroid Build Coastguard Worker    <value name="16" value="2"/>
1110*61046927SAndroid Build Coastguard Worker  </enum>
1111*61046927SAndroid Build Coastguard Worker
1112*61046927SAndroid Build Coastguard Worker  <struct name="ZLS Control" size="8">
1113*61046927SAndroid Build Coastguard Worker    <field name="Unknown 0" start="0" size="1" type="bool"/>
1114*61046927SAndroid Build Coastguard Worker    <field name="Unknown 1" start="1" size="1" type="bool"/>
1115*61046927SAndroid Build Coastguard Worker    <field name="Z Compress 1" start="2" size="1" type="bool"/>
1116*61046927SAndroid Build Coastguard Worker    <field name="Unknown 3" start="3" size="1" type="bool"/>
1117*61046927SAndroid Build Coastguard Worker    <field name="S Compress 1" start="4" size="1" type="bool"/>
1118*61046927SAndroid Build Coastguard Worker    <field name="Unknown 5" start="5" size="1" type="bool"/>
1119*61046927SAndroid Build Coastguard Worker    <field name="Z Compress 2" start="6" size="1" type="bool"/>
1120*61046927SAndroid Build Coastguard Worker    <field name="Unknown 7" start="7" size="1" type="bool"/>
1121*61046927SAndroid Build Coastguard Worker    <field name="S Compress 2" start="8" size="1" type="bool"/>
1122*61046927SAndroid Build Coastguard Worker    <field name="S Load Enable" start="14" size="1" type="bool"/>
1123*61046927SAndroid Build Coastguard Worker    <field name="Z Load Enable" start="15" size="1" type="bool"/>
1124*61046927SAndroid Build Coastguard Worker    <field name="S Store Enable" start="18" size="1" type="bool"/>
1125*61046927SAndroid Build Coastguard Worker    <field name="Z Store Enable" start="19" size="1" type="bool"/>
1126*61046927SAndroid Build Coastguard Worker    <field name="Z Format" start="25" size="2" type="ZLS Format"/>
1127*61046927SAndroid Build Coastguard Worker    <field name="Z Resolve" start="56" size="1" type="bool"/>
1128*61046927SAndroid Build Coastguard Worker    <field name="S Resolve" start="58" size="1" type="bool"/>
1129*61046927SAndroid Build Coastguard Worker  </struct>
1130*61046927SAndroid Build Coastguard Worker
1131*61046927SAndroid Build Coastguard Worker  <struct name="IOGPU Header" size="64">
1132*61046927SAndroid Build Coastguard Worker    <field name="Unk 0" start="0:0" size="32" default="0x10000" type="hex"/>
1133*61046927SAndroid Build Coastguard Worker    <field name="Total size" start="1:0" size="32" type="uint"/>
1134*61046927SAndroid Build Coastguard Worker    <!-- 0x7 in 11.x -->
1135*61046927SAndroid Build Coastguard Worker    <field name="Unk 2" start="2:0" size="32" default="0x4" type="hex"/>
1136*61046927SAndroid Build Coastguard Worker    <field name="Attachment length" start="9:0" size="32" type="uint"/>
1137*61046927SAndroid Build Coastguard Worker    <field name="Attachment offset" start="10:0" size="32" type="uint"/>
1138*61046927SAndroid Build Coastguard Worker    <field name="Unknown offset" start="11:0" size="32" type="uint"/>
1139*61046927SAndroid Build Coastguard Worker    <field name="Unk 4" start="12:0" size="32" default="0x30" type="hex"/>
1140*61046927SAndroid Build Coastguard Worker    <field name="Unk 5" start="13:0" size="32" default="0x01" type="hex"/>
1141*61046927SAndroid Build Coastguard Worker    <field name="Encoder" start="14:0" size="64" type="address"/>
1142*61046927SAndroid Build Coastguard Worker  </struct>
1143*61046927SAndroid Build Coastguard Worker
1144*61046927SAndroid Build Coastguard Worker  <struct name="Spill Buffer Histogram" size="60">
1145*61046927SAndroid Build Coastguard Worker    <field name="Bin 0" start="0:0" size="4" type="uint"/>
1146*61046927SAndroid Build Coastguard Worker    <field name="Bin 1" start="1:0" size="4" type="uint"/>
1147*61046927SAndroid Build Coastguard Worker    <field name="Bin 2" start="2:0" size="4" type="uint"/>
1148*61046927SAndroid Build Coastguard Worker    <field name="Bin 3" start="3:0" size="4" type="uint"/>
1149*61046927SAndroid Build Coastguard Worker    <field name="Bin 4" start="4:0" size="4" type="uint"/>
1150*61046927SAndroid Build Coastguard Worker    <field name="Bin 5" start="5:0" size="4" type="uint"/>
1151*61046927SAndroid Build Coastguard Worker    <field name="Bin 6" start="6:0" size="4" type="uint"/>
1152*61046927SAndroid Build Coastguard Worker    <field name="Bin 7" start="7:0" size="4" type="uint"/>
1153*61046927SAndroid Build Coastguard Worker    <field name="Bin 8" start="8:0" size="4" type="uint"/>
1154*61046927SAndroid Build Coastguard Worker    <field name="Bin 9" start="9:0" size="4" type="uint"/>
1155*61046927SAndroid Build Coastguard Worker    <field name="Bin 10" start="10:0" size="4" type="uint"/>
1156*61046927SAndroid Build Coastguard Worker    <field name="Bin 11" start="11:0" size="4" type="uint"/>
1157*61046927SAndroid Build Coastguard Worker    <field name="Bin 12" start="12:0" size="4" type="uint"/>
1158*61046927SAndroid Build Coastguard Worker    <field name="Bin 13" start="13:0" size="4" type="uint"/>
1159*61046927SAndroid Build Coastguard Worker    <field name="Bin 14" start="14:0" size="4" type="uint"/>
1160*61046927SAndroid Build Coastguard Worker  </struct>
1161*61046927SAndroid Build Coastguard Worker
1162*61046927SAndroid Build Coastguard Worker  <struct name="IOGPU Compute" size="384">
1163*61046927SAndroid Build Coastguard Worker    <field name="Deflake 1" start="20:0" size="64" type="address"/>
1164*61046927SAndroid Build Coastguard Worker    <field name="Terminate of encoder" start="22:0" size="64" type="address"/>
1165*61046927SAndroid Build Coastguard Worker    <field name="Deflake 2" start="26:0" size="64" type="address"/>
1166*61046927SAndroid Build Coastguard Worker    <field name="Deflake 3" start="28:0" size="64" type="address"/>
1167*61046927SAndroid Build Coastguard Worker    <field name="Deflake 4" start="30:0" size="64" type="address"/>
1168*61046927SAndroid Build Coastguard Worker    <field name="Deflake 5" start="32:0" size="64" type="address"/>
1169*61046927SAndroid Build Coastguard Worker    <field name="Unk 34" start="34:0" size="32" default="1" type="hex"/>
1170*61046927SAndroid Build Coastguard Worker    <field name="Unk address" start="36:0" size="64" type="address"/>
1171*61046927SAndroid Build Coastguard Worker    <field name="Unk 40" start="40:0" size="32" default="0x1c" type="hex"/>
1172*61046927SAndroid Build Coastguard Worker    <field name="Encoder ID" start="41:0" size="32" type="hex"/>
1173*61046927SAndroid Build Coastguard Worker    <field name="Unk 44" start="44:0" size="32" default="0xffffffff" type="hex"/>
1174*61046927SAndroid Build Coastguard Worker    <field name="Context switch program" start="48:0" size="32" type="address"/>
1175*61046927SAndroid Build Coastguard Worker
1176*61046927SAndroid Build Coastguard Worker    <!-- An enum that's purely macOS defined UAPI. Doesn't matter for us.
1177*61046927SAndroid Build Coastguard Worker    More info at https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21062#note_1754715 -->
1178*61046927SAndroid Build Coastguard Worker    <field name="Context switch block size" start="56:0" size="4" default="2" type="hex"/>
1179*61046927SAndroid Build Coastguard Worker    <field name="Spilling unk 1" start="57:3" size="1" type="bool"/>
1180*61046927SAndroid Build Coastguard Worker    <!-- Depends on grid size, as well as other factors. TODO: Decode. -->
1181*61046927SAndroid Build Coastguard Worker    <field name="Number of context switch buffers" start="58:0" size="32" default="1" type="uint"/>
1182*61046927SAndroid Build Coastguard Worker    <field name="Spill Buffer Histogram" start="60:0" size="480" type="Spill Buffer Histogram"/>
1183*61046927SAndroid Build Coastguard Worker    <!-- Lina's guess at the meaning -->
1184*61046927SAndroid Build Coastguard Worker    <field name="Enable context switching" start="75:16" size="1" default="true" type="bool"/>
1185*61046927SAndroid Build Coastguard Worker    <field name="Unk 94" start="94:0" size="32" default="0xffffffff" type="hex"/>
1186*61046927SAndroid Build Coastguard Worker    <field name="Unk 95" start="95:0" size="32" default="0xffffffff" type="hex"/>
1187*61046927SAndroid Build Coastguard Worker  </struct>
1188*61046927SAndroid Build Coastguard Worker
1189*61046927SAndroid Build Coastguard Worker  <struct name="IOGPU Graphics" size="1920">
1190*61046927SAndroid Build Coastguard Worker    <!-- if either deflake address is null, rendering gets flaky for high
1191*61046927SAndroid Build Coastguard Worker         geometry counts -->
1192*61046927SAndroid Build Coastguard Worker    <field name="Deflake 1" start="22:0" size="64" type="address"/>
1193*61046927SAndroid Build Coastguard Worker    <field name="Deflake 2" start="24:0" size="64" type="address"/>
1194*61046927SAndroid Build Coastguard Worker    <field name="Unk 54" start="38:0" size="32" default="0x6b0003" type="hex"/>
1195*61046927SAndroid Build Coastguard Worker    <field name="Unk 55" start="39:0" size="32" default="0x3a0012" type="hex"/>
1196*61046927SAndroid Build Coastguard Worker    <field name="Unk 56" start="40:0" size="32" default="0x1" type="hex"/>
1197*61046927SAndroid Build Coastguard Worker    <field name="Deflake 3" start="94:0" size="64" type="address"/>
1198*61046927SAndroid Build Coastguard Worker    <field name="Unk 112" start="96:0" size="32" default="0x1" type="hex"/>
1199*61046927SAndroid Build Coastguard Worker    <field name="Unk 114" start="98:0" size="32" default="0x1c" type="hex"/>
1200*61046927SAndroid Build Coastguard Worker    <field name="Memoryless render targets used" start="100:0" size="1" type="bool"/>
1201*61046927SAndroid Build Coastguard Worker    <field name="OpenGL depth clipping" start="100:24" size="1" type="bool"/>
1202*61046927SAndroid Build Coastguard Worker    <field name="Unk 118" start="102:0" size="32" default="0xffffffff" type="hex"/>
1203*61046927SAndroid Build Coastguard Worker    <field name="Unk 119" start="103:0" size="32" default="0xffffffff" type="hex"/>
1204*61046927SAndroid Build Coastguard Worker    <field name="Unk 120" start="104:0" size="32" default="0xffffffff" type="hex"/>
1205*61046927SAndroid Build Coastguard Worker
1206*61046927SAndroid Build Coastguard Worker    <field name="Clear pipeline bind" start="146:0" size="32" type="hex"/>
1207*61046927SAndroid Build Coastguard Worker    <field name="Clear pipeline unk" start="148:0" size="4" default="4" type="hex"/>
1208*61046927SAndroid Build Coastguard Worker    <field name="Clear pipeline" start="148:4" size="28" type="address" modifier="shr(4)"/>
1209*61046927SAndroid Build Coastguard Worker    <field name="Store pipeline bind" start="154:0" size="32" type="hex"/>
1210*61046927SAndroid Build Coastguard Worker    <field name="Store pipeline unk" start="156:0" size="4" default="4" type="hex"/>
1211*61046927SAndroid Build Coastguard Worker    <field name="Store pipeline" start="156:4" size="28" type="address" modifier="shr(4)"/>
1212*61046927SAndroid Build Coastguard Worker    <field name="Scissor array" start="158:0" size="64" type="address"/>
1213*61046927SAndroid Build Coastguard Worker    <field name="Depth bias array" start="160:0" size="64" type="address"/>
1214*61046927SAndroid Build Coastguard Worker    <field name="ZLS control" start="164:0" size="32" type="ZLS Control"/>
1215*61046927SAndroid Build Coastguard Worker    <field name="Depth width" start="170:0" size="15" type="uint" default="1" modifier="minus(1)"/>
1216*61046927SAndroid Build Coastguard Worker    <field name="Depth height" start="170:15" size="15" type="uint" default="1" modifier="minus(1)"/>
1217*61046927SAndroid Build Coastguard Worker    <field name="Depth buffer 1" start="172:7" size="33" type="address" modifier="shr(7)"/>
1218*61046927SAndroid Build Coastguard Worker    <!-- Normally 0, 0x38001 with layered -->
1219*61046927SAndroid Build Coastguard Worker    <field name="Depth unknown 1" start="176:0" size="32" type="hex"/>
1220*61046927SAndroid Build Coastguard Worker    <field name="Depth acceleration buffer 1" start="178:7" size="33" type="address" modifier="shr(7)"/>
1221*61046927SAndroid Build Coastguard Worker    <field name="Depth buffer 2" start="182:7" size="33" type="address" modifier="shr(7)"/>
1222*61046927SAndroid Build Coastguard Worker    <field name="Depth acceleration buffer 2" start="188:7" size="33" type="address" modifier="shr(7)"/>
1223*61046927SAndroid Build Coastguard Worker    <!-- Normally 0, 0x38001 with layered -->
1224*61046927SAndroid Build Coastguard Worker    <field name="Depth unknown 2" start="186:0" size="32" type="hex"/>
1225*61046927SAndroid Build Coastguard Worker    <field name="Stencil buffer 1" start="192:7" size="33" type="address" modifier="shr(7)"/>
1226*61046927SAndroid Build Coastguard Worker    <!-- Normally 0, 0x10001 with layered -->
1227*61046927SAndroid Build Coastguard Worker    <field name="Stencil unknown 1" start="196:0" size="32" type="hex"/>
1228*61046927SAndroid Build Coastguard Worker    <field name="Stencil acceleration buffer 1" start="198:7" size="33" type="address" modifier="shr(7)"/>
1229*61046927SAndroid Build Coastguard Worker    <field name="Stencil buffer 2" start="202:7" size="33" type="address" modifier="shr(7)"/>
1230*61046927SAndroid Build Coastguard Worker    <!-- Normally 0, 0x10001 with layered -->
1231*61046927SAndroid Build Coastguard Worker    <field name="Stencil unknown 2" start="206:0" size="32" type="hex"/>
1232*61046927SAndroid Build Coastguard Worker    <field name="Stencil acceleration buffer 2" start="208:7" size="33" type="address" modifier="shr(7)"/>
1233*61046927SAndroid Build Coastguard Worker    <!-- Proportional to tile width * tile height * sample count -->
1234*61046927SAndroid Build Coastguard Worker    <field name="Unk 212" start="212:0" size="32" default="0x4" type="hex"/>
1235*61046927SAndroid Build Coastguard Worker    <field name="Unk 214" start="214:0" size="16" default="0xc000" type="hex"/>
1236*61046927SAndroid Build Coastguard Worker    <field name="Z16 Unorm attachment 1" start="214:18" size="1" type="bool"/>
1237*61046927SAndroid Build Coastguard Worker    <field name="Width 1" start="216:0" size="32" type="uint"/>
1238*61046927SAndroid Build Coastguard Worker    <field name="Height 1" start="217:0" size="32" type="uint"/>
1239*61046927SAndroid Build Coastguard Worker    <field name="Pointer" start="218:0" size="64" type="address"/>
1240*61046927SAndroid Build Coastguard Worker
1241*61046927SAndroid Build Coastguard Worker    <!-- 0x40 with frag spilling -->
1242*61046927SAndroid Build Coastguard Worker    <field name="Spilling unk 1" start="226:0" size="32" type="hex"/>
1243*61046927SAndroid Build Coastguard Worker    <field name="Spill Buffer Histogram" start="238:0" size="480" type="Spill Buffer Histogram"/>
1244*61046927SAndroid Build Coastguard Worker
1245*61046927SAndroid Build Coastguard Worker    <!-- Encoded like the depth attachment -->
1246*61046927SAndroid Build Coastguard Worker    <field name="Depth clear value" start="276:0" size="32" type="hex"/>
1247*61046927SAndroid Build Coastguard Worker    <field name="Stencil clear value" start="277:0" size="8" type="uint"/>
1248*61046927SAndroid Build Coastguard Worker    <field name="Unk 277" start="277:8" size="8" type="hex" default="3"/>
1249*61046927SAndroid Build Coastguard Worker    <field name="Set when reloading Z or S 1" start="279:8" size="1" type="bool"/>
1250*61046927SAndroid Build Coastguard Worker    <field name="Set when frag shader spills" start="279:24" size="1" type="bool"/>
1251*61046927SAndroid Build Coastguard Worker    <field name="Set when reloading Z or S 2" start="280:24" size="1" type="bool"/>
1252*61046927SAndroid Build Coastguard Worker    <field name="Z16 Unorm attachment 2" start="281:8" size="1" type="bool"/>
1253*61046927SAndroid Build Coastguard Worker    <field name="Unk 282" start="282:0" size="32" type="hex" default="0xffffffff"/>
1254*61046927SAndroid Build Coastguard Worker    <field name="Unk 283" start="283:0" size="32" type="hex" default="0xffffffff"/>
1255*61046927SAndroid Build Coastguard Worker    <field name="Unk 284" start="284:0" size="32" type="hex" default="0xffffffff"/>
1256*61046927SAndroid Build Coastguard Worker    <field name="Visibility result buffer" start="286:0" size="64" type="address"/>
1257*61046927SAndroid Build Coastguard Worker    <field name="Partial reload pipeline bind" start="296:0" size="32" type="hex"/>
1258*61046927SAndroid Build Coastguard Worker    <field name="Partial reload pipeline unk" start="298:0" size="4" default="4" type="hex"/>
1259*61046927SAndroid Build Coastguard Worker    <field name="Partial reload pipeline" start="298:4" size="28" type="address" modifier="shr(4)"/>
1260*61046927SAndroid Build Coastguard Worker    <field name="Partial store pipeline bind" start="304:0" size="32" type="hex"/>
1261*61046927SAndroid Build Coastguard Worker    <field name="Partial store pipeline unk" start="306:0" size="4" default="4" type="hex"/>
1262*61046927SAndroid Build Coastguard Worker    <field name="Partial store pipeline" start="306:4" size="28" type="address" modifier="shr(4)"/>
1263*61046927SAndroid Build Coastguard Worker
1264*61046927SAndroid Build Coastguard Worker    <!-- New in 12.x -->
1265*61046927SAndroid Build Coastguard Worker    <field name="Depth buffer 3" start="340:0" size="64" type="address"/>
1266*61046927SAndroid Build Coastguard Worker    <field name="Depth acceleration buffer 3" start="342:0" size="64" type="address"/>
1267*61046927SAndroid Build Coastguard Worker    <field name="Stencil buffer 3" start="344:0" size="64" type="address"/>
1268*61046927SAndroid Build Coastguard Worker    <field name="Stencil acceleration buffer 3" start="346:0" size="64" type="address"/>
1269*61046927SAndroid Build Coastguard Worker    <!-- maybe only set when doing a depth clear? -->
1270*61046927SAndroid Build Coastguard Worker    <!-- 0x1000000 bit set with memoryless render targets? -->
1271*61046927SAndroid Build Coastguard Worker    <field name="Unk 352" start="352:0" size="32" default="0x1" type="hex"/>
1272*61046927SAndroid Build Coastguard Worker    <field name="Unk 360" start="360:0" size="32" default="0x1c" type="hex"/>
1273*61046927SAndroid Build Coastguard Worker    <field name="Encoder ID" start="362:0" size="32" type="hex"/>
1274*61046927SAndroid Build Coastguard Worker    <!-- top bit maybe only set with a depth clear? -->
1275*61046927SAndroid Build Coastguard Worker    <field name="Unk 365" start="365:0" size="64" default="0x1ffffffff" type="hex"/>
1276*61046927SAndroid Build Coastguard Worker    <field name="Unknown buffer" start="370:0" size="64" type="address"/>
1277*61046927SAndroid Build Coastguard Worker    <field name="Width 2" start="382:0" size="32" type="uint"/>
1278*61046927SAndroid Build Coastguard Worker    <field name="Height 2" start="383:0" size="32" type="uint"/>
1279*61046927SAndroid Build Coastguard Worker    <field name="Sample count" start="384:0" size="32" default="1" type="uint"/>
1280*61046927SAndroid Build Coastguard Worker
1281*61046927SAndroid Build Coastguard Worker    <!-- Divided by 16 and rounded -->
1282*61046927SAndroid Build Coastguard Worker    <field name="Sample 0 X" start="385:0" size="5" default="8" type="uint"/>
1283*61046927SAndroid Build Coastguard Worker    <field name="Sample 0 Y" start="386:0" size="5" default="8" type="uint"/>
1284*61046927SAndroid Build Coastguard Worker    <field name="Sample 1 X" start="387:0" size="5" default="0" type="uint"/>
1285*61046927SAndroid Build Coastguard Worker    <field name="Sample 1 Y" start="388:0" size="5" default="0" type="uint"/>
1286*61046927SAndroid Build Coastguard Worker    <field name="Sample 2 X" start="389:0" size="5" default="0" type="uint"/>
1287*61046927SAndroid Build Coastguard Worker    <field name="Sample 2 Y" start="390:0" size="5" default="0" type="uint"/>
1288*61046927SAndroid Build Coastguard Worker    <field name="Sample 3 X" start="391:0" size="5" default="0" type="uint"/>
1289*61046927SAndroid Build Coastguard Worker    <field name="Sample 3 Y" start="392:0" size="5" default="0" type="uint"/>
1290*61046927SAndroid Build Coastguard Worker
1291*61046927SAndroid Build Coastguard Worker    <!-- if tile size 32x32: max(tib allocation, 8) rounded to POT
1292*61046927SAndroid Build Coastguard Worker         if tile size 32x16: that, halved
1293*61046927SAndroid Build Coastguard Worker         -->
1294*61046927SAndroid Build Coastguard Worker    <field name="Unk 49:0" start="401:0" size="32" default="8" type="uint"/>
1295*61046927SAndroid Build Coastguard Worker    <field name="Tile width" start="402:0" size="32" default="32" type="uint"/>
1296*61046927SAndroid Build Coastguard Worker    <field name="Tile height" start="403:0" size="32" default="32" type="uint"/>
1297*61046927SAndroid Build Coastguard Worker    <!-- Number of framebuffer layers when rendering to a layered framebuffer (1
1298*61046927SAndroid Build Coastguard Worker        otherwise). This affects tiling calculations. It also affects how many
1299*61046927SAndroid Build Coastguard Worker    times the background program and end-of-tile programs are executed. The
1300*61046927SAndroid Build Coastguard Worker    layer index is available in sr2. -->
1301*61046927SAndroid Build Coastguard Worker    <field name="Framebuffer layers" start="404:0" size="32" default="1" type="uint"/>
1302*61046927SAndroid Build Coastguard Worker    <field name="Unk 56:0" start="408:0" size="32" default="0" type="uint"/>
1303*61046927SAndroid Build Coastguard Worker    <field name="Unk 70:0" start="410:0" size="32" default="1" type="uint"/>
1304*61046927SAndroid Build Coastguard Worker  </struct>
1305*61046927SAndroid Build Coastguard Worker
1306*61046927SAndroid Build Coastguard Worker  <struct name="IOGPU Attachment Count" size="16">
1307*61046927SAndroid Build Coastguard Worker    <field name="Count" start="3:0" size="32" type="uint"/>
1308*61046927SAndroid Build Coastguard Worker  </struct>
1309*61046927SAndroid Build Coastguard Worker
1310*61046927SAndroid Build Coastguard Worker</genxml>
1311