blob: 4466e11082b717471b8683feb76654110814097e [file] [log] [blame]
Alyssa Rosenzweig9cb3a9e2020-08-05 18:16:38 -04001<panxml>
2
Alyssa Rosenzweig3e7fd2a2020-08-13 14:44:11 -04003 <enum name="Attribute Type">
4 <value name="1D" value="1"/>
5 <value name="1D POT Divisor" value="2"/>
6 <value name="1D Modulus" value="3"/>
7 <value name="1D NPOT Divisor" value="4"/>
8 <value name="Continuation" value="32"/>
9 </enum>
10
11 <enum name="Attribute Special">
12 <value name="Vertex ID" value="34"/>
13 <value name="Instance ID" value="36"/>
14 <value name="Frag Coord" value="37"/>
15 <value name="Front Facing" value="38"/>
16 <value name="Point Coord" value="97"/>
17 </enum>
18
Alyssa Rosenzweigcdc32762020-08-12 16:46:07 -040019 <enum name="Channel">
20 <value name="R" value="0"/>
21 <value name="G" value="1"/>
22 <value name="B" value="2"/>
23 <value name="A" value="3"/>
24 <value name="0" value="4"/>
25 <value name="1" value="5"/>
26 </enum>
Alyssa Rosenzweig87c59512020-08-19 16:32:26 -040027
28 <enum name="Depth Source">
29 <value name="None" value="0"/>
30 <value name="Fixed function" value="2"/>
31 <value name="Shader" value="3"/>
32 </enum>
Alyssa Rosenzweigcdc32762020-08-12 16:46:07 -040033
Alyssa Rosenzweig4b7056b2020-08-05 18:40:44 -040034 <enum name="Job Type">
35 <value name="Not started" value="0"/>
36 <value name="Null" value="1"/>
37 <value name="Write value" value="2"/>
38 <value name="Cache flush" value="3"/>
39 <value name="Compute" value="4"/>
40 <value name="Vertex" value="5"/>
41 <value name="Geometry" value="6"/>
42 <value name="Tiler" value="7"/>
43 <value name="Fused" value="8"/>
44 <value name="Fragment" value="9"/>
45 </enum>
46
Alyssa Rosenzweig32dbc802020-08-05 18:44:36 -040047 <enum name="Draw Mode">
48 <value name="None" value="0"/>
49 <value name="Points" value="1"/>
50 <value name="Lines" value="2"/>
51 <value name="Line strip" value="4"/>
52 <value name="Line loop" value="6"/>
53 <value name="Triangles" value="8"/>
54 <value name="Triangle strip" value="10"/>
55 <value name="Triangle fan" value="12"/>
56 <value name="Polygon" value="13"/>
57 <value name="Quads" value="14"/>
58 <value name="Quad strip" value="15"/>
59 </enum>
60
Alyssa Rosenzweig78445ce2020-08-11 21:19:52 -040061 <enum name="Exception Access">
62 <value name="None" value="0"/>
63 <value name="Execute" value="2"/>
64 <value name="Read" value="1"/>
65 <value name="Write" value="3"/>
66 </enum>
67
Alyssa Rosenzweigd182a602020-08-05 18:47:52 -040068 <enum name="Func">
69 <value name="Never" value="0"/>
70 <value name="Less" value="1"/>
71 <value name="Equal" value="2"/>
72 <value name="Lequal" value="3"/>
73 <value name="Greater" value="4"/>
74 <value name="Not Equal" value="5"/>
75 <value name="Gequal" value="6"/>
76 <value name="Always" value="7"/>
77 </enum>
78
Alyssa Rosenzweig0c621dc2020-08-11 21:30:46 -040079 <enum name="Format">
80 <value name="ETC2 RGB8" value="1"/>
81 <value name="ETC2 R11 UNORM" value="2"/>
82 <value name="ETC2 RGBA8" value="3"/>
83 <value name="ETC2 RG11 UNORM" value="4"/>
Alyssa Rosenzweig0c621dc2020-08-11 21:30:46 -040084 <value name="BC1 UNORM" value="7"/>
85 <value name="BC2 UNORM" value="8"/>
86 <value name="BC3 UNORM" value="9"/>
87 <value name="BC4 UNORM" value="10"/>
88 <value name="BC4 SNORM" value="11"/>
89 <value name="BC5 UNORM" value="12"/>
90 <value name="BC5 SNORM" value="13"/>
91 <value name="BC6H UF16" value="14"/>
92 <value name="BC6H SF16" value="15"/>
93 <value name="BC7 UNORM" value="16"/>
94 <value name="ETC2 R11 SNORM" value="17"/>
95 <value name="ETC2 RG11 SNORM" value="18"/>
96 <value name="ETC2 RGB8A1" value="19"/>
97 <value name="ASTC 3D LDR" value="20"/>
98 <value name="ASTC 3D HDR" value="21"/>
99 <value name="ASTC 2D LDR" value="22"/>
100 <value name="ASTC 2D HDR" value="23"/>
101 <value name="RGB565" value="64"/>
102 <value name="RGB5 X1 UNORM" value="65"/>
103 <value name="RGB5 A1 UNORM" value="66"/>
104 <value name="RGB10 A2 UNORM" value="67"/>
105 <value name="RGB10 A2 SNORM" value="69"/>
106 <value name="RGB10 A2UI" value="71"/>
107 <value name="RGB10 A2I" value="73"/>
108 <value name="RGB332 UNORM" value="75"/>
109 <value name="RGB233 UNORM" value="76"/>
110 <value name="Z24X8 UNORM" value="77"/>
111 <value name="R32 FIXED" value="81"/>
112 <value name="RG32 FIXED" value="82"/>
113 <value name="RGB32 FIXED" value="83"/>
114 <value name="RGBA32 FIXED" value="84"/>
115 <value name="R11F G11F B10F" value="89"/>
116 <value name="R9F G9F B9F E5F" value="91"/>
117 <value name="VARYING POS" value="94"/>
118 <value name="VARYING DISCARD" value="95"/>
119 <value name="R8 SNORM" value="99"/>
120 <value name="R16 SNORM" value="100"/>
121 <value name="R32 SNORM" value="101"/>
122 <value name="RG8 SNORM" value="107"/>
123 <value name="RG16 SNORM" value="108"/>
124 <value name="RG32 SNORM" value="109"/>
125 <value name="RGB8 SNORM" value="115"/>
126 <value name="RGB16 SNORM" value="116"/>
127 <value name="RGB32 SNORM" value="117"/>
128 <value name="RGBA8 SNORM" value="123"/>
129 <value name="RGBA16 SNORM" value="124"/>
130 <value name="RGBA32 SNORM" value="125"/>
131 <value name="R8UI" value="131"/>
132 <value name="R16UI" value="132"/>
133 <value name="R32UI" value="133"/>
134 <value name="RG8UI" value="139"/>
135 <value name="RG16UI" value="140"/>
136 <value name="RG32UI" value="141"/>
137 <value name="RGB8UI" value="147"/>
138 <value name="RGB16UI" value="148"/>
139 <value name="RGB32UI" value="149"/>
140 <value name="RGBA8UI" value="155"/>
141 <value name="RGBA16UI" value="156"/>
142 <value name="RGBA32UI" value="157"/>
143 <value name="R8 UNORM" value="163"/>
144 <value name="R16 UNORM" value="164"/>
145 <value name="R32 UNORM" value="165"/>
146 <value name="R32F" value="167"/>
147 <value name="RG8 UNORM" value="171"/>
148 <value name="RG16 UNORM" value="172"/>
149 <value name="RG32 UNORM" value="173"/>
150 <value name="RG32F" value="175"/>
151 <value name="RGB8 UNORM" value="179"/>
152 <value name="RGB16 UNORM" value="180"/>
153 <value name="RGB32 UNORM" value="181"/>
154 <value name="RGB32F" value="183"/>
155 <value name="RGBA4 UNORM" value="186"/>
156 <value name="RGBA8 UNORM" value="187"/>
157 <value name="RGBA16 UNORM" value="188"/>
158 <value name="RGBA32 UNORM" value="189"/>
159 <value name="RGBA32F" value="191"/>
160 <value name="R8I" value="195"/>
161 <value name="R16I" value="196"/>
162 <value name="R32I" value="197"/>
163 <value name="R16F" value="199"/>
164 <value name="RG8I" value="203"/>
165 <value name="RG16I" value="204"/>
166 <value name="RG32I" value="205"/>
167 <value name="RG16F" value="207"/>
168 <value name="RGB8I" value="211"/>
169 <value name="RGB16I" value="212"/>
170 <value name="RGB32I" value="213"/>
171 <value name="RGB16F" value="215"/>
172 <value name="RGBA8I" value="219"/>
173 <value name="RGBA16I" value="220"/>
174 <value name="RGBA32I" value="221"/>
175 <value name="RGBA16F" value="223"/>
176 <value name="RGBA4" value="232"/>
177 <value name="RGBA8 2" value="237"/>
178 <value name="RGB10 A2 2" value="238"/>
179 </enum>
180
Alyssa Rosenzweigc9bdba22020-08-11 21:00:47 -0400181 <enum name="Block Format">
182 <!--- 16x16 block u-interleaved -->
Boris Brezillon76096c72020-09-03 17:26:49 +0200183 <value name="Tiled U-Interleaved" value="0"/>
Boris Brezillonfb957292020-09-03 17:27:51 +0200184 <value name="Tiled Linear" value="1"/>
Alyssa Rosenzweigc9bdba22020-08-11 21:00:47 -0400185 <value name="Linear" value="2"/>
186 <value name="AFBC" value="3"/>
187 </enum>
188
Alyssa Rosenzweigf74186b2020-08-11 18:23:12 -0400189 <enum name="Mipmap Mode">
190 <value name="Nearest" value="0"/>
191 <value name="None" value="1"/>
192 <value name="Trilinear" value="3"/>
193 </enum>
194
Alyssa Rosenzweig99d17fb2020-08-11 21:04:01 -0400195 <enum name="MSAA">
196 <value name="Single" value="0"/>
197 <!-- N samples, 1 surface, resolved -->
198 <value name="Average" value="1"/>
199 <!-- N samples, 1 surface, unresolved -->
200 <value name="Multiple" value="2"/>
201 <!-- N samples, N surfaces -->
202 <value name="Layered" value="3"/>
203 </enum>
204
Alyssa Rosenzweigb60d5672020-08-25 16:59:14 -0400205 <enum name="Index Type">
206 <value name="None" value="0"/>
207 <value name="UINT8" value="1"/>
208 <value name="UINT16" value="2"/>
209 <value name="UINT32" value="3"/>
210 </enum>
211
Alyssa Rosenzweigd6a5df02020-08-24 13:13:33 -0400212 <enum name="Occlusion Mode">
213 <value name="Disabled" value="0"/>
214 <value name="Predicate" value="1"/>
215 <value name="Counter" value="3"/>
216 </enum>
217
Alyssa Rosenzweige9ca3202020-08-05 18:51:27 -0400218 <enum name="Stencil Op">
219 <value name="Keep" value="0"/>
220 <value name="Replace" value="1"/>
221 <value name="Zero" value="2"/>
222 <value name="Invert" value="3"/>
223 <value name="Incr Wrap" value="4"/>
224 <value name="Decr Wrap" value="5"/>
225 <value name="Incr Sat" value="6"/>
226 <value name="Decr Sat" value="7"/>
227 </enum>
228
Alyssa Rosenzweigf008a632020-08-11 17:27:36 -0400229 <enum name="Texture Dimension">
230 <value name="Cube" value="0"/>
231 <value name="1D" value="1"/>
232 <value name="2D" value="2"/>
233 <value name="3D" value="3"/>
234 </enum>
235
236 <enum name="Texture Layout">
237 <!--- 16x16 block u-interleaved -->
238 <value name="Tiled" value="1"/>
239 <value name="Linear" value="2"/>
240 <value name="AFBC" value="12"/>
241 </enum>
242
Alyssa Rosenzweigef206912020-08-05 18:53:41 -0400243 <enum name="Wrap Mode">
244 <value name="Repeat" value="8"/>
245 <value name="Clamp to Edge" value="9"/>
246 <value name="Clamp" value="10"/>
247 <value name="Clamp to Border" value="11"/>
248 <value name="Mirrored Repeat" value="12"/>
249 <value name="Mirrored Clamp to Edge" value="13"/>
250 <value name="Mirrored Clamp" value="14"/>
251 <value name="Mirrored Clamp to Border" value="15"/>
252 </enum>
253
Alyssa Rosenzweig2c8a7222020-08-13 13:27:16 -0400254 <struct name="Attribute">
255 <field name="Buffer index" size="9" start="0" type="uint"/>
256 <field name="Unknown" size="1" start="9" type="bool" default="true"/>
257 <field name="Format" size="22" start="10" type="uint"/>
258 <field name="Offset" size="32" start="32" type="int"/>
259 </struct>
260
Alyssa Rosenzweig3e7fd2a2020-08-13 14:44:11 -0400261 <struct name="Attribute Buffer">
262 <field name="Special" size="8" start="0" type="Attribute Special"/>
263 <field name="Type" size="6" start="0" type="Attribute Type" default="1D"/>
264 <field name="Pointer" size="50" start="6" type="address" modifier="shr(6)"/>
265 <field name="Stride" size="32" start="64" type="uint"/>
266 <field name="Size" size="32" start="96" type="uint"/>
267
Alyssa Rosenzweig15133922020-08-25 12:48:12 -0400268 <field name="Divisor" size="8" start="56" type="padded" default="1"/>
Alyssa Rosenzweig3e7fd2a2020-08-13 14:44:11 -0400269 <field name="Divisor R" size="5" start="56" type="uint"/>
270 <field name="Divisor P" size="3" start="61" type="uint"/>
271 <field name="Divisor E" size="1" start="61" type="uint"/>
272 </struct>
273
274 <struct name="Attribute Buffer Continuation NPOT">
275 <field name="Type" size="6" start="0:0" type="Attribute Type" default="Continuation"/>
276 <field name="Divisor Numerator" size="32" start="1:0" type="uint"/>
277 <field name="Divisor" size="32" start="3:0" type="uint"/>
278 </struct>
279
Alyssa Rosenzweigbf6d5482020-08-18 18:15:45 -0400280 <struct name="Blend Equation" size="1">
281 <field name="RGB Mode" size="12" start="0" type="uint"/>
282 <field name="Alpha Mode" size="12" start="12" type="uint"/>
283 <field name="Color mask" size="4" start="28" type="uint" default="15"/>
284 </struct>
285
Alyssa Rosenzweig94c9f872020-08-18 17:06:01 -0400286 <struct name="Blend Flags" size="1">
287 <field name="Load destination" size="1" start="0" type="bool" default="false"/>
288 <field name="Midgard blend shader" size="1" start="1" type="bool" default="false"/>
289 <field name="Enable" size="1" start="9" type="bool" default="true"/>
290 <field name="sRGB" size="1" start="10" type="bool" default="false"/>
291 <field name="Dither disable" size="1" start="11" type="bool" default="false"/>
292 </struct>
293
Alyssa Rosenzweig75a274d2020-08-24 12:06:04 -0400294 <struct name="Midgard Blend" size="4" with_opaque="true">
295 <field name="Flags" size="32" start="0:0" type="Blend Flags"/>
296 <field name="Equation" size="32" start="2:0" type="uint"/> <!-- XXX -->
297 <field name="Constant" size="32" start="3:0" type="float"/>
298 <field name="Shader" size="64" start="2:0" type="address"/>
299 </struct>
300
Alyssa Rosenzweig0225ed42020-08-26 12:45:38 -0400301 <struct name="Invocation">
302 <!-- Dynamic bitfield containing WorkGroupSize.xyz, NumWorkGroups.xyz
303 The number of bits allocated for each number is based on the *_shift
304 fields. For example, workgroups_y_shift gives the bit that
305 gl_NumWorkGroups.y starts at, and workgroups_z_shift gives the bit
306 that gl_NumWorkGroups.z starts at (and therefore one after the bit
307 that gl_NumWorkGroups.y ends at). The actual value for each
308 is one more than the stored value, since if any of the values
309 are zero, then there would be no invocations (and hence no job). -->
310 <field name="Invocations" size="32" start="0:0" type="uint"/>
311 <field name="Size Y shift" size="5" start="1:0" type="uint"/>
312 <field name="Size Z shift" size="5" start="1:5" type="uint"/>
313 <field name="Workgroups X shift" size="6" start="1:10" type="uint"/>
314 <field name="Workgroups Y shift" size="6" start="1:16" type="uint"/>
315 <field name="Workgroups Z shift" size="6" start="1:22" type="uint"/>
316 <field name="Unknown shift" size="4" start="1:28" type="uint"/>
317 </struct>
318
Alyssa Rosenzweigb60d5672020-08-25 16:59:14 -0400319 <struct name="Primitive">
320 <field name="Draw mode" size="4" start="0:0" type="Draw Mode" default="None"/>
321 <field name="Index type" size="2" start="0:8" type="Index Type" default="None"/>
322 <field name="Point size array" size="1" start="0:12" type="bool"/>
323 <!--- TODO -->
324 <field name="First provoking vertex" size="1" start="0:15" type="bool" default="true"/>
325 <field name="Unknown 1" size="1" start="0:16" type="bool" default="true"/>
326 <field name="Unknown 2" size="1" start="0:17" type="bool" default="true"/>
327 <!--- TODO -->
328 <field name="Primitive restart" size="1" start="0:20" type="bool"/>
329 <field name="Unknown 3" size="6" start="0:26" type="uint"/>
330 <field name="Base vertex offset" size="32" start="1:0" type="uint"/>
331 <!--- TODO: word 2 -->
332 <field name="Index count" size="32" start="3:0" type="uint" modifier="minus(1)"/>
333 <field name="Indices" size="64" start="4:0" type="address"/>
334 </struct>
335
Alyssa Rosenzweigd6a5df02020-08-24 13:13:33 -0400336 <struct name="Draw" size="30">
337 <field name="Unknown 1" size="3" start="0:0" type="uint"/>
338 <field name="Occlusion query" size="2" start="0:3" type="Occlusion Mode" default="Disabled"/>
339 <field name="Front face CCW" size="1" start="0:5" type="bool"/>
340 <field name="Cull front face" size="1" start="0:6" type="bool"/>
341 <field name="Cull back face" size="1" start="0:7" type="bool"/>
342 <!-- TODO 0:7-0:15 -->
343 <field name="Instances" size="8" start="0:16" type="padded" default="1"/>
344 <!-- TODO: 0:16-0:24 -->
345 <field name="Offset start" size="32" start="1:0" type="uint"/>
346 <!-- TODO: 2-3 -->
347 <field name="Position" size="64" start="4:0" type="address"/>
348 <field name="Uniform buffers" size="64" start="6:0" type="address"/>
349 <field name="Textures" size="64" start="8:0" type="address"/>
350 <field name="Samplers" size="64" start="10:0" type="address"/>
351 <field name="Push uniforms" size="64" start="12:0" type="address"/>
352 <field name="State" size="64" start="14:0" type="address"/>
353 <field name="Attribute buffers" size="64" start="16:0" type="address"/>
354 <field name="Attributes" size="64" start="18:0" type="address"/>
355 <field name="Varying buffers" size="64" start="20:0" type="address"/>
356 <field name="Varyings" size="64" start="22:0" type="address"/>
357 <field name="Viewport" size="64" start="24:0" type="address"/>
358 <field name="Occlusion" size="64" start="26:0" type="address"/>
359 <field name="Shared" size="64" start="28:0" type="address"/>
360 </struct>
361
Alyssa Rosenzweigf74186b2020-08-11 18:23:12 -0400362 <struct name="Midgard Sampler">
363 <field name="Magnify Nearest" size="1" start="0" type="bool" default="true"/>
364 <field name="Minify Nearest" size="1" start="1" type="bool" default="true"/>
365 <field name="Mipmap Mode" size="2" start="3" type="Mipmap Mode" default="Nearest"/>
366 <field name="Normalized Coordinates" size="1" start="5" type="bool" default="true"/>
367 <field name="LOD Bias" size="16" start="0:16" type="int" default="0"/>
368 <field name="Minimum LOD" size="16" start="1:0" type="uint" default="0"/>
369 <field name="Maximum LOD" size="16" start="1:16" type="uint" default="1"/>
370 <field name="Wrap Mode S" size="4" start="2:0" type="Wrap Mode" default="Clamp to Edge"/>
371 <field name="Wrap Mode T" size="4" start="2:4" type="Wrap Mode" default="Clamp to Edge"/>
372 <field name="Wrap Mode R" size="4" start="2:8" type="Wrap Mode" default="Clamp to Edge"/>
373 <field name="Compare Function" size="3" start="2:12" type="Func" default="Never"/>
374 <field name="Seamless Cube Map" size="1" start="2:15" type="bool" default="true"/>
375 <field name="Border Color R" size="32" start="4:0" type="float" default="0.0"/>
376 <field name="Border Color G" size="32" start="5:0" type="float" default="0.0"/>
377 <field name="Border Color B" size="32" start="6:0" type="float" default="0.0"/>
378 <field name="Border Color A" size="32" start="7:0" type="float" default="0.0"/>
379 </struct>
380
Alyssa Rosenzweigf008a632020-08-11 17:27:36 -0400381 <struct name="Midgard Texture" size="8">
382 <field name="Width" size="16" start="0:0" type="uint" modifier="minus(1)"/>
383 <field name="Height" size="16" start="0:16" type="uint" modifier="minus(1)"/>
384 <field name="Depth" size="16" start="1:0" type="uint" modifier="minus(1)"/>
385 <field name="Array size" size="16" start="1:16" type="uint" modifier="minus(1)"/>
386 <field name="Format" size="22" start="2:0" type="uint"/>
387 <field name="Dimension" size="2" start="2:22" type="Texture Dimension"/>
388 <field name="Texel ordering" size="4" start="2:24" type="Texture Layout"/>
389 <field name="Unknown" size="1" start="2:28" type="bool" default="true"/>
390 <field name="Manual stride" size="1" start="2:29" type="bool" default="false"/>
391 <field name="Levels" size="8" start="3:24" type="uint"/>
392 <field name="Swizzle" size="12" start="4:0" type="uint"/>
393 </struct>
394
Alyssa Rosenzweigb10c3c82020-08-11 18:25:03 -0400395 <struct name="Bifrost Sampler" size="8">
396 <field name="Type" size="4" start="0:0" type="uint" default="1"/>
397 <field name="Wrap Mode R" size="4" start="0:8" type="Wrap Mode" default="Clamp to Edge"/>
398 <field name="Wrap Mode T" size="4" start="0:12" type="Wrap Mode" default="Clamp to Edge"/>
399 <field name="Wrap Mode S" size="4" start="0:16" type="Wrap Mode" default="Clamp to Edge"/>
400 <field name="Seamless Cube Map" size="1" start="0:23" type="bool" default="true"/>
401 <field name="Normalized Coordinates" size="1" start="0:25" type="bool" default="true"/>
402 <field name="Minify Linear" size="1" start="0:27" type="bool" default="false"/>
403 <field name="Magnify Linear" size="1" start="0:28" type="bool" default="false"/>
404 <field name="Mipmap Mode" size="2" start="0:30" type="Mipmap Mode" default="Nearest"/>
405 <field name="Minimum LOD" size="13" start="1:0" type="uint" default="0"/>
406 <field name="Compare Function" size="3" start="1:13" type="Func" default="Never"/>
407 <field name="Maximum LOD" size="13" start="1:16" type="uint" default="0"/>
408 <field name="LOD bias" size="16" start="2:0" type="uint" default="0"/>
409 </struct>
410
Alyssa Rosenzweigad0b32c2020-08-06 18:12:28 -0400411 <struct name="Bifrost Texture" size="8">
412 <field name="Type" size="4" start="0:0" type="uint" default="2"/>
413 <field name="Dimension" size="2" start="0:4" type="Texture Dimension"/>
414 <field name="Format" size="22" start="0:10" type="uint"/>
415 <field name="Width" size="16" start="1:0" type="uint" modifier="minus(1)"/>
416 <field name="Height" size="16" start="1:16" type="uint" modifier="minus(1)"/>
417 <field name="Swizzle" size="12" start="2:0" type="uint"/>
418 <field name="Texel ordering" size="4" start="2:12" type="Texture Layout"/>
419 <field name="Levels" size="5" start="2:16" type="uint"/>
420 <field name="Minimum LOD" size="13" start="3:0" type="uint" default="0"/>
421 <field name="Maximum LOD" size="13" start="3:16" type="uint" default="0"/>
422 <field name="Surfaces" size="64" start="4:0" type="address"/>
423 </struct>
424
Alyssa Rosenzweig87c59512020-08-19 16:32:26 -0400425 <struct name="Midgard Properties" size="1">
426 <field name="Uniform buffer count" size="8" start="0" type="uint"/>
427 <field name="Depth source" size="2" start="8" type="Depth Source" default="None"/>
428 <field name="Early-z enable" size="1" start="10" type="bool" default="false"/>
429 <field name="Helper invocation enable" size="1" start="11" type="bool" default="false"/>
430 <field name="Reads depth/stencil" size="1" start="12" type="bool" default="false"/>
431 <field name="Writes globals" size="1" start="13" type="bool" default="false"/>
432 <field name="Reads tilebuffer" size="1" start="14" type="bool" default="false"/>
433 <field name="Work register count" size="5" start="16" type="uint"/>
434 <field name="Uniform count" size="5" start="21" type="uint"/>
435 <field name="Stencil from shader" size="1" start="28" type="bool"/>
436 <field name="Suppress Inf/NaN" size="1" start="29" type="bool"/>
437 </struct>
438
Alyssa Rosenzweigacf77cb2020-08-20 16:41:41 -0400439 <struct name="Bifrost Properties" size="1">
440 <field name="Uniform buffer count" size="8" start="0" type="uint"/>
441 <!--- If set, disables registers [R16, R47] for full thread count -->
442 <field name="Full thread" size="1" start="13" type="bool" default="false"/>
443 <field name="Early-z enable" size="1" start="19" type="bool" default="false"/>
444 <field name="First ATEST" size="1" start="30" type="bool" default="false"/>
445 <!-- XXX: This is awful -->
446 <field name="Unknown" size="32" start="0" type="uint"/>
447 </struct>
448
Alyssa Rosenzweig7a95ed22020-08-20 20:42:32 -0400449 <struct name="Preload" size="1">
450 <field name="Untyped" size="15" start="0" type="uint"/>
451 <field name="Uniform count" size="7" start="15" type="uint"/>
452 </struct>
453
454 <struct name="Preload Compute" size="1">
455 <field name="Local Invocation XY" size="1" start="7" type="bool"/>
456 <field name="Local Invocation Z" size="1" start="8" type="bool"/>
457 <field name="Work group X" size="1" start="9" type="bool"/>
458 <field name="Work group Y" size="1" start="10" type="bool"/>
459 <field name="Work group Z" size="1" start="11" type="bool"/>
460 <field name="Global Invocation X" size="1" start="12" type="bool"/>
461 <field name="Global Invocation Y" size="1" start="13" type="bool"/>
462 <field name="Global Invocation Z" size="1" start="14" type="bool"/>
463 <field name="Uniform count" size="7" start="15" type="uint"/>
464 </struct>
465
466 <struct name="Preload Vertex" size="1">
467 <field name="Vertex ID" size="1" start="13" type="bool"/>
468 <field name="Instance ID" size="1" start="14" type="bool"/>
469 <field name="Uniform count" size="7" start="15" type="uint"/>
470 </struct>
471
472 <struct name="Preload Fragment" size="1">
473 <field name="Unknown" size="1" start="7" type="bool" default="true"/>
474 <field name="Primitive ID" size="1" start="9" type="bool"/>
475 <field name="Front facing" size="1" start="10" type="bool"/>
476 <field name="Fragment position" size="1" start="11" type="bool"/>
477 <field name="Sample mask/ID" size="1" start="12" type="bool"/>
478 <field name="Uniform count" size="7" start="15" type="uint"/>
479 </struct>
480
Alyssa Rosenzweig661b4692020-08-21 10:34:06 -0400481 <struct name="Shader" size="4">
482 <field name="Shader" size="64" start="0:0" type="address"/>
483 <field name="Sampler count" size="16" start="2:0" type="uint"/>
484 <field name="Texture count" size="16" start="2:16" type="uint"/>
485 <field name="Attribute count" size="16" start="3:0" type="uint"/>
486 <field name="Varying count" size="16" start="3:16" type="uint"/>
487 </struct>
488
Alyssa Rosenzweig754d5432020-08-21 15:54:10 -0400489 <struct name="Multisample, Misc" size="1">
490 <field name="Sample mask" size="16" start="0" type="uint"/>
491 <field name="Multisample enable" size="1" start="16" type="bool"/>
492 <!-- TODO 17 -->
493 <field name="Evaluate per-sample" size="1" start="18" type="bool"/>
494 <field name="Unknown 1" size="1" start="19" type="bool"/>
495 <field name="Unknown 2" size="1" start="20" type="bool"/>
496 <field name="SFBD Load destination" size="1" start="21" type="bool"/>
497 <field name="SFBD Blend shader" size="1" start="22" type="bool"/>
498 <!-- TODO 23 -->
499 <field name="Depth function" size="3" start="24" type="Func"/>
500 <field name="Depth write mask" size="1" start="27" type="bool"/>
501 <field name="Near discard" size="1" start="28" type="bool"/>
502 <field name="Far discard" size="1" start="29" type="bool"/>
503 <!-- TODO: 30-31 -->
504 </struct>
505
506 <struct name="Stencil Mask, Misc" size="1">
507 <field name="Stencil mask front" size="8" start="0" type="uint"/>
508 <field name="Stencil mask back" size="8" start="8" type="uint"/>
509 <field name="Stencil enable" size="1" start="16" type="bool"/>
510 <field name="Alpha-to-coverage" size="1" start="17" type="bool"/>
511 <!-- TODO 18-19 -->
512 <field name="SFBD Write enable" size="1" start="20" type="bool"/>
513 <field name="Unknown 1" size="3" start="21" type="uint"/>
514 <field name="SFBD sRGB" size="1" start="24" type="bool"/>
515 <field name="SFBD Dither disable" size="1" start="25" type="bool"/>
516 <field name="Unknown 2" size="1" start="26" type="bool"/>
517 <field name="Depth Range 1" size="1" start="28" type="bool"/>
518 <field name="Depth Range 2" size="1" start="29" type="bool"/>
519 <field name="Single-sampled lines" size="1" start="30" type="bool"/>
520 <!-- TODO: 31 -->
521 </struct>
522
Alyssa Rosenzweig931e7b42020-08-05 22:02:32 -0400523 <struct name="Stencil">
524 <field name="Reference Value" size="8" start="0" type="uint"/>
Alyssa Rosenzweig322ddbd2020-09-09 16:29:04 -0400525 <field name="Mask" size="8" start="8" type="uint"/>
Alyssa Rosenzweig931e7b42020-08-05 22:02:32 -0400526 <field name="Compare Function" size="3" start="16" type="Func"/>
527 <field name="Stencil Fail" size="3" start="19" type="Stencil Op"/>
528 <field name="Depth Fail" size="3" start="22" type="Stencil Op"/>
529 <field name="Depth Pass" size="3" start="25" type="Stencil Op"/>
530 </struct>
531
Alyssa Rosenzweig754d5432020-08-21 15:54:10 -0400532 <struct name="State" with_opaque="true">
533 <field name="Shader" size="128" start="0:0" type="Shader"/>
534 <field name="Properties" size="32" start="4:0" type="uint"/>
535 <field name="Depth units" size="32" start="5:0" type="float"/>
536 <field name="Depth factor" size="32" start="6:0" type="float"/>
537 <!-- TODO: word 7 -->
538 <field name="Multisample, Misc" size="32" start="8:0" type="Multisample, Misc"/>
539 <field name="Stencil Mask, Misc" size="32" start="9:0" type="Stencil Mask, Misc"/>
540 <field name="Stencil front" size="32" start="10:0" type="Stencil"/>
541 <field name="Stencil back" size="32" start="11:0" type="Stencil"/>
542 <field name="Preload" size="32" start="12:0" type="Preload"/>
543 <!--- TODO: word 13 -->
544 <field name="SFBD Blend" size="64" start="14:0" type="uint"/>
545 </struct>
546
Alyssa Rosenzweigfa949672020-08-05 21:39:25 -0400547 <struct name="Uniform Buffer">
548 <field name="Entries" size="12" start="0" type="uint" modifier="minus(1)"/>
549 <field name="Pointer" size="52" start="12" type="address" modifier="shr(4)" element="16" count="Entries"/>
550 </struct>
551
Alyssa Rosenzweig7f487e02020-08-05 19:33:20 -0400552 <struct name="Viewport">
553 <field name="Minimum X" size="32" start="0:0" default="-INFINITY" type="float"/>
554 <field name="Minimum Y" size="32" start="1:0" default="-INFINITY" type="float"/>
555 <field name="Maximum X" size="32" start="2:0" default="+INFINITY" type="float"/>
556 <field name="Maximum Y" size="32" start="3:0" default="+INFINITY" type="float"/>
557 <field name="Minimum Z" size="32" start="4:0" default="0.0" type="float"/>
558 <field name="Maximum Z" size="32" start="5:0" default="1.0" type="float"/>
559 <field name="Scissor Minimum X" size="16" start="6:0" default="0" type="uint"/>
560 <field name="Scissor Minimum Y" size="16" start="6:16" default="0" type="uint"/>
561 <field name="Scissor Maximum X" size="16" start="7:0" type="uint"/>
562 <field name="Scissor Maximum Y" size="16" start="7:16" type="uint"/>
563 </struct>
564
Boris Brezillon3a06fc32020-09-03 09:18:09 +0200565 <struct name="Local Storage" size="8">
566 <field name="TLS Size" size="5" start="0:0" type="uint"/>
567 <field name="TLS Initial Stack Pointer Offset" size="27" start="0:5" type="uint"/>
568 <field name="WLS Instances" size="5" start="1:0" type="uint" modifier="log2" prefix="MALI_LOCAL_STORAGE">
569 <value name="No Workgroup Mem" value="0x80000000"/>
570 </field>
571 <field name="WLS Size Base" size="2" start="1:5" type="uint"/>
572 <field name="WLS Size Scale" size="5" start="1:8" type="uint"/>
573 <field name="TLS Base Pointer" size="64" start="2:0" type="address"/>
574 <field name="WLS Base Pointer" size="64" start="4:0" type="address"/>
575 </struct>
Boris Brezillone8556982020-09-05 18:16:37 +0200576
Boris Brezillon95eb7d92020-09-06 11:01:09 +0200577 <struct name="Midgard Tiler" size="10">
Boris Brezillone8556982020-09-05 18:16:37 +0200578 <field name="Polygon List Size" size="32" start="0:0" type="uint" prefix="MALI_MIDGARD_TILER">
579 <value name="Minimum Header Size" value="512"/>
580 </field>
581 <field name="Hierarchy Mask" size="16" start="1:0" type="uint" prefix="MALI_MIDGARD_TILER">
582 <value name="Disabled" value="4096"/>
583 <value name="User" value="4095"/>
584 <value name="Hierarchy Mask" value="511"/>
585 </field>
586 <field name="Polygon List" size="64" start="2:0" type="address"/>
587 <field name="Polygon List Body" size="64" start="4:0" type="address"/>
588 <field name="Heap Start" size="64" start="6:0" type="address"/>
589 <field name="Heap End" size="64" start="8:0" type="address"/>
590 </struct>
591
592 <struct name="Midgard Tiler Weights">
593 <field name="Weight0" size="32" start="0:0" type="uint"/>
594 <field name="Weight1" size="32" start="1:0" type="uint"/>
595 <field name="Weight2" size="32" start="2:0" type="uint"/>
596 <field name="Weight3" size="32" start="3:0" type="uint"/>
597 <field name="Weight4" size="32" start="4:0" type="uint"/>
598 <field name="Weight5" size="32" start="5:0" type="uint"/>
599 <field name="Weight6" size="32" start="6:0" type="uint"/>
600 <field name="Weight7" size="32" start="7:0" type="uint"/>
601 </struct>
Boris Brezillon95eb7d92020-09-06 11:01:09 +0200602
603 <enum name="Color Buffer Internal Format">
604 <value name="Raw Value" value="0"/>
605 <value name="R8G8B8A8" value="1"/>
606 <value name="R10G10B10A2" value="2"/>
607 <value name="R8G8B8A2" value="3"/>
608 <value name="R4G4B4A4" value="4"/>
609 <value name="R5G6B5A0" value="5"/>
610 <value name="R5G5B5A1" value="6"/>
611 <value name="RAW8" value="32"/>
612 <value name="RAW16" value="33"/>
613 <value name="RAW32" value="34"/>
614 <value name="RAW64" value="35"/>
615 <value name="RAW128" value="36"/>
616 </enum>
617
618 <enum name="SFBD Color Format">
619 <value name="4_32B_CHANNELS" value="0"/>
620 <value name="3_32B_CHANNELS" value="1"/>
621 <value name="2_32B_CHANNELS" value="2"/>
622 <value name="1_32B_CHANNEL" value="3"/>
623 <value name="4_16B_CHANNELS" value="4"/>
624 <value name="3_16B_CHANNELS" value="5"/>
625 <value name="2_16B_CHANNELS" value="6"/>
626 <value name="1_16B_CHANNEL" value="7"/>
627 <value name="R8" value="16"/>
628 <value name="R8G8" value="17"/>
629 <value name="R8G8B8" value="18"/>
630 <value name="R8G8B8A8" value="19"/>
631 <value name="R4G4B4A4" value="20"/>
632 <value name="R5G6B5" value="21"/>
633 <value name="R8G8B8_FROM_R8G8B8A2" value="22"/>
634 <value name="R10G10B10A2" value="24"/>
635 <value name="A2B10G10R10" value="25"/>
636 <value name="R5G5B5A1" value="28"/>
637 <value name="A1B5G5R5" value="29"/>
638 </enum>
639
640 <enum name="Downsampling Accumulation Mode">
641 <value name="Unsigned normalized integer" value="0"/>
642 <value name="Signed normalized integer" value="1"/>
643 </enum>
644
645 <enum name="Sample Layout">
646 <value name="Ordered 4x Grid" value="0"/>
647 <value name="Rotated 4x Grid" value="1"/>
648 <value name="D3D 8x Grid" value="2"/>
649 <value name="D3D 16x Grid" value="3"/>
650 </enum>
651
652 <enum name="ZS Format">
653 <value name="D16" value="1"/>
654 <value name="D24" value="2"/>
655 <value name="D24X8" value="4"/>
656 <value name="D24S8" value="5"/>
657 <value name="X8D24" value="6"/>
658 <value name="S8D24" value="7"/>
659 <value name="D32_X8X24" value="13"/>
660 <value name="D32" value="14"/>
661 <value name="D32_S8X24" value="15"/>
662 </enum>
663
664 <enum name="S Format">
665 <value name="S8" value="1"/>
666 <value name="S8X8" value="2"/>
667 <value name="S8X24" value="3"/>
668 <value name="X24S8" value="4"/>
669 <value name="X8S8" value="5"/>
670 <value name="X32_S8X24" value="6"/>
671 </enum>
672
673 <enum name="Tie-Break Rule">
674 <value name="0_IN_180_OUT" value="0"/>
675 <value name="0_OUT_180_IN" value="1"/>
676 <value name="MINUS_180_IN_0_OUT" value="2"/>
677 <value name="MINUS_180_OUT_0_IN" value="3"/>
678 <value name="90_IN_270_OUT" value="4"/>
679 <value name="90_OUT_270_IN" value="5"/>
680 <value name="MINUS_90_IN_90_OUT" value="6"/>
681 <value name="MINUS_90_OUT_90_IN" value="7"/>
682 </enum>
683
684 <struct name="RT Buffer">
685 <field name="Base" size="64" start="0:0" type="address"/>
686 <field name="Row Stride" size="32" start="2:0" type="uint"/>
687 <field name="Surface Stride" size="32" start="3:0" type="uint"/>
688 </struct>
689
690 <struct name="Single-Target Framebuffer Parameters" size="40">
691 <field name="Internal Format" size="3" start="0:0" default="Raw Value" type="Color Buffer Internal Format"/>
692 <field name="Sample Count" size="3" start="0:3" type="uint" default="1" modifier="log2"/>
693 <field name="Swizzle" size="12" start="0:6" type="uint"/>
694 <field name="Color Writeback Format" size="5" start="0:18" default="4_32B_CHANNELS" type="SFBD Color Format"/>
695 <field name="MSAA" size="2" start="0:23" default="Single" type="MSAA"/>
696 <field name="sRGB" size="1" start="0:25" type="bool"/>
697 <field name="Color Block Format" size="2" start="0:26" type="Block Format"/>
698 <field name="Dithering Enable" size="1" start="0:28" type="bool"/>
699 <field name="Clean Pixel Write Enable" size="1" start="0:29" type="bool"/>
700 <field name="Color Preload Enable" size="1" start="0:30" type="bool"/>
701 <field name="Color Write Enable" size="1" start="0:31" type="bool"/>
702 <field name="X Downsampling Scale" size="3" start="1:0" type="uint"/>
703 <field name="Y Downsampling Scale" size="3" start="1:3" type="uint"/>
704 <field name="Downsampling Accumulation Mode" size="2" start="1:6" type="Downsampling Accumulation Mode"/>
705 <field name="Sample Layout" size="2" start="1:8" type="Sample Layout"/>
706 <field name="Big Endian" size="1" start="1:10" type="bool"/>
707 <field name="Tie-Break Rule" size="3" start="1:11" type="Tie-Break Rule"/>
708 <field name="CRC Read Enable" size="1" start="1:14" type="bool"/>
709 <field name="CRC Write Enable" size="1" start="1:15" type="bool"/>
710 <field name="ZS Block Format" size="2" start="1:16" type="Block Format"/>
711 <field name="ZS Format" size="4" start="1:18" type="ZS Format" default="D24S8"/>
712 <field name="ZS Preload Enable" size="1" start="1:22" type="bool"/>
713 <field name="ZS Write Enable" size="1" start="1:23" type="bool"/>
714 <field name="S Block Format" size="2" start="1:24" type="Block Format"/>
715 <field name="S Format" size="4" start="1:26" type="S Format"/>
716 <field name="S Write Enable" size="1" start="1:31" type="bool"/>
717 <field name="Bound Min X" size="16" start="2:0" type="uint"/>
718 <field name="Bound Min Y" size="16" start="2:16" type="uint"/>
719 <field name="Bound Max X" size="16" start="3:0" type="uint"/>
720 <field name="Bound Max Y" size="16" start="3:16" type="uint"/>
721 <field name="DCD Offset" size="32" start="4:0" type="uint"/>
722 <field name="CRC Buffer" size="128" start="8:0" type="RT Buffer"/>
723 <field name="Color Writeback" size="128" start="12:0" type="RT Buffer"/>
724 <field name="ZS Writeback" size="128" start="16:0" type="RT Buffer"/>
725 <field name="S Writeback" size="128" start="20:0" type="RT Buffer"/>
726 <field name="Color Load Address" size="64" start="24:0" type="address"/>
727 <field name="Color Load Row Stride" size="32" start="26:0" type="uint"/>
728 <field name="Color Load Surface Stride" size="32" start="27:0" type="uint"/>
729 <field name="Clear Color 0" size="32" start="24:0" type="uint"/>
730 <field name="Clear Color 1" size="32" start="25:0" type="uint"/>
731 <field name="Clear Color 2" size="32" start="26:0" type="uint"/>
732 <field name="Clear Color 3" size="32" start="27:0" type="uint"/>
733 <field name="ZS Load Address" size="64" start="28:0" type="address"/>
734 <field name="ZS Load Row Stride" size="32" start="30:0" type="uint"/>
735 <field name="ZS Load Surface Stride" size="32" start="31:0" type="uint"/>
736 <field name="Z Clear" size="32" start="28:0" type="float"/>
737 <field name="S Clear" size="8" start="32:0" type="uint"/>
738 </struct>
739
740 <struct name="Single-Target Framebuffer Padding 1" size="6">
741 </struct>
742
743 <struct name="Single-Target Framebuffer Padding 2" size="8">
744 </struct>
745
746 <aggregate name="Single-Target Framebuffer" size="320">
747 <section name="Local Storage" offset="0" type="Local Storage"/>
748 <section name="Parameters" offset="32" type="Single-Target Framebuffer Parameters"/>
749 <section name="Tiler" offset="192" type="Midgard Tiler"/>
750 <section name="Padding 1" offset="232" type="Single-Target Framebuffer Padding 1"/>
751 <section name="Tiler Weights" offset="256" type="Midgard Tiler Weights"/>
752 <section name="Padding 2" offset="288" type="Single-Target Framebuffer Padding 2"/>
753 </aggregate>
Boris Brezillonefce73d2020-09-08 10:11:26 +0200754
755 <enum name="Sample Pattern">
756 <value name="Single-sampled" value="0"/>
757 <value name="Ordered 4x Grid" value="1"/>
758 <value name="Rotated 4x Grid" value="2"/>
759 <value name="D3D 8x Grid" value="3"/>
760 <value name="D3D 16x Grid" value="4"/>
761 </enum>
762
763 <struct name="Bifrost Tiler Heap">
764 <field name="Size" size="32" start="1:0" type="uint" modifier="align(4096)"/>
765 <field name="Base" size="64" start="2:0" type="address"/>
766 <field name="Bottom" size="64" start="4:0" type="address"/>
767 <field name="Top" size="64" start="6:0" type="address"/>
768 </struct>
769
770 <struct name="Bifrost Tiler Weights" size="1">
771 <field name="Value" size="16" start="0:16" type="uint"/>
772 </struct>
773
774 <struct name="Bifrost Tiler">
775 <field name="Polygon List" size="64" start="0:0" type="address"/>
776 <field name="Hierarchy Mask" size="13" start="2:0" type="uint"/>
777 <field name="Sample Pattern" size="3" start="2:13" type="Sample Pattern"/>
778 <field name="Update Cost Table" size="1" start="2:16" type="bool"/>
779 <field name="FB Width" size="16" start="3:0" type="uint" modifier="minus(1)"/>
780 <field name="FB Height" size="16" start="3:16" type="uint" modifier="minus(1)"/>
781 <field name="Heap" size="64" start="6:0" type="address"/>
782 <field name="Weights" size="32" start="8:0" type="Bifrost Tiler Weights" elements="8"/>
783 </struct>
Alyssa Rosenzweig9cb3a9e2020-08-05 18:16:38 -0400784</panxml>