Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mesa
Path: blob/21.2-virgl/src/panfrost/lib/midgard.xml
4560 views
1
<panxml>
2
3
<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="3D Linear" value="5"/>
9
<value name="3D Interleaved" value="6"/>
10
<value name="1D Primitive Index Buffer" value="7"/>
11
<value name="1D POT Divisor Write Reduction" value="10"/>
12
<value name="1D Modulus Write Reduction" value="11"/>
13
<value name="1D NPOT Divisor Write Reduction" value="12"/>
14
<value name="Continuation" value="32"/>
15
</enum>
16
17
<enum name="Attribute Special">
18
<value name="Vertex ID" value="34"/>
19
<value name="Instance ID" value="36"/>
20
<value name="Frag Coord" value="37"/>
21
<value name="Front Facing" value="38"/>
22
<value name="Point Coord" value="97"/>
23
</enum>
24
25
<enum name="Channel">
26
<value name="R" value="0"/>
27
<value name="G" value="1"/>
28
<value name="B" value="2"/>
29
<value name="A" value="3"/>
30
<value name="0" value="4"/>
31
<value name="1" value="5"/>
32
</enum>
33
34
<enum name="Depth Source">
35
<value name="None" value="0"/>
36
<value name="Fixed function" value="2"/>
37
<value name="Shader" value="3"/>
38
</enum>
39
40
<enum name="Job Type">
41
<value name="Not started" value="0"/>
42
<value name="Null" value="1"/>
43
<value name="Write value" value="2"/>
44
<value name="Cache flush" value="3"/>
45
<value name="Compute" value="4"/>
46
<value name="Vertex" value="5"/>
47
<value name="Geometry" value="6"/>
48
<value name="Tiler" value="7"/>
49
<value name="Fused" value="8"/>
50
<value name="Fragment" value="9"/>
51
<value name="Indexed Vertex" value="10"/>
52
</enum>
53
54
<enum name="Draw Mode">
55
<value name="None" value="0"/>
56
<value name="Points" value="1"/>
57
<value name="Lines" value="2"/>
58
<value name="Line strip" value="4"/>
59
<value name="Line loop" value="6"/>
60
<value name="Triangles" value="8"/>
61
<value name="Triangle strip" value="10"/>
62
<value name="Triangle fan" value="12"/>
63
<value name="Polygon" value="13"/>
64
<value name="Quads" value="14"/>
65
<value name="Quad strip" value="15"/>
66
</enum>
67
68
<enum name="Exception Access">
69
<value name="None" value="0"/>
70
<value name="Execute" value="2"/>
71
<value name="Read" value="1"/>
72
<value name="Write" value="3"/>
73
</enum>
74
75
<enum name="Func">
76
<value name="Never" value="0"/>
77
<value name="Less" value="1"/>
78
<value name="Equal" value="2"/>
79
<value name="Lequal" value="3"/>
80
<value name="Greater" value="4"/>
81
<value name="Not Equal" value="5"/>
82
<value name="Gequal" value="6"/>
83
<value name="Always" value="7"/>
84
</enum>
85
86
<enum name="Format">
87
<value name="ETC2 RGB8" value="1"/>
88
<value name="ETC2 R11 UNORM" value="2"/>
89
<value name="ETC2 RGBA8" value="3"/>
90
<value name="ETC2 RG11 UNORM" value="4"/>
91
<!--- Formats 5-6 new in v7 *-->
92
<value name="R4A4 UNORM" value="5"/>
93
<value name="A4R4 UNORM" value="6"/>
94
<value name="BC1 UNORM" value="7"/>
95
<value name="BC2 UNORM" value="8"/>
96
<value name="BC3 UNORM" value="9"/>
97
<value name="BC4 UNORM" value="10"/>
98
<value name="BC4 SNORM" value="11"/>
99
<value name="BC5 UNORM" value="12"/>
100
<value name="BC5 SNORM" value="13"/>
101
<value name="BC6H UF16" value="14"/>
102
<value name="BC6H SF16" value="15"/>
103
<value name="BC7 UNORM" value="16"/>
104
<value name="ETC2 R11 SNORM" value="17"/>
105
<value name="ETC2 RG11 SNORM" value="18"/>
106
<value name="ETC2 RGB8A1" value="19"/>
107
<value name="ASTC 3D LDR" value="20"/>
108
<value name="ASTC 3D HDR" value="21"/>
109
<value name="ASTC 2D LDR" value="22"/>
110
<value name="ASTC 2D HDR" value="23"/>
111
<!--- Formats 24-31 new in v7 * *-->
112
<value name="R8A8 UNORM" value="24"/>
113
<value name="A8R8 UNORM" value="25"/>
114
<value name="A8 UNORM" value="26"/>
115
<value name="RAW10" value="28"/>
116
<value name="RAW12" value="29"/>
117
<value name="R8G8B8G8" value="30"/>
118
<value name="G8R8G8B8" value="31"/>
119
<value name="RGB565" value="64"/>
120
<value name="RGB5 A1 UNORM" value="65"/>
121
<value name="A1 BGR5 UNORM" value="66"/>
122
<value name="RGB10 A2 UNORM" value="67"/>
123
<value name="A2 BGR10 UNORM" value="68"/>
124
<value name="RGB10 A2 SNORM" value="69"/>
125
<value name="A2 BGR10 SNORM" value="70"/>
126
<value name="RGB10 A2UI" value="71"/>
127
<value name="A2 BGR10UI" value="72"/>
128
<value name="RGB10 A2I" value="73"/>
129
<value name="A2 BGR10I" value="74"/>
130
<value name="RGB332 UNORM" value="75"/>
131
<value name="BGR233 UNORM" value="76"/>
132
<value name="Z24X8 UNORM" value="77"/>
133
<value name="X8Z24" value="78"/>
134
<value name="X32 S8X24" value="79"/>
135
<value name="X24S8 X32" value="80"/>
136
<value name="R32 FIXED" value="81"/>
137
<value name="RG32 FIXED" value="82"/>
138
<value name="RGB32 FIXED" value="83"/>
139
<value name="RGBA32 FIXED" value="84"/>
140
<!--- On v7, X24S8 -->
141
<value name="Tilebuffer Native" value="85"/>
142
<value name="S8X24" value="86"/>
143
<value name="Z32 X32" value="87"/>
144
<value name="X32 Z32" value="88"/>
145
<value name="R11F G11F B10F" value="89"/>
146
<value name="B10F G11F R11F" value="90"/>
147
<value name="R9F G9F B9F E5F" value="91"/>
148
<value name="E5F B9F G9F R9F" value="92"/>
149
<!--- Format 93 avaible v7+. On Midgard, acts as a RG16F + snap -->
150
<value name="S8" value="93"/>
151
<!--- RGBA32F + snap to 2^-8, used for vertex writes -->
152
<value name="Snap 4" value="94"/>
153
<value name="Constant" value="95"/>
154
<value name="R1 SNORM" value="96"/>
155
<value name="R2 SNORM" value="97"/>
156
<value name="R4 SNORM" value="98"/>
157
<value name="R8 SNORM" value="99"/>
158
<value name="R16 SNORM" value="100"/>
159
<value name="R32 SNORM" value="101"/>
160
<value name="R64 SNORM" value="102"/>
161
<!--- 103 reserved -->
162
<value name="RG1 SNORM" value="104"/>
163
<value name="RG2 SNORM" value="105"/>
164
<value name="RG4 SNORM" value="106"/>
165
<value name="RG8 SNORM" value="107"/>
166
<value name="RG16 SNORM" value="108"/>
167
<value name="RG32 SNORM" value="109"/>
168
<value name="RG64 SNORM" value="110"/>
169
<!-- 111 reserved -->
170
<value name="RGB1 SNORM" value="112"/>
171
<value name="RGB2 SNORM" value="113"/>
172
<value name="RGB4 SNORM" value="114"/>
173
<value name="RGB8 SNORM" value="115"/>
174
<value name="RGB16 SNORM" value="116"/>
175
<value name="RGB32 SNORM" value="117"/>
176
<value name="RGB64 SNORM" value="118"/>
177
<!-- 119 reserved -->
178
<value name="RGBA1 SNORM" value="120"/>
179
<value name="RGBA2 SNORM" value="121"/>
180
<value name="RGBA4 SNORM" value="122"/>
181
<value name="RGBA8 SNORM" value="123"/>
182
<value name="RGBA16 SNORM" value="124"/>
183
<value name="RGBA32 SNORM" value="125"/>
184
<value name="RGBA64 SNORM" value="126"/>
185
<!-- 127 reserved -->
186
<value name="R1UI" value="128"/>
187
<value name="R2UI" value="129"/>
188
<value name="R4UI" value="130"/>
189
<value name="R8UI" value="131"/>
190
<value name="R16UI" value="132"/>
191
<value name="R32UI" value="133"/>
192
<value name="R64UI" value="134"/>
193
<value name="R64F" value="135"/>
194
<value name="RG1UI" value="136"/>
195
<value name="RG2UI" value="137"/>
196
<value name="RG4UI" value="138"/>
197
<value name="RG8UI" value="139"/>
198
<value name="RG16UI" value="140"/>
199
<value name="RG32UI" value="141"/>
200
<value name="RG64UI" value="142"/>
201
<value name="RG64F" value="143"/>
202
<value name="RGB1UI" value="144"/>
203
<value name="RGB2UI" value="145"/>
204
<value name="RGB4UI" value="146"/>
205
<value name="RGB8UI" value="147"/>
206
<value name="RGB16UI" value="148"/>
207
<value name="RGB32UI" value="149"/>
208
<value name="RGB64UI" value="150"/>
209
<value name="RGB64F" value="151"/>
210
<value name="RGBA1UI" value="152"/>
211
<value name="RGBA2UI" value="153"/>
212
<value name="RGBA4UI" value="154"/>
213
<value name="RGBA8UI" value="155"/>
214
<value name="RGBA16UI" value="156"/>
215
<value name="RGBA32UI" value="157"/>
216
<value name="RGBA64UI" value="158"/>
217
<value name="RGBA64F" value="159"/>
218
<value name="R1 UNORM" value="160"/>
219
<value name="R2 UNORM" value="161"/>
220
<value name="R4 UNORM" value="162"/>
221
<value name="R8 UNORM" value="163"/>
222
<value name="R16 UNORM" value="164"/>
223
<value name="R32 UNORM" value="165"/>
224
<value name="R64 UNORM" value="166"/>
225
<value name="R32F" value="167"/>
226
<value name="RG1 UNORM" value="168"/>
227
<value name="RG2 UNORM" value="169"/>
228
<value name="RG4 UNORM" value="170"/>
229
<value name="RG8 UNORM" value="171"/>
230
<value name="RG16 UNORM" value="172"/>
231
<value name="RG32 UNORM" value="173"/>
232
<value name="RG64 UNORM" value="174"/>
233
<value name="RG32F" value="175"/>
234
<value name="RGB1 UNORM" value="176"/>
235
<value name="RGB2 UNORM" value="177"/>
236
<value name="RGB4 UNORM" value="178"/>
237
<value name="RGB8 UNORM" value="179"/>
238
<value name="RGB16 UNORM" value="180"/>
239
<value name="RGB32 UNORM" value="181"/>
240
<value name="RGB64 UNORM" value="182"/>
241
<value name="RGB32F" value="183"/>
242
<value name="RGBA1 UNORM" value="184"/>
243
<value name="RGBA2 UNORM" value="185"/>
244
<value name="RGBA4 UNORM" value="186"/>
245
<value name="RGBA8 UNORM" value="187"/>
246
<value name="RGBA16 UNORM" value="188"/>
247
<value name="RGBA32 UNORM" value="189"/>
248
<value name="RGBA64 UNORM" value="190"/>
249
<value name="RGBA32F" value="191"/>
250
<value name="R1I" value="192"/>
251
<value name="R2I" value="193"/>
252
<value name="R4I" value="194"/>
253
<value name="R8I" value="195"/>
254
<value name="R16I" value="196"/>
255
<value name="R32I" value="197"/>
256
<value name="R64I" value="198"/>
257
<value name="R16F" value="199"/>
258
<value name="RG1I" value="200"/>
259
<value name="RG2I" value="201"/>
260
<value name="RG4I" value="202"/>
261
<value name="RG8I" value="203"/>
262
<value name="RG16I" value="204"/>
263
<value name="RG32I" value="205"/>
264
<value name="RG64I" value="206"/>
265
<value name="RG16F" value="207"/>
266
<value name="RGB1I" value="208"/>
267
<value name="RGB2I" value="209"/>
268
<value name="RGB4I" value="210"/>
269
<value name="RGB8I" value="211"/>
270
<value name="RGB16I" value="212"/>
271
<value name="RGB32I" value="213"/>
272
<value name="RGB64I" value="214"/>
273
<value name="RGB16F" value="215"/>
274
<value name="RGBA1I" value="216"/>
275
<value name="RGBA2I" value="217"/>
276
<value name="RGBA4I" value="218"/>
277
<value name="RGBA8I" value="219"/>
278
<value name="RGBA16I" value="220"/>
279
<value name="RGBA32I" value="221"/>
280
<value name="RGBA64I" value="222"/>
281
<value name="RGBA16F" value="223"/>
282
<value name="RGB5 A1 AU" value="224"/>
283
<value name="RGB5 A1 PU" value="225"/>
284
<value name="R5G6B5 AU" value="226"/>
285
<value name="R5G6B5 PU" value="227"/>
286
<value name="Snap4 V" value="230"/>
287
<value name="R32F RTZ" value="231"/>
288
<value name="RGBA4 AU" value="232"/>
289
<value name="RGBA4 PU" value="233"/>
290
<value name="RGBA8 TB" value="237"/>
291
<value name="RGB10 A2 TB" value="238"/>
292
<value name="RG32F RTZ" value="239"/>
293
<value name="Tess Vertex Pack" value="240"/>
294
<value name="RGB8 A2 AU" value="241"/>
295
<value name="RGB8 A2 PU" value="242"/>
296
<value name="RGB32F RTZ" value="247"/>
297
<value name="RGBA32F RTZ" value="255"/>
298
</enum>
299
300
<enum name="RGB Component Order">
301
<value name="RGBA" value="0"/>
302
<value name="GRBA" value="2"/>
303
<value name="BGRA" value="4"/>
304
<value name="ARGB" value="8"/>
305
<value name="AGRB" value="10"/>
306
<value name="ABGR" value="12"/>
307
<value name="RGB1" value="16"/>
308
<value name="GRB1" value="18"/>
309
<value name="BGR1" value="20"/>
310
<value name="1RGB" value="24"/>
311
<value name="1GRB" value="26"/>
312
<value name="1BGR" value="28"/>
313
<value name="RRRR" value="226"/>
314
<value name="RRR1" value="227"/>
315
<value name="RRRA" value="228"/>
316
<value name="000A" value="229"/>
317
<value name="0001" value="230"/>
318
<value name="0000" value="231"/>
319
<value name="Snap4 v9" value="232"/>
320
<value name="Snap4 v10" value="233"/>
321
<value name="Snap4 v11" value="234"/>
322
<value name="Snap4 v12" value="235"/>
323
<value name="Snap4 v13" value="236"/>
324
<value name="Snap4 v14" value="237"/>
325
<value name="Snap4 v15" value="238"/>
326
<value name="Snap4 v16" value="239"/>
327
<!-- Internal only, do not use -->
328
<value name="R000" value="240"/>
329
<value name="RBGA" value="242"/>
330
</enum>
331
332
<enum name="YUV Swizzle">
333
<value name="YUVA" value="0"/>
334
<value name="YVUA" value="1"/>
335
<value name="UYVA" value="2"/>
336
<value name="UVYA" value="3"/>
337
<value name="VUYA" value="4"/>
338
<value name="VYUA" value="5"/>
339
<value name="Y00A" value="6"/>
340
<value name="YXXA" value="7"/>
341
</enum>
342
343
<enum name="YUV Conversion Mode">
344
<value name="No Conversion" value="0"/>
345
<value name="BT 601" value="3"/>
346
<value name="BT 709" value="4"/>
347
<value name="BT 2020" value="6"/>
348
</enum>
349
350
<enum name="YUV Cr Siting">
351
<value name="Co-Sited" value="0"/>
352
<value name="Center Y" value="1"/>
353
<value name="Center X" value="2"/>
354
<value name="Center" value="3"/>
355
<value name="One Quarter" value="4"/>
356
<value name="Three Quarters" value="5"/>
357
<value name="Replicated" value="7"/>
358
</enum>
359
360
<enum name="Pixel Kill">
361
<value name="Force Early" value="0"/>
362
<value name="Strong Early" value="1"/>
363
<value name="Weak Early" value="2"/>
364
<value name="Force Late" value="3"/>
365
</enum>
366
367
<enum name="Block Format">
368
<!--- 16x16 block u-interleaved -->
369
<value name="Tiled U-Interleaved" value="0"/>
370
<value name="Tiled Linear" value="1"/>
371
<value name="Linear" value="2"/>
372
<value name="AFBC" value="3"/>
373
</enum>
374
375
<enum name="Block Format v7">
376
<value name="No Write" value="0"/>
377
<value name="Tiled U-Interleaved" value="1"/>
378
<value name="Linear" value="2"/>
379
<value name="AFBC" value="12"/>
380
<value name="AFBC Tiled" value="13"/>
381
</enum>
382
383
<enum name="Mipmap Mode">
384
<value name="Nearest" value="0"/>
385
<value name="None" value="1"/>
386
<value name="Trilinear" value="3"/>
387
</enum>
388
389
<enum name="LOD Algorithm">
390
<value name="Isotropic" value="0"/>
391
<!--- 1, 2 reserved -->
392
<value name="Anisotropic" value="3"/>
393
</enum>
394
395
<enum name="MSAA">
396
<value name="Single" value="0"/>
397
<!-- N samples, 1 surface, resolved -->
398
<value name="Average" value="1"/>
399
<!-- N samples, 1 surface, unresolved -->
400
<value name="Multiple" value="2"/>
401
<!-- N samples, N surfaces -->
402
<value name="Layered" value="3"/>
403
</enum>
404
405
<enum name="Index Type">
406
<value name="None" value="0"/>
407
<value name="UINT8" value="1"/>
408
<value name="UINT16" value="2"/>
409
<value name="UINT32" value="3"/>
410
</enum>
411
412
<enum name="Occlusion Mode">
413
<value name="Disabled" value="0"/>
414
<value name="Predicate" value="1"/>
415
<value name="Counter" value="3"/>
416
</enum>
417
418
<enum name="Stencil Op">
419
<value name="Keep" value="0"/>
420
<value name="Replace" value="1"/>
421
<value name="Zero" value="2"/>
422
<value name="Invert" value="3"/>
423
<value name="Incr Wrap" value="4"/>
424
<value name="Decr Wrap" value="5"/>
425
<value name="Incr Sat" value="6"/>
426
<value name="Decr Sat" value="7"/>
427
</enum>
428
429
<enum name="Texture Dimension">
430
<value name="Cube" value="0"/>
431
<value name="1D" value="1"/>
432
<value name="2D" value="2"/>
433
<value name="3D" value="3"/>
434
</enum>
435
436
<enum name="Texture Layout">
437
<!--- 16x16 block u-interleaved -->
438
<value name="Tiled" value="1"/>
439
<value name="Linear" value="2"/>
440
<value name="AFBC" value="12"/>
441
</enum>
442
443
<enum name="AFBC Surface Flag">
444
<value name="YTR" value="1"/>
445
<value name="Split Block" value="2"/>
446
<value name="Wide Block" value="4"/>
447
<value name="Tiled Header" value="8"/>
448
<value name="Prefetch" value="16"/>
449
<value name="Check Payload Range" value="32"/>
450
</enum>
451
452
<enum name="Wrap Mode">
453
<value name="Repeat" value="8"/>
454
<value name="Clamp to Edge" value="9"/>
455
<value name="Clamp" value="10"/>
456
<value name="Clamp to Border" value="11"/>
457
<value name="Mirrored Repeat" value="12"/>
458
<value name="Mirrored Clamp to Edge" value="13"/>
459
<value name="Mirrored Clamp" value="14"/>
460
<value name="Mirrored Clamp to Border" value="15"/>
461
</enum>
462
463
<struct name="Attribute" align="8">
464
<field name="Buffer index" size="9" start="0" type="uint"/>
465
<field name="Offset enable" size="1" start="9" type="bool" default="true"/>
466
<field name="Format" size="22" start="10" type="Pixel Format"/>
467
<field name="Offset" size="32" start="32" type="int"/>
468
</struct>
469
470
<struct name="Attribute Vertex ID" align="32">
471
<field name="Type" size="8" start="0" type="Attribute Special" default="Vertex ID"/>
472
<field name="Divisor R" size="5" start="56" type="uint"/>
473
<field name="Divisor P" size="3" start="61" type="uint"/>
474
<field name="Offset" size="32" start="96" type="int"/>
475
</struct>
476
477
<struct name="Attribute Instance ID" align="32">
478
<field name="Type" size="8" start="0" type="Attribute Special" default="Instance ID"/>
479
<field name="Divisor R" size="5" start="56" type="uint"/>
480
<field name="Divisor E" size="1" start="61" type="uint"/>
481
<field name="Divisor P" size="32" start="64" type="uint"/>
482
<field name="Offset" size="32" start="96" type="int"/>
483
</struct>
484
485
<struct name="Attribute Buffer" align="32">
486
<field name="Special" size="8" start="0" type="Attribute Special"/>
487
<field name="Type" size="6" start="0" type="Attribute Type" default="1D"/>
488
<field name="Pointer" size="50" start="6" type="address" modifier="shr(6)"/>
489
<field name="Stride" size="32" start="64" type="uint"/>
490
<field name="Size" size="32" start="96" type="uint"/>
491
492
<field name="Divisor" size="8" start="56" type="padded" default="1"/>
493
<field name="Divisor R" size="5" start="56" type="uint"/>
494
<field name="Divisor P" size="3" start="61" type="uint"/>
495
<field name="Divisor E" size="1" start="61" type="uint"/>
496
</struct>
497
498
<struct name="Attribute Buffer Continuation NPOT">
499
<field name="Type" size="6" start="0:0" type="Attribute Type" default="Continuation"/>
500
<field name="Divisor Numerator" size="32" start="1:0" type="uint"/>
501
<field name="Divisor" size="32" start="3:0" type="uint"/>
502
</struct>
503
504
<struct name="Attribute Buffer Continuation 3D" size="4">
505
<field name="Type" size="6" start="0:0" type="Attribute Type" default="Continuation"/>
506
<field name="S dimension" size="16" start="0:16" type="uint" modifier="minus(1)"/>
507
<field name="T dimension" size="16" start="1:0" type="uint" modifier="minus(1)"/>
508
<field name="R dimension" size="16" start="1:16" type="uint" modifier="minus(1)"/>
509
<field name="Row Stride" size="32" start="2:0" type="uint"/>
510
<field name="Slice Stride" size="32" start="3:0" type="uint"/>
511
</struct>
512
513
<enum name="Blend Operand A">
514
<value name="Zero" value="1"/>
515
<value name="Src" value="2"/>
516
<value name="Dest" value="3"/>
517
</enum>
518
519
<enum name="Blend Operand B">
520
<value name="Src Minus Dest" value="0"/>
521
<value name="Src Plus Dest" value="1"/>
522
<value name="Src" value="2"/>
523
<value name="Dest" value="3"/>
524
</enum>
525
526
<enum name="Blend Operand C">
527
<value name="Zero" value="1"/>
528
<value name="Src" value="2"/>
529
<value name="Dest" value="3"/>
530
<value name="Src x 2" value="4"/>
531
<value name="Src Alpha" value="5"/>
532
<value name="Dest Alpha" value="6"/>
533
<value name="Constant" value="7"/>
534
</enum>
535
536
<struct name="Blend Function" no-direct-packing="true">
537
<!-- Blend equation: A + (B * C) -->
538
<field name="A" size="2" start="0" type="Blend Operand A"/>
539
<field name="Negate A" size="1" start="3" type="bool"/>
540
<field name="B" size="2" start="4" type="Blend Operand B"/>
541
<field name="Negate B" size="1" start="7" type="bool"/>
542
<field name="C" size="3" start="8" type="Blend Operand C"/>
543
<field name="Invert C" size="1" start="11" type="bool"/>
544
</struct>
545
546
<struct name="Blend Equation" size="1">
547
<field name="RGB" size="12" start="0:0" type="Blend Function"/>
548
<field name="Alpha" size="12" start="0:12" type="Blend Function"/>
549
<field name="Color Mask" size="4" start="0:28" type="uint"/>
550
</struct>
551
552
<struct name="Midgard Blend Overlay" size="4" no-direct-packing="true">
553
<field name="Blend Shader" size="1" start="0:1" type="bool" default="false"/>
554
<field name="Blend Shader Contains Discard" size="1" start="0:2" type="bool" default="false"/>
555
<field name="Shader PC" size="64" start="2:0" type="address"/>
556
<field name="Equation" size="32" start="2:0" type="Blend Equation"/>
557
<field name="Constant" size="32" start="3:0" type="float"/>
558
</struct>
559
560
<enum name="Bifrost Register File Format">
561
<value name="F16" value="0"/>
562
<value name="F32" value="1"/>
563
<value name="I32" value="2"/>
564
<value name="U32" value="3"/>
565
<value name="I16" value="4"/>
566
<value name="U16" value="5"/>
567
</enum>
568
569
<enum name="Message Type">
570
<value name="Disabled" value="0"/>
571
<value name="LD_VAR" value="1"/>
572
<value name="VAR_TEX" value="2"/>
573
</enum>
574
575
<enum name="Message Preload Register Format">
576
<value name="F32" value="0"/>
577
<value name="F16" value="1"/>
578
</enum>
579
580
<enum name="Bifrost Blend Mode">
581
<value name="Shader" value="0"/>
582
<value name="Opaque" value="1"/>
583
<value name="Fixed-Function" value="2"/>
584
<value name="Off" value="3"/>
585
</enum>
586
587
<struct name="Bifrost Blend Shader" size="2">
588
<field name="Return Value" size="29" start="0:3" type="uint" modifier="shr(3)"/>
589
<field name="PC" size="28" start="1:4" type="uint" modifier="shr(4)"/>
590
</struct>
591
592
<struct name="Bifrost Internal Conversion" size="1">
593
<field name="Memory Format" size="22" start="0" type="Pixel Format"/>
594
<field name="Raw" size="1" start="22" type="bool"/>
595
<field name="Register Format" size="3" start="24" type="Bifrost Register File Format"/>
596
</struct>
597
598
<struct name="Bifrost Blend Fixed-Function" size="2">
599
<field name="Num Comps" size="2" start="0:3" type="uint" modifier="minus(1)" default="1"/>
600
<field name="Alpha Zero NOP" size="1" start="0:5" type="bool"/>
601
<field name="Alpha One Store" size="1" start="0:6" type="bool"/>
602
<field name="RT" size="4" start="0:16" type="uint">
603
<value name="MALI_BIFROST_BLEND_MAX_RT" value="8"/>
604
</field>
605
<field name="Conversion" size="32" start="1:0" type="Bifrost Internal Conversion"/>
606
</struct>
607
608
<struct name="Bifrost Internal Blend">
609
<field name="Mode" size="2" start="0:0" type="Bifrost Blend Mode"/>
610
<field name="Shader" size="64" start="0:0" type="Bifrost Blend Shader"/>
611
<field name="Fixed-Function" size="64" start="0:0" type="Bifrost Blend Fixed-Function"/>
612
</struct>
613
614
<struct name="Bifrost Blend Overlay" no-direct-packing="true">
615
<field name="Constant" size="16" start="0:16" type="uint"/>
616
<field name="Equation" size="32" start="1:0" type="Blend Equation"/>
617
<field name="Internal" size="64" start="2:0" type="Bifrost Internal Blend"/>
618
</struct>
619
620
<struct name="Blend" size="4" align="16">
621
<field name="Load Destination" size="1" start="0:0" type="bool" default="false"/>
622
<field name="Alpha To One" size="1" start="0:8" type="bool"/>
623
<field name="Enable" size="1" start="0:9" type="bool" default="true"/>
624
<field name="sRGB" size="1" start="0:10" type="bool" default="false"/>
625
<field name="Round to FB precision" size="1" start="0:11" type="bool" default="false"/>
626
<field name="Midgard" size="1" start="0:0" type="Midgard Blend Overlay"/>
627
<field name="Bifrost" size="1" start="0:0" type="Bifrost Blend Overlay"/>
628
</struct>
629
630
<struct name="Invocation">
631
<!-- Dynamic bitfield containing WorkGroupSize.xyz, NumWorkGroups.xyz
632
The number of bits allocated for each number is based on the *_shift
633
fields. For example, workgroups_y_shift gives the bit that
634
gl_NumWorkGroups.y starts at, and workgroups_z_shift gives the bit
635
that gl_NumWorkGroups.z starts at (and therefore one after the bit
636
that gl_NumWorkGroups.y ends at). The actual value for each
637
is one more than the stored value, since if any of the values
638
are zero, then there would be no invocations (and hence no job). -->
639
<field name="Invocations" size="32" start="0:0" type="uint"/>
640
<field name="Size Y shift" size="5" start="1:0" type="uint"/>
641
<field name="Size Z shift" size="5" start="1:5" type="uint"/>
642
<field name="Workgroups X shift" size="6" start="1:10" type="uint"/>
643
<field name="Workgroups Y shift" size="6" start="1:16" type="uint"/>
644
<field name="Workgroups Z shift" size="6" start="1:22" type="uint"/>
645
<field name="Thread group split" size="4" start="1:28" type="uint" prefix="MALI_SPLIT">
646
<value name="Min efficient" value="2"/>
647
</field>
648
</struct>
649
650
<enum name="Point Size Array Format">
651
<value name="None" value="0"/>
652
<value name="FP16" value="2"/>
653
<value name="FP32" value="3"/>
654
</enum>
655
656
<enum name="Primitive Restart">
657
<value name="None" value="0"/>
658
<value name="Implicit" value="2"/>
659
<value name="Explicit" value="3"/>
660
</enum>
661
662
<struct name="Primitive">
663
<field name="Draw mode" size="8" start="0:0" type="Draw Mode" default="None"/>
664
<field name="Index type" size="3" start="0:8" type="Index Type" default="None"/>
665
<field name="Point size array format" size="2" start="0:11" type="Point Size Array Format"/>
666
<field name="Primitive Index Enable" size="1" start="0:13" type="bool"/>
667
<field name="Primitive Index Writeback" size="1" start="0:14" type="bool"/>
668
<field name="First provoking vertex" size="1" start="0:15" type="bool" default="true"/>
669
<field name="Low Depth Cull" size="1" start="0:16" type="bool" default="true"/>
670
<field name="High Depth Cull" size="1" start="0:17" type="bool" default="true"/>
671
<field name="Secondary Shader" size="1" start="0:18" type="bool"/>
672
<field name="Primitive restart" size="2" start="0:19" type="Primitive Restart"/>
673
<field name="Job Task Split" size="6" start="0:26" type="uint"/>
674
<field name="Base vertex offset" size="32" start="1:0" type="uint"/>
675
<field name="Primitive Restart Index" size="32" start="2:0" type="uint"/>
676
<field name="Index count" size="32" start="3:0" type="uint" modifier="minus(1)"/>
677
<field name="Indices" size="64" start="4:0" type="address"/>
678
</struct>
679
680
<struct name="Draw" size="30" align="64">
681
<field name="Four Components Per Vertex" size="1" start="0:0" type="bool"/>
682
<field name="Draw Descriptor Is 64b" size="1" start="0:1" type="bool"/>
683
<field name="Texture Descriptor Is 64b" size="1" start="0:2" type="bool"/>
684
<field name="Occlusion query" size="2" start="0:3" type="Occlusion Mode" default="Disabled"/>
685
<field name="Front face CCW" size="1" start="0:5" type="bool"/>
686
<field name="Cull front face" size="1" start="0:6" type="bool"/>
687
<field name="Cull back face" size="1" start="0:7" type="bool"/>
688
<field name="Flat Shading Vertex" size="1" start="0:8" type="uint"/>
689
<field name="Exclude Filtered Perf Counters" size="1" start="0:9" type="bool"/>
690
<field name="Primitive Barrier" size="1" start="0:10" type="bool"/>
691
<field name="Clean Fragment Write" size="1" start="0:11" type="bool"/>
692
<field name="Instance Size" size="8" start="0:16" type="padded" default="1"/>
693
<field name="Instance Primitive Size" size="8" start="0:24" type="padded" default="1"/>
694
<field name="Offset start" size="32" start="1:0" type="uint"/>
695
<field name="Primitive Index Base" size="32" start="2:0" type="uint"/>
696
<field name="Position" size="64" start="4:0" type="address"/>
697
<field name="Uniform buffers" size="64" start="6:0" type="address"/>
698
<field name="Textures" size="64" start="8:0" type="address"/>
699
<field name="Samplers" size="64" start="10:0" type="address"/>
700
<field name="Push uniforms" size="64" start="12:0" type="address"/>
701
<field name="State" size="64" start="14:0" type="address"/>
702
<field name="Attribute buffers" size="64" start="16:0" type="address"/>
703
<field name="Attributes" size="64" start="18:0" type="address"/>
704
<field name="Varying buffers" size="64" start="20:0" type="address"/>
705
<field name="Varyings" size="64" start="22:0" type="address"/>
706
<field name="Viewport" size="64" start="24:0" type="address"/>
707
<field name="Occlusion" size="64" start="26:0" type="address"/>
708
<field name="Thread Storage" size="64" start="28:0" type="address"/>
709
<field name="FBD" size="64" start="28:0" type="address"/>
710
</struct>
711
712
<struct name="Draw Padding" size="2" align="8">
713
</struct>
714
715
<struct name="Surface" align="8">
716
<field name="Pointer" size="64" start="0:0" type="address"/>
717
</struct>
718
719
<struct name="Surface With Stride" align="8">
720
<field name="Pointer" size="64" start="0:0" type="address"/>
721
<field name="Row stride" size="32" start="2:0" type="int"/>
722
<field name="Surface stride" size="32" start="3:0" type="int"/>
723
</struct>
724
725
<struct name="Midgard Sampler" align="32">
726
<field name="Magnify Nearest" size="1" start="0" type="bool" default="true"/>
727
<field name="Minify Nearest" size="1" start="1" type="bool" default="true"/>
728
<field name="Mipmap Mode" size="2" start="3" type="Mipmap Mode" default="Nearest"/>
729
<field name="Normalized Coordinates" size="1" start="5" type="bool" default="true"/>
730
<field name="LOD Bias" size="16" start="0:16" type="int" default="0"/>
731
<field name="Minimum LOD" size="16" start="1:0" type="uint" default="0"/>
732
<field name="Maximum LOD" size="16" start="1:16" type="uint" default="1"/>
733
<field name="Wrap Mode S" size="4" start="2:0" type="Wrap Mode" default="Clamp to Edge"/>
734
<field name="Wrap Mode T" size="4" start="2:4" type="Wrap Mode" default="Clamp to Edge"/>
735
<field name="Wrap Mode R" size="4" start="2:8" type="Wrap Mode" default="Clamp to Edge"/>
736
<field name="Compare Function" size="3" start="2:12" type="Func" default="Never"/>
737
<field name="Seamless Cube Map" size="1" start="2:15" type="bool" default="true"/>
738
<field name="Border Color R" size="32" start="4:0" type="uint/float" default="0.0"/>
739
<field name="Border Color G" size="32" start="5:0" type="uint/float" default="0.0"/>
740
<field name="Border Color B" size="32" start="6:0" type="uint/float" default="0.0"/>
741
<field name="Border Color A" size="32" start="7:0" type="uint/float" default="0.0"/>
742
</struct>
743
744
<struct name="Midgard Texture" size="8" align="64">
745
<field name="Width" size="16" start="0:0" type="uint" modifier="minus(1)"/>
746
<field name="Height" size="16" start="0:16" type="uint" modifier="minus(1)"/>
747
<field name="Depth" size="16" start="1:0" type="uint" modifier="minus(1)" default="1"/>
748
<field name="Sample count" size="16" start="1:0" type="uint" modifier="minus(1)" default="1"/>
749
<field name="Array size" size="16" start="1:16" type="uint" modifier="minus(1)"/>
750
<field name="Format" size="22" start="2:0" type="Pixel Format"/>
751
<field name="Dimension" size="2" start="2:22" type="Texture Dimension"/>
752
<field name="Texel ordering" size="4" start="2:24" type="Texture Layout"/>
753
<field name="Surface pointer is 64b" size="1" start="2:28" type="bool" default="true"/>
754
<field name="Manual stride" size="1" start="2:29" type="bool" default="false"/>
755
<field name="Levels" size="8" start="3:24" type="uint" modifier="minus(1)" default="1"/>
756
<field name="Swizzle" size="12" start="4:0" type="uint"/>
757
</struct>
758
759
<struct name="Bifrost Sampler" size="8" align="32">
760
<field name="Type" size="4" start="0:0" type="uint" default="1"/>
761
<field name="Wrap Mode R" size="4" start="0:8" type="Wrap Mode" default="Clamp to Edge"/>
762
<field name="Wrap Mode T" size="4" start="0:12" type="Wrap Mode" default="Clamp to Edge"/>
763
<field name="Wrap Mode S" size="4" start="0:16" type="Wrap Mode" default="Clamp to Edge"/>
764
<field name="Round to nearest even" size="1" start="0:21" type="bool" default="false"/>
765
<!--- Disable sRGB-to-linear conversion (assume linear) -->
766
<field name="sRGB override" size="1" start="0:22" type="bool" default="false"/>
767
<field name="Seamless Cube Map" size="1" start="0:23" type="bool" default="true"/>
768
<field name="Clamp integer coordinates" size="1" start="0:24" type="bool"/>
769
<field name="Normalized Coordinates" size="1" start="0:25" type="bool" default="true"/>
770
<field name="Clamp integer array indices" size="1" start="0:26" type="bool" default="true"/>
771
<field name="Point sample minify" size="1" start="0:27" type="bool" default="false"/>
772
<field name="Point sample magnify" size="1" start="0:28" type="bool" default="false"/>
773
<!--- Set for 0.5, clear for 0.0 -->
774
<field name="Magnify cutoff" size="1" start="0:29" type="bool" default="false"/>
775
<field name="Mipmap Mode" size="2" start="0:30" type="Mipmap Mode" default="Nearest"/>
776
<field name="Minimum LOD" size="13" start="1:0" type="uint" default="0"/>
777
<field name="Compare Function" size="3" start="1:13" type="Func" default="Never"/>
778
<field name="Maximum LOD" size="13" start="1:16" type="uint" default="0"/>
779
<field name="LOD bias" size="16" start="2:0" type="int" default="0"/>
780
<field name="Maximum anisotropy" size="5" start="2:16" type="uint" default="1" modifier="minus(1)"/>
781
<field name="LOD algorithm" size="2" start="2:24" type="LOD Algorithm" default="Isotropic"/>
782
<field name="Border Color R" size="32" start="4:0" type="uint/float" default="0.0"/>
783
<field name="Border Color G" size="32" start="5:0" type="uint/float" default="0.0"/>
784
<field name="Border Color B" size="32" start="6:0" type="uint/float" default="0.0"/>
785
<field name="Border Color A" size="32" start="7:0" type="uint/float" default="0.0"/>
786
</struct>
787
788
<struct name="Bifrost Texture" size="8" align="32">
789
<field name="Type" size="4" start="0:0" type="uint" default="2"/>
790
<field name="Dimension" size="2" start="0:4" type="Texture Dimension"/>
791
<field name="Sample corner position" size="1" start="0:8" type="bool" default="false"/>
792
<field name="Normalize coordinates" size="1" start="0:9" type="bool" default="false"/>
793
<field name="Format" size="22" start="0:10" type="Pixel Format"/>
794
<field name="Width" size="16" start="1:0" type="uint" modifier="minus(1)"/>
795
<field name="Height" size="16" start="1:16" type="uint" modifier="minus(1)"/>
796
<field name="Swizzle" size="12" start="2:0" type="uint"/>
797
<field name="Texel ordering" size="4" start="2:12" type="Texture Layout"/>
798
<field name="Levels" size="5" start="2:16" type="uint" default="1" modifier="minus(1)"/>
799
<field name="Minimum level" size="5" start="2:24" type="uint"/>
800
<field name="Minimum LOD" size="13" start="3:0" type="uint" default="0"/>
801
<field name="Sample count" size="3" start="3:13" type="uint" default="1" modifier="log2"/>
802
<field name="Maximum LOD" size="13" start="3:16" type="uint" default="0"/>
803
<field name="Surfaces" size="64" start="4:0" type="address"/>
804
<field name="Array size" size="16" start="6:0" type="uint" modifier="minus(1)" default="1"/>
805
<field name="Depth" size="16" start="7:0" type="uint" modifier="minus(1)" default="1"/>
806
</struct>
807
808
<enum name="FP Mode">
809
<value name="GL Inf/NaN Allowed" value="0"/>
810
<value name="GL Inf/NaN Suppressed" value="1"/>
811
<value name="CL" value="2"/>
812
<value name="D3D11" value="3"/>
813
</enum>
814
815
<struct name="Midgard Renderer Properties" size="1" no-direct-packing="true">
816
<field name="Force early-z" size="1" start="10" type="bool"/>
817
<field name="Shader contains discard" size="1" start="12" type="bool"/>
818
<field name="Shader has side-effects" size="1" start="13" type="bool"/>
819
<field name="Shader reads tilebuffer" size="1" start="14" type="bool"/>
820
<field name="Forward pixel kill" size="1" start="15" type="bool"/>
821
<field name="Work register count" size="5" start="16" type="uint"/>
822
<field name="Uniform count" size="5" start="21" type="uint"/>
823
<field name="FP mode" size="3" start="29" type="FP Mode"/>
824
</struct>
825
826
<enum name="Shader Register Allocation">
827
<value name="64 Per Thread" value="0"/>
828
<value name="32 Per Thread" value="2"/>
829
</enum>
830
831
<struct name="Bifrost Renderer Properties" size="1" no-direct-packing="true">
832
<field name="Shader register allocation" size="2" start="12" type="Shader Register Allocation"/>
833
<field name="Secondary shader register allocation" size="2" start="14" type="Shader Register Allocation"/>
834
<field name="Shader modifies coverage" size="1" start="16" type="bool"/>
835
<field name="Allow forward pixel to kill" size="1" start="19" type="bool"/>
836
<field name="Allow forward pixel to be killed" size="1" start="20" type="bool"/>
837
<field name="Pixel kill operation" size="2" start="21" type="Pixel Kill"/>
838
<field name="ZS update operation" size="2" start="23" type="Pixel Kill"/>
839
<field name="Point sprite coord origin max Y" size="1" start="27" type="bool"/>
840
<field name="Shader wait dependency 6" size="1" start="30" type="bool"/>
841
<field name="Shader wait dependency 7" size="1" start="31" type="bool"/>
842
</struct>
843
844
<struct name="Renderer Properties" size="1">
845
<field name="Midgard" size="32" start="0" type="Midgard Renderer Properties"/>
846
<field name="Bifrost" size="32" start="0" type="Bifrost Renderer Properties"/>
847
<field name="Uniform buffer count" size="8" start="0" type="uint"/>
848
<field name="Depth source" size="2" start="8" type="Depth Source" default="None"/>
849
<field name="Shader contains barrier" size="1" start="11" type="bool"/>
850
<field name="Stencil from shader" size="1" start="28" type="bool"/>
851
</struct>
852
853
<struct name="Compute Preload" size="1" no-direct-packing="true">
854
<field name="PC" size="1" start="6" type="bool"/>
855
<field name="Local Invocation XY" size="1" start="7" type="bool"/>
856
<field name="Local Invocation Z" size="1" start="8" type="bool"/>
857
<field name="Work group X" size="1" start="9" type="bool"/>
858
<field name="Work group Y" size="1" start="10" type="bool"/>
859
<field name="Work group Z" size="1" start="11" type="bool"/>
860
<field name="Global Invocation X" size="1" start="12" type="bool"/>
861
<field name="Global Invocation Y" size="1" start="13" type="bool"/>
862
<field name="Global Invocation Z" size="1" start="14" type="bool"/>
863
</struct>
864
865
<enum name="Warp Limit">
866
<value name="None" value="0"/>
867
<value name="2" value="1"/>
868
<value name="4" value="2"/>
869
<value name="8" value="3"/>
870
</enum>
871
872
<struct name="Vertex Preload" size="1" no-direct-packing="true">
873
<field name="Warp limit" size="2" start="0" type="Warp Limit"/>
874
<field name="PC" size="1" start="6" type="bool"/>
875
<field name="Position result address lo" size="1" start="10" type="bool"/>
876
<field name="Position result address hi" size="1" start="11" type="bool"/>
877
<field name="Vertex ID" size="1" start="13" type="bool"/>
878
<field name="Instance ID" size="1" start="14" type="bool"/>
879
</struct>
880
881
<struct name="Fragment Preload" size="1" no-direct-packing="true">
882
<field name="PC" size="1" start="6" type="bool"/>
883
<field name="Coverage" size="1" start="7" type="bool"/>
884
<field name="Primitive ID" size="1" start="9" type="bool"/>
885
<field name="Primitive flags" size="1" start="10" type="bool"/>
886
<field name="Fragment position" size="1" start="11" type="bool"/>
887
<field name="Sample mask/ID" size="1" start="13" type="bool"/>
888
</struct>
889
890
<struct name="Preload" size="1">
891
<field name="Compute" size="32" start="0" type="Compute Preload"/>
892
<field name="Vertex" size="32" start="0" type="Vertex Preload"/>
893
<field name="Fragment" size="32" start="0" type="Fragment Preload"/>
894
<field name="Uniform count" size="7" start="15" type="uint"/>
895
</struct>
896
897
<struct name="Shader" size="4">
898
<field name="Shader" size="64" start="0:0" type="address"/>
899
<field name="Sampler count" size="16" start="2:0" type="uint"/>
900
<field name="Texture count" size="16" start="2:16" type="uint"/>
901
<field name="Attribute count" size="16" start="3:0" type="uint"/>
902
<field name="Varying count" size="16" start="3:16" type="uint"/>
903
</struct>
904
905
<struct name="Multisample, Misc" size="1">
906
<field name="Sample mask" size="16" start="0" type="uint"/>
907
<field name="Multisample enable" size="1" start="16" type="bool"/>
908
<field name="Multisample late coverage" size="1" start="17" type="bool"/>
909
<field name="Evaluate per-sample" size="1" start="18" type="bool"/>
910
<field name="Fixed-function depth range fixed" size="1" start="19" type="bool"/>
911
<field name="Shader depth range fixed" size="1" start="20" type="bool"/>
912
<field name="SFBD Load destination" size="1" start="21" type="bool"/>
913
<field name="SFBD Blend shader" size="1" start="22" type="bool"/>
914
<field name="SFBD Blend shader discard" size="1" start="23" type="bool"/>
915
<field name="Depth function" size="3" start="24" type="Func"/>
916
<field name="Depth write mask" size="1" start="27" type="bool"/>
917
<field name="Fixed-function near discard" size="1" start="28" type="bool"/>
918
<field name="Fixed-function far discard" size="1" start="29" type="bool"/>
919
<field name="Fragment near discard" size="1" start="30" type="bool"/>
920
<field name="Fragment far discard" size="1" start="31" type="bool"/>
921
</struct>
922
923
<struct name="Stencil Mask, Misc" size="1">
924
<field name="Stencil mask front" size="8" start="0" type="uint"/>
925
<field name="Stencil mask back" size="8" start="8" type="uint"/>
926
<field name="Stencil enable" size="1" start="16" type="bool"/>
927
<field name="Alpha-to-coverage" size="1" start="17" type="bool"/>
928
<field name="Alpha-to-coverage Invert" size="1" start="18" type="bool"/>
929
<field name="SFBD Alpha to one" size="1" start="19" type="bool"/>
930
<field name="SFBD Write enable" size="1" start="20" type="bool"/>
931
<field name="Alpha test compare function" size="3" start="21" type="Func"/>
932
<field name="SFBD sRGB" size="1" start="24" type="bool"/>
933
<field name="SFBD Dither disable" size="1" start="25" type="bool"/>
934
<field name="Force seamless cubemaps" size="1" start="26" type="bool"/>
935
<field name="Depth Range 1" size="1" start="28" type="bool"/>
936
<field name="Depth Range 2" size="1" start="29" type="bool"/>
937
<field name="Single-sampled lines" size="1" start="30" type="bool"/>
938
<field name="Point snap" size="1" start="31" type="bool"/>
939
</struct>
940
941
<struct name="Stencil">
942
<field name="Reference Value" size="8" start="0" type="uint"/>
943
<field name="Mask" size="8" start="8" type="uint"/>
944
<field name="Compare Function" size="3" start="16" type="Func"/>
945
<field name="Stencil Fail" size="3" start="19" type="Stencil Op"/>
946
<field name="Depth Fail" size="3" start="22" type="Stencil Op"/>
947
<field name="Depth Pass" size="3" start="25" type="Stencil Op"/>
948
</struct>
949
950
<struct name="LD_VAR Preload" size="1" no-direct-packing="true">
951
<field name="Varying Index" size="5" start="4" type="uint"/>
952
<field name="Register Format" size="2" start="9" type="Message Preload Register Format"/>
953
<field name="Num Components" size="2" start="11" type="uint" modifier="minus(1)" default="1"/>
954
</struct>
955
956
<struct name="VAR_TEX Preload" size="1" no-direct-packing="true">
957
<field name="Varying Index" size="3" start="4" type="uint"/>
958
<field name="Sampler Index" size="2" start="7" type="uint"/>
959
<field name="Register Format" size="2" start="9" type="Message Preload Register Format"/>
960
<field name="Skip" size="1" start="14" type="bool"/>
961
<field name="Zero LOD" size="1" start="15" type="bool"/>
962
</struct>
963
964
<struct name="Message Preload" size="1">
965
<field name="Type" size="4" start="0" type="Message Type"/>
966
<field name="LD_VAR" size="16" start="0" type="LD_VAR Preload"/>
967
<field name="VAR_TEX" size="16" start="0" type="VAR_TEX Preload"/>
968
</struct>
969
970
<struct name="Renderer State" align="64">
971
<field name="Shader" size="128" start="0:0" type="Shader"/>
972
<field name="Properties" size="32" start="4:0" type="Renderer Properties"/>
973
<field name="Depth units" size="32" start="5:0" type="float"/>
974
<field name="Depth factor" size="32" start="6:0" type="float"/>
975
<field name="Depth bias clamp" size="32" start="7:0" type="float"/>
976
<field name="Multisample, Misc" size="32" start="8:0" type="Multisample, Misc"/>
977
<field name="Stencil Mask, Misc" size="32" start="9:0" type="Stencil Mask, Misc"/>
978
<field name="Stencil front" size="32" start="10:0" type="Stencil"/>
979
<field name="Stencil back" size="32" start="11:0" type="Stencil"/>
980
<field name="Preload" size="32" start="12:0" type="Preload"/>
981
<field name="Alpha reference" size="32" start="12:0" type="float"/>
982
<field name="Thread Balancing" size="16" start="13:0" type="uint"/>
983
<field name="SFBD Blend Shader" size="64" start="14:0" type="address"/>
984
<field name="SFBD Blend Equation" size="32" start="14:0" type="Blend Equation"/>
985
<field name="SFBD Blend Constant" size="32" start="15:0" type="float"/>
986
<!-- New in v6, only without message preloading -->
987
<field name="Secondary preload" size="32" start="13:0" type="Preload"/>
988
<field name="Secondary shader" size="64" start="13:0" type="address"/>
989
<!-- New in v7, only with a single shader (XXX: type Message Preload) -->
990
<field name="Message Preload 1" size="16" start="15:0" type="uint"/>
991
<field name="Message Preload 2" size="16" start="15:16" type="uint"/>
992
</struct>
993
994
<struct name="Uniform Buffer" align="8">
995
<field name="Entries" size="12" start="0" type="uint" modifier="minus(1)"/>
996
<field name="Pointer" size="52" start="12" type="address" modifier="shr(4)" element="16" count="Entries"/>
997
</struct>
998
999
<struct name="Viewport" align="32">
1000
<field name="Minimum X" size="32" start="0:0" default="-INFINITY" type="float"/>
1001
<field name="Minimum Y" size="32" start="1:0" default="-INFINITY" type="float"/>
1002
<field name="Maximum X" size="32" start="2:0" default="+INFINITY" type="float"/>
1003
<field name="Maximum Y" size="32" start="3:0" default="+INFINITY" type="float"/>
1004
<field name="Minimum Z" size="32" start="4:0" default="0.0" type="float"/>
1005
<field name="Maximum Z" size="32" start="5:0" default="1.0" type="float"/>
1006
<field name="Scissor Minimum X" size="16" start="6:0" default="0" type="uint"/>
1007
<field name="Scissor Minimum Y" size="16" start="6:16" default="0" type="uint"/>
1008
<field name="Scissor Maximum X" size="16" start="7:0" type="uint"/>
1009
<field name="Scissor Maximum Y" size="16" start="7:16" type="uint"/>
1010
</struct>
1011
1012
<struct name="Local Storage" size="8" align="64">
1013
<field name="TLS Size" size="5" start="0:0" type="uint"/>
1014
<field name="TLS Initial Stack Pointer Offset" size="27" start="0:5" type="uint"/>
1015
<field name="WLS Instances" size="5" start="1:0" type="uint" modifier="log2" prefix="MALI_LOCAL_STORAGE" default="MALI_LOCAL_STORAGE_NO_WORKGROUP_MEM">
1016
<value name="No Workgroup Mem" value="0x80000000"/>
1017
</field>
1018
<field name="WLS Size Base" size="2" start="1:5" type="uint"/>
1019
<field name="WLS Size Scale" size="5" start="1:8" type="uint"/>
1020
<field name="TLS Base Pointer" size="64" start="2:0" type="address"/>
1021
<field name="WLS Base Pointer" size="64" start="4:0" type="address"/>
1022
</struct>
1023
1024
<struct name="Midgard Tiler" size="10">
1025
<field name="Polygon List Size" size="32" start="0:0" type="uint" prefix="MALI_MIDGARD_TILER">
1026
<value name="Minimum Header Size" value="512"/>
1027
</field>
1028
<field name="Hierarchy Mask" size="16" start="1:0" type="uint" prefix="MALI_MIDGARD_TILER">
1029
<value name="Disabled" value="4096"/>
1030
<value name="User" value="4095"/>
1031
<value name="Hierarchy Mask" value="511"/>
1032
</field>
1033
<field name="Polygon List" size="64" start="2:0" type="address"/>
1034
<field name="Polygon List Body" size="64" start="4:0" type="address"/>
1035
<field name="Heap Start" size="64" start="6:0" type="address"/>
1036
<field name="Heap End" size="64" start="8:0" type="address"/>
1037
</struct>
1038
1039
<struct name="Midgard Tiler Weights">
1040
<field name="Weight0" size="32" start="0:0" type="uint"/>
1041
<field name="Weight1" size="32" start="1:0" type="uint"/>
1042
<field name="Weight2" size="32" start="2:0" type="uint"/>
1043
<field name="Weight3" size="32" start="3:0" type="uint"/>
1044
<field name="Weight4" size="32" start="4:0" type="uint"/>
1045
<field name="Weight5" size="32" start="5:0" type="uint"/>
1046
<field name="Weight6" size="32" start="6:0" type="uint"/>
1047
<field name="Weight7" size="32" start="7:0" type="uint"/>
1048
</struct>
1049
1050
<enum name="Color Buffer Internal Format">
1051
<value name="Raw Value" value="0"/>
1052
<value name="R8G8B8A8" value="1"/>
1053
<value name="R10G10B10A2" value="2"/>
1054
<value name="R8G8B8A2" value="3"/>
1055
<value name="R4G4B4A4" value="4"/>
1056
<value name="R5G6B5A0" value="5"/>
1057
<value name="R5G5B5A1" value="6"/>
1058
<value name="RAW8" value="32"/>
1059
<value name="RAW16" value="33"/>
1060
<value name="RAW32" value="34"/>
1061
<value name="RAW64" value="35"/>
1062
<value name="RAW128" value="36"/>
1063
</enum>
1064
1065
<enum name="SFBD Color Format">
1066
<value name="4_32B_CHANNELS" value="0"/>
1067
<value name="3_32B_CHANNELS" value="1"/>
1068
<value name="2_32B_CHANNELS" value="2"/>
1069
<value name="1_32B_CHANNEL" value="3"/>
1070
<value name="4_16B_CHANNELS" value="4"/>
1071
<value name="3_16B_CHANNELS" value="5"/>
1072
<value name="2_16B_CHANNELS" value="6"/>
1073
<value name="1_16B_CHANNEL" value="7"/>
1074
<value name="R8" value="16"/>
1075
<value name="R8G8" value="17"/>
1076
<value name="R8G8B8" value="18"/>
1077
<value name="R8G8B8A8" value="19"/>
1078
<value name="R4G4B4A4" value="20"/>
1079
<value name="R5G6B5" value="21"/>
1080
<value name="R8G8B8_FROM_R8G8B8A2" value="22"/>
1081
<value name="R10G10B10A2" value="24"/>
1082
<value name="A2B10G10R10" value="25"/>
1083
<value name="R5G5B5A1" value="28"/>
1084
<value name="A1B5G5R5" value="29"/>
1085
</enum>
1086
1087
<enum name="MFBD Color Format">
1088
<value name="RAW8" value="0"/>
1089
<value name="RAW16" value="1"/>
1090
<value name="RAW24" value="2"/>
1091
<value name="RAW32" value="3"/>
1092
<value name="RAW48" value="4"/>
1093
<value name="RAW64" value="5"/>
1094
<value name="RAW96" value="6"/>
1095
<value name="RAW128" value="7"/>
1096
<value name="RAW192" value="8"/>
1097
<value name="RAW256" value="9"/>
1098
<value name="RAW384" value="10"/>
1099
<value name="RAW512" value="11"/>
1100
<value name="RAW768" value="12"/>
1101
<value name="RAW1024" value="13"/>
1102
<value name="RAW1536" value="14"/>
1103
<value name="RAW2048" value="15"/>
1104
<value name="R8" value="16"/>
1105
<value name="R8G8" value="17"/>
1106
<value name="R8G8B8" value="18"/>
1107
<value name="R8G8B8A8" value="19"/>
1108
<value name="R4G4B4A4" value="20"/>
1109
<value name="R5G6B5" value="21"/>
1110
<value name="R8G8B8_FROM_R8G8B8A2" value="22"/>
1111
<value name="R10G10B10A2" value="24"/>
1112
<value name="A2B10G10R10" value="25"/>
1113
<value name="R5G5B5A1" value="28"/>
1114
<value name="A1B5G5R5" value="29"/>
1115
<value name="NATIVE" value="31"/>
1116
</enum>
1117
1118
<enum name="Downsampling Accumulation Mode">
1119
<value name="Unsigned normalized integer" value="0"/>
1120
<value name="Signed normalized integer" value="1"/>
1121
</enum>
1122
1123
<enum name="Sample Layout">
1124
<value name="Ordered 4x Grid" value="0"/>
1125
<value name="Rotated 4x Grid" value="1"/>
1126
<value name="D3D 8x Grid" value="2"/>
1127
<value name="D3D 16x Grid" value="3"/>
1128
</enum>
1129
1130
<enum name="ZS Format">
1131
<value name="D16" value="1"/>
1132
<value name="D24" value="2"/>
1133
<value name="D24X8" value="4"/>
1134
<value name="D24S8" value="5"/>
1135
<value name="X8D24" value="6"/>
1136
<value name="S8D24" value="7"/>
1137
<value name="D32_X8X24" value="13"/>
1138
<value name="D32" value="14"/>
1139
<value name="D32_S8X24" value="15"/>
1140
</enum>
1141
1142
<enum name="ZS Preload Format">
1143
<value name="D32_S8X24" value="4"/>
1144
</enum>
1145
1146
<enum name="S Format">
1147
<value name="S8" value="1"/>
1148
<value name="S8X8" value="2"/>
1149
<value name="S8X24" value="3"/>
1150
<value name="X24S8" value="4"/>
1151
<value name="X8S8" value="5"/>
1152
<value name="X32_S8X24" value="6"/>
1153
</enum>
1154
1155
<enum name="Tie-Break Rule">
1156
<value name="0_IN_180_OUT" value="0"/>
1157
<value name="0_OUT_180_IN" value="1"/>
1158
<value name="MINUS_180_IN_0_OUT" value="2"/>
1159
<value name="MINUS_180_OUT_0_IN" value="3"/>
1160
<value name="90_IN_270_OUT" value="4"/>
1161
<value name="90_OUT_270_IN" value="5"/>
1162
<value name="MINUS_90_IN_90_OUT" value="6"/>
1163
<value name="MINUS_90_OUT_90_IN" value="7"/>
1164
</enum>
1165
1166
<struct name="RT Buffer">
1167
<field name="Base" size="64" start="0:0" type="address"/>
1168
<field name="Row Stride" size="32" start="2:0" type="uint"/>
1169
<field name="Surface Stride" size="32" start="3:0" type="uint"/>
1170
</struct>
1171
1172
<struct name="Single-Target Framebuffer Parameters" size="40">
1173
<field name="Internal Format" size="3" start="0:0" default="Raw Value" type="Color Buffer Internal Format"/>
1174
<field name="Sample Count" size="3" start="0:3" type="uint" default="1" modifier="log2"/>
1175
<field name="Swizzle" size="12" start="0:6" type="uint"/>
1176
<field name="Color Writeback Format" size="5" start="0:18" default="4_32B_CHANNELS" type="SFBD Color Format"/>
1177
<field name="MSAA" size="2" start="0:23" default="Single" type="MSAA"/>
1178
<field name="sRGB" size="1" start="0:25" type="bool"/>
1179
<field name="Color Block Format" size="2" start="0:26" type="Block Format"/>
1180
<field name="Dithering Enable" size="1" start="0:28" type="bool"/>
1181
<field name="Clean Pixel Write Enable" size="1" start="0:29" type="bool"/>
1182
<field name="Color Preload Enable" size="1" start="0:30" type="bool"/>
1183
<field name="Color Write Enable" size="1" start="0:31" type="bool"/>
1184
<field name="X Downsampling Scale" size="3" start="1:0" type="uint"/>
1185
<field name="Y Downsampling Scale" size="3" start="1:3" type="uint"/>
1186
<field name="Downsampling Accumulation Mode" size="2" start="1:6" type="Downsampling Accumulation Mode"/>
1187
<field name="Sample Layout" size="2" start="1:8" type="Sample Layout"/>
1188
<field name="Big Endian" size="1" start="1:10" type="bool"/>
1189
<field name="Tie-Break Rule" size="3" start="1:11" type="Tie-Break Rule"/>
1190
<field name="CRC Read Enable" size="1" start="1:14" type="bool"/>
1191
<field name="CRC Write Enable" size="1" start="1:15" type="bool"/>
1192
<field name="ZS Block Format" size="2" start="1:16" type="Block Format"/>
1193
<field name="ZS Format" size="4" start="1:18" type="ZS Format" default="D24S8"/>
1194
<field name="ZS Preload Enable" size="1" start="1:22" type="bool"/>
1195
<field name="ZS Write Enable" size="1" start="1:23" type="bool"/>
1196
<field name="S Block Format" size="2" start="1:24" type="Block Format"/>
1197
<field name="S Format" size="4" start="1:26" type="S Format"/>
1198
<field name="S Write Enable" size="1" start="1:31" type="bool"/>
1199
<field name="Bound Min X" size="16" start="2:0" type="uint"/>
1200
<field name="Bound Min Y" size="16" start="2:16" type="uint"/>
1201
<field name="Bound Max X" size="16" start="3:0" type="uint"/>
1202
<field name="Bound Max Y" size="16" start="3:16" type="uint"/>
1203
<field name="DCD Offset" size="32" start="4:0" type="uint"/>
1204
<field name="CRC Buffer" size="128" start="8:0" type="RT Buffer"/>
1205
<field name="Color Writeback" size="128" start="12:0" type="RT Buffer"/>
1206
<field name="ZS Writeback" size="128" start="16:0" type="RT Buffer"/>
1207
<field name="S Writeback" size="128" start="20:0" type="RT Buffer"/>
1208
<field name="Color Load Address" size="64" start="24:0" type="address"/>
1209
<field name="Color Load Row Stride" size="32" start="26:0" type="uint"/>
1210
<field name="Color Load Surface Stride" size="32" start="27:0" type="uint"/>
1211
<field name="Clear Color 0" size="32" start="24:0" type="uint"/>
1212
<field name="Clear Color 1" size="32" start="25:0" type="uint"/>
1213
<field name="Clear Color 2" size="32" start="26:0" type="uint"/>
1214
<field name="Clear Color 3" size="32" start="27:0" type="uint"/>
1215
<field name="ZS Load Address" size="64" start="28:0" type="address"/>
1216
<field name="ZS Load Row Stride" size="32" start="30:0" type="uint"/>
1217
<field name="ZS Load Surface Stride" size="32" start="31:0" type="uint"/>
1218
<field name="Z Clear" size="32" start="28:0" type="float"/>
1219
<field name="S Clear" size="8" start="32:0" type="uint"/>
1220
</struct>
1221
1222
<struct name="Single-Target Framebuffer Padding 1" size="6">
1223
</struct>
1224
1225
<struct name="Single-Target Framebuffer Padding 2" size="8">
1226
</struct>
1227
1228
<aggregate name="Single-Target Framebuffer" size="320" align="64">
1229
<section name="Local Storage" offset="0" type="Local Storage"/>
1230
<section name="Parameters" offset="32" type="Single-Target Framebuffer Parameters"/>
1231
<section name="Tiler" offset="192" type="Midgard Tiler"/>
1232
<section name="Padding 1" offset="232" type="Single-Target Framebuffer Padding 1"/>
1233
<section name="Tiler Weights" offset="256" type="Midgard Tiler Weights"/>
1234
<section name="Padding 2" offset="288" type="Single-Target Framebuffer Padding 2"/>
1235
</aggregate>
1236
1237
<enum name="Sample Pattern">
1238
<value name="Single-sampled" value="0"/>
1239
<value name="Ordered 4x Grid" value="1"/>
1240
<value name="Rotated 4x Grid" value="2"/>
1241
<value name="D3D 8x Grid" value="3"/>
1242
<value name="D3D 16x Grid" value="4"/>
1243
</enum>
1244
1245
<enum name="Z Internal Format">
1246
<value name="D16" value="0"/>
1247
<value name="D24" value="1"/>
1248
<value name="D32" value="2"/>
1249
</enum>
1250
1251
<enum name="FBD Tag">
1252
<value name="IS_MFBD" value="1"/>
1253
<value name="HAS_ZS_RT" value="2"/>
1254
<value name="MASK" value="63"/>
1255
</enum>
1256
1257
<struct name="Multi-Target Framebuffer Parameters">
1258
<field name="Width" size="16" start="0:0" type="uint" modifier="minus(1)"/>
1259
<field name="Height" size="16" start="0:16" type="uint" modifier="minus(1)"/>
1260
<field name="Bound Min X" size="16" start="1:0" type="uint"/>
1261
<field name="Bound Min Y" size="16" start="1:16" type="uint"/>
1262
<field name="Bound Max X" size="16" start="2:0" type="uint"/>
1263
<field name="Bound Max Y" size="16" start="2:16" type="uint"/>
1264
<field name="Sample Count" size="3" start="3:0" type="uint" default="1" modifier="log2"/>
1265
<field name="Sample Pattern" size="3" start="3:3" type="Sample Pattern"/>
1266
<field name="Tie-Break Rule" size="3" start="3:6" type="Tie-Break Rule"/>
1267
<field name="Effective Tile Size" size="4" start="3:9" type="uint" modifier="log2"/>
1268
<field name="X Downsampling Scale" size="3" start="3:13" type="uint"/>
1269
<field name="Y Downsampling Scale" size="3" start="3:16" type="uint"/>
1270
<field name="Render Target Count" size="4" start="3:19" type="uint" modifier="minus(1)"/>
1271
<field name="Color Buffer Allocation" size="8" start="3:24" type="uint" modifier="shr(10)"/>
1272
<field name="S Clear" size="8" start="4:0" type="uint"/>
1273
<field name="S Write Enable" size="1" start="4:8" type="bool"/>
1274
<field name="S Preload Enable" size="1" start="4:9" type="bool"/>
1275
<field name="S Unload Enable" size="1" start="4:10" type="bool"/>
1276
<field name="Z Internal Format" size="2" start="4:16" type="Z Internal Format"/>
1277
<field name="Z Write Enable" size="1" start="4:18" type="bool"/>
1278
<field name="Z Preload Enable" size="1" start="4:19" type="bool"/>
1279
<field name="Z Unload Enable" size="1" start="4:20" type="bool"/>
1280
<field name="Has ZS CRC Extension" size="1" start="4:21" type="bool"/>
1281
<field name="CRC Read Enable" size="1" start="4:30" type="bool"/>
1282
<field name="CRC Write Enable" size="1" start="4:31" type="bool"/>
1283
<field name="Z Clear" size="32" start="5:0" type="float"/>
1284
</struct>
1285
1286
<struct name="ZS CRC Extension" align="64">
1287
<field name="CRC Base" size="64" start="0:0" type="address"/>
1288
<field name="CRC Row Stride" size="32" start="2:0" type="uint"/>
1289
<field name="ZS Write Format" size="4" start="3:0" type="ZS Format"/>
1290
<field name="ZS Block Format" size="2" start="3:4" type="Block Format"/>
1291
<field name="ZS Block Format v7" size="4" start="3:4" type="Block Format v7"/>
1292
<field name="ZS MSAA" size="2" start="3:6" default="Single" type="MSAA"/>
1293
<field name="ZS MSAA v7" size="2" start="3:8" default="Single" type="MSAA"/>
1294
<field name="ZS Big Endian" size="1" start="3:8" type="bool"/>
1295
<field name="ZS Clean Pixel Write Enable" size="1" start="3:10" type="bool"/>
1296
<field name="CRC Render Target" size="4" start="3:11" type="uint"/>
1297
<field name="S Write Format" size="4" start="3:16" type="S Format"/>
1298
<field name="S Block Format" size="2" start="3:20" type="Block Format"/>
1299
<field name="S Block Format v7" size="4" start="3:20" type="Block Format v7"/>
1300
<field name="S MSAA" size="2" start="3:22" default="Single" type="MSAA"/>
1301
<field name="S MSAA v7" size="2" start="3:24" default="Single" type="MSAA"/>
1302
<field name="ZS Preload Format" size="4" start="3:28" type="ZS Preload Format"/>
1303
<field name="ZS Writeback Base" size="64" start="4:0" type="address"/>
1304
<field name="ZS Writeback Row Stride" size="32" start="6:0" type="uint"/>
1305
<field name="ZS Writeback Surface Stride" size="32" start="7:0" type="uint"/>
1306
<field name="S Writeback Base" size="64" start="8:0" type="address"/>
1307
<field name="S Writeback Row Stride" size="32" start="10:0" type="uint"/>
1308
<field name="S Writeback Surface Stride" size="32" start="11:0" type="uint"/>
1309
<field name="ZS AFBC Header" size="64" start="4:0" type="address"/>
1310
<field name="ZS AFBC Row Stride" size="13" start="6:0" type="uint"/>
1311
<field name="ZS AFBC Chunk Size" size="12" start="7:0" type="uint"/>
1312
<field name="ZS AFBC Sparse" size="1" start="7:16" type="bool"/>
1313
<field name="ZS AFBC Body" size="64" start="8:0" type="address"/>
1314
<field name="ZS AFBC Body Size" size="32" start="10:0" type="uint"/>
1315
<field name="ZS Preload Base" size="64" start="12:0" type="address"/>
1316
<field name="ZS Preload Row Stride" size="32" start="14:0" type="uint"/>
1317
<field name="ZS Preload Surface Stride" size="32" start="15:0" type="uint"/>
1318
<field name="CRC Clear Color" size="64" start="12:0" type="uint"/>
1319
</struct>
1320
1321
<enum name="RT Endianness">
1322
<value name="Little Endian" value="0"/>
1323
<value name="Big Endian 2B" value="1"/>
1324
<value name="Big Endian 4B" value="2"/>
1325
<value name="Big Endian 8B" value="3"/>
1326
</enum>
1327
1328
<enum name="YUV Conv K6">
1329
<value name="0" value="0"/>
1330
<value name="16" value="1"/>
1331
</enum>
1332
1333
<enum name="YUV Conv K7 Clamp">
1334
<value name="MINUS_128_TO_127" value="0"/>
1335
<value name="MINUS_112_TO_111" value="1"/>
1336
<value name="0_TO_255" value="2"/>
1337
<value name="16_TO_239" value="3"/>
1338
</enum>
1339
1340
<enum name="YUV Conv K8">
1341
<value name="220" value="0"/>
1342
<value name="256" value="1"/>
1343
</enum>
1344
1345
<struct name="Render Target Midgard Overlay" size="16">
1346
<field name="Writeback Endianness" size="2" start="1:8" type="RT Endianness"/>
1347
<field name="Writeback Block Format" size="2" start="1:10" type="Block Format"/>
1348
<field name="Writeback Sampling Mode" size="2" start="1:29" type="Downsampling Accumulation Mode"/>
1349
<field name="Preload Enable" size="1" start="2:0" type="bool"/>
1350
<field name="Unload Enable" size="1" start="2:1" type="bool"/>
1351
<field name="Preload Format" size="5" start="2:3" type="MFBD Color Format"/>
1352
<field name="Preload Endianness" size="2" start="2:8" type="RT Endianness"/>
1353
<field name="Preload Block Format" size="4" start="2:10" type="Block Format"/>
1354
<field name="Preload MSAA" size="2" start="2:14" type="MSAA"/>
1355
</struct>
1356
1357
<struct name="Render Target Midgard YUV Overlay" size="16">
1358
<field name="Conv K5" size="8" start="2:16" type="uint"/>
1359
<field name="Conv K6" size="1" start="2:24" type="YUV Conv K6"/>
1360
<field name="Conv K7 Clamp" size="2" start="2:25" type="YUV Conv K7 Clamp"/>
1361
<field name="Conv K8" size="1" start="2:27" type="YUV Conv K8"/>
1362
<field name="Conv Disable" size="1" start="2:31" type="bool"/>
1363
<field name="Conv K1" size="8" start="3:0" type="uint"/>
1364
<field name="Conv K2" size="8" start="3:8" type="uint"/>
1365
<field name="Conv K3" size="8" start="3:16" type="uint"/>
1366
<field name="Conv K4" size="8" start="3:24" type="uint"/>
1367
</struct>
1368
1369
<struct name="Render Target Bifrost YUV Overlay" size="16">
1370
<field name="Swizzle" size="3" start="2:16" type="YUV Swizzle"/>
1371
<field name="Full Range" size="1" start="2:20" type="bool"/>
1372
<field name="Conversion Mode" size="4" start="2:21" type="YUV Conversion Mode"/>
1373
<field name="Cr Siting" size="3" start="2:25" type="YUV Cr Siting"/>
1374
<field name="Unsigned Cr Range" size="1" start="2:28" type="bool"/>
1375
</struct>
1376
1377
<struct name="Render Target Bifrost v7 Overlay" size="16">
1378
<field name="Writeback Block Format" size="4" start="1:8" type="Block Format v7"/>
1379
<field name="Dithered Clear" size="1" start="0:25" type="bool"/>
1380
</struct>
1381
1382
<struct name="Render Target Bifrost v6 Overlay" size="16">
1383
<field name="Writeback Endianness" size="2" start="1:8" type="RT Endianness"/>
1384
<field name="Writeback Block Format" size="2" start="1:10" type="Block Format"/>
1385
<field name="Dithered Clear" size="1" start="0:25" type="bool"/>
1386
</struct>
1387
1388
<struct name="Render Target YUV Overlay" size="16">
1389
<field name="Plane 0 Base" size="64" start="4:0" type="address"/>
1390
<field name="Plane 1 Base" size="64" start="6:0" type="address"/>
1391
<field name="Plane 2 Base" size="64" start="8:0" type="address"/>
1392
<field name="Plane 0 Stride" size="32" start="10:0" type="uint"/>
1393
<field name="Plane 1 2 Stride" size="32" start="11:0" type="uint"/>
1394
</struct>
1395
1396
<struct name="Render Target AFBC Overlay" size="16">
1397
<field name="Header" size="64" start="4:0" type="address"/>
1398
<field name="Row Stride" size="13" start="6:0" type="uint"/>
1399
<field name="Chunk Size" size="12" start="7:0" type="uint"/>
1400
<field name="YUV Transform Enable" size="1" start="7:17" type="bool"/>
1401
<field name="Body" size="64" start="8:0" type="address"/>
1402
<field name="Body Size" size="32" start="10:0" type="uint"/>
1403
</struct>
1404
1405
<struct name="Render Target Midgard AFBC Overlay" size="16">
1406
<field name="Sparse" size="1" start="7:16" type="bool"/>
1407
</struct>
1408
1409
<struct name="Render Target Bifrost AFBC Overlay" size="16">
1410
<field name="AFBC Split Block Enable" size="1" start="7:18" type="bool"/>
1411
<field name="AFBC Wide Block Enable" size="1" start="7:19" type="bool"/>
1412
1413
<!-- Flag in v7 to effectively disable AFBC as a race condition workaround
1414
when in-place rendering is used with the AFBC block size differing
1415
from the effective tile size (XXX: does v6 need a different workaround?) -->
1416
<field name="Reverse Issue Order" size="1" start="7:20" type="bool"/>
1417
</struct>
1418
1419
<struct name="RT Clear">
1420
<field name="Color 0" size="32" start="0:0" type="uint"/>
1421
<field name="Color 1" size="32" start="1:0" type="uint"/>
1422
<field name="Color 2" size="32" start="2:0" type="uint"/>
1423
<field name="Color 3" size="32" start="3:0" type="uint"/>
1424
</struct>
1425
1426
<struct name="Render Target" align="64">
1427
<field name="Midgard" size="512" start="0:0" type="Render Target Midgard Overlay"/>
1428
<field name="Bifrost v6" size="512" start="0:0" type="Render Target Bifrost v6 Overlay"/>
1429
<field name="Bifrost v7" size="512" start="0:0" type="Render Target Bifrost v7 Overlay"/>
1430
<field name="YUV" size="512" start="0:0" type="Render Target YUV Overlay"/>
1431
<field name="Midgard YUV" size="512" start="0:0" type="Render Target Midgard YUV Overlay"/>
1432
<field name="Bifrost YUV" size="512" start="0:0" type="Render Target Bifrost YUV Overlay"/>
1433
<field name="AFBC" size="512" start="0:0" type="Render Target AFBC Overlay"/>
1434
<field name="Midgard AFBC" size="512" start="0:0" type="Render Target Midgard AFBC Overlay"/>
1435
<field name="Bifrost AFBC" size="512" start="0:0" type="Render Target Bifrost AFBC Overlay"/>
1436
<field name="Internal Buffer Offset" size="12" start="0:4" type="uint" modifier="shr(4)"/>
1437
<field name="YUV Enable" size="1" start="0:24" type="bool"/>
1438
<field name="Internal Format" size="6" start="0:26" type="Color Buffer Internal Format"/>
1439
<field name="Write Enable" size="1" start="1:0" type="bool"/>
1440
<field name="Writeback Format" size="5" start="1:3" type="MFBD Color Format"/>
1441
<field name="Writeback MSAA" size="2" start="1:12" type="MSAA"/>
1442
<field name="sRGB" size="1" start="1:14" type="bool"/>
1443
<field name="Dithering Enable" size="1" start="1:15" type="bool"/>
1444
<field name="Swizzle" size="12" start="1:16" type="uint"/>
1445
<field name="Clean Pixel Write Enable" size="1" start="1:31" type="bool"/>
1446
<field name="RGB" size="128" start="8:0" type="RT Buffer"/>
1447
<field name="Midgard Preload" size="128" start="12:0" type="RT Buffer"/>
1448
<field name="Clear" size="128" start="12:0" type="RT Clear"/>
1449
</struct>
1450
1451
<enum name="Pre Post Frame Shader Mode">
1452
<value name="Never" value="0"/>
1453
<value name="Always" value="1"/>
1454
<value name="Intersect" value="2"/>
1455
<value name="Early ZS always" value="3"/>
1456
</enum>
1457
1458
<struct name="Bifrost Framebuffer Parameters">
1459
<field name="Pre Frame 0" size="3" start="0:0" type="Pre Post Frame Shader Mode"/>
1460
<field name="Pre Frame 1" size="3" start="0:3" type="Pre Post Frame Shader Mode"/>
1461
<field name="Post Frame" size="3" start="0:6" type="Pre Post Frame Shader Mode"/>
1462
<field name="Sample Locations" size="64" start="4:0" type="address"/>
1463
<field name="Frame Shader DCDs" size="64" start="6:0" type="address"/>
1464
</struct>
1465
1466
<struct name="Bifrost Tiler Heap" align="64">
1467
<field name="Size" size="32" start="1:0" type="uint" modifier="align(4096)"/>
1468
<field name="Base" size="64" start="2:0" type="address"/>
1469
<field name="Bottom" size="64" start="4:0" type="address"/>
1470
<field name="Top" size="64" start="6:0" type="address"/>
1471
</struct>
1472
1473
<struct name="Bifrost Tiler Weights" size="8">
1474
<field name="Weight0" size="16" start="0:16" type="uint"/>
1475
<field name="Weight1" size="16" start="1:16" type="uint"/>
1476
<field name="Weight2" size="16" start="2:16" type="uint"/>
1477
<field name="Weight3" size="16" start="3:16" type="uint"/>
1478
<field name="Weight4" size="16" start="4:16" type="uint"/>
1479
<field name="Weight5" size="16" start="5:16" type="uint"/>
1480
<field name="Weight6" size="16" start="6:16" type="uint"/>
1481
<field name="Weight7" size="16" start="7:16" type="uint"/>
1482
</struct>
1483
1484
<struct name="Bifrost Tiler State" size="16">
1485
<field name="Word0" size="32" start="0:0" type="uint"/>
1486
<field name="Word1" size="32" start="1:0" type="uint"/>
1487
<field name="Word2" size="32" start="2:0" type="uint"/>
1488
<field name="Word3" size="32" start="3:0" type="uint"/>
1489
<field name="Word4" size="32" start="4:0" type="uint"/>
1490
<field name="Word5" size="32" start="5:0" type="uint"/>
1491
<field name="Word6" size="32" start="6:0" type="uint"/>
1492
<field name="Word7" size="32" start="7:0" type="uint"/>
1493
<field name="Word8" size="32" start="8:0" type="uint"/>
1494
<field name="Word9" size="32" start="9:0" type="uint"/>
1495
<field name="Word10" size="32" start="10:0" type="uint"/>
1496
<field name="Word11" size="32" start="11:0" type="uint"/>
1497
<field name="Word12" size="32" start="12:0" type="uint"/>
1498
<field name="Word13" size="32" start="13:0" type="uint"/>
1499
<field name="Word14" size="32" start="14:0" type="uint"/>
1500
<field name="Word15" size="32" start="15:0" type="uint"/>
1501
</struct>
1502
1503
<struct name="Bifrost Tiler" size="48" align="64">
1504
<field name="Polygon List" size="64" start="0:0" type="address"/>
1505
<field name="Hierarchy Mask" size="13" start="2:0" type="uint"/>
1506
<field name="Sample Pattern" size="3" start="2:13" type="Sample Pattern"/>
1507
<field name="Update Cost Table" size="1" start="2:16" type="bool"/>
1508
<field name="FB Width" size="16" start="3:0" type="uint" modifier="minus(1)"/>
1509
<field name="FB Height" size="16" start="3:16" type="uint" modifier="minus(1)"/>
1510
<field name="Heap" size="64" start="6:0" type="address"/>
1511
<field name="Weights" size="256" start="8:0" type="Bifrost Tiler Weights"/>
1512
<field name="State" size="512" start="32:0" type="Bifrost Tiler State"/>
1513
</struct>
1514
1515
<struct name="Bifrost Tiler Pointer">
1516
<field name="Address" size="64" start="0:0" type="address"/>
1517
</struct>
1518
1519
<struct name="Bifrost Framebuffer Padding" size="16">
1520
</struct>
1521
1522
<aggregate name="Multi-Target Framebuffer" align="64">
1523
<section name="Local Storage" offset="0" type="Local Storage"/>
1524
<section name="Bifrost Parameters" offset="0" type="Bifrost Framebuffer Parameters"/>
1525
<section name="Parameters" offset="32" type="Multi-Target Framebuffer Parameters"/>
1526
<section name="Tiler" offset="56" type="Midgard Tiler"/>
1527
<section name="Tiler Weights" offset="96" type="Midgard Tiler Weights"/>
1528
<section name="Bifrost Tiler Pointer" offset="56" type="Bifrost Tiler Pointer"/>
1529
<section name="Bifrost Padding" offset="64" type="Bifrost Framebuffer Padding"/>
1530
</aggregate>
1531
1532
<struct name="Job Header" align="64">
1533
<field name="Exception Status" size="32" start="0:0" type="uint"/>
1534
<field name="First Incomplete Task" size="32" start="1:0" type="uint"/>
1535
<field name="Fault Pointer" size="64" start="2:0" type="address"/>
1536
<field name="Is 64b" size="1" start="4:0" type="bool" default="true"/>
1537
<field name="Type" size="7" start="4:1" type="Job Type"/>
1538
<field name="Barrier" size="1" start="4:8" type="bool"/>
1539
<field name="Invalidate Cache" size="1" start="4:9" type="bool"/>
1540
<field name="Suppress Prefetch" size="1" start="4:11" type="bool"/>
1541
<field name="Enable Texture Mapper" size="1" start="4:12" type="bool"/>
1542
<field name="Relax Dependency 1" size="1" start="4:14" type="bool"/>
1543
<field name="Relax Dependency 2" size="1" start="4:15" type="bool"/>
1544
<field name="Index" size="16" start="4:16" type="uint"/>
1545
<field name="Dependency 1" size="16" start="5:0" type="uint"/>
1546
<field name="Dependency 2" size="16" start="5:16" type="uint"/>
1547
<field name="Next" size="64" start="6:0" type="address"/>
1548
</struct>
1549
1550
<struct name="Fragment Job Payload" size="8">
1551
<field name="Bound Min X" size="12" start="0:0" type="uint"/>
1552
<field name="Bound Min Y" size="12" start="0:16" type="uint"/>
1553
<field name="Bound Max X" size="12" start="1:0" type="uint"/>
1554
<field name="Bound Max Y" size="12" start="1:16" type="uint"/>
1555
<field name="Has Tile Enable Map" size="1" start="1:31" type="bool"/>
1556
<field name="Framebuffer" size="64" start="2:0" type="address"/>
1557
<field name="Tile Enable Map" size="64" start="4:0" type="address"/>
1558
<field name="Tile Enable Map Row Stride" size="8" start="6:0" type="uint"/>
1559
</struct>
1560
1561
<aggregate name="Fragment Job" align="64">
1562
<section name="Header" offset="0" type="Job Header"/>
1563
<section name="Payload" offset="32" type="Fragment Job Payload"/>
1564
</aggregate>
1565
1566
<enum name="Write Value Type">
1567
<value name="Cycle Counter" value="1"/>
1568
<value name="System Timestamp" value="2"/>
1569
<value name="Zero" value="3"/>
1570
<value name="Immediate 8" value="4"/>
1571
<value name="Immediate 16" value="5"/>
1572
<value name="Immediate 32" value="6"/>
1573
<value name="Immediate 64" value="7"/>
1574
</enum>
1575
1576
<struct name="Write Value Job Payload">
1577
<field name="Address" size="64" start="0:0" type="address"/>
1578
<field name="Type" size="32" start="2:0" type="Write Value Type"/>
1579
<field name="Immediate Value" size="64" start="4:0" type="uint"/>
1580
</struct>
1581
1582
<struct name="Cache Flush Job Payload" size="2">
1583
<field name="Clean Shader Core LS" size="1" start="0:0" type="bool"/>
1584
<field name="Invalidate Shader Core LS" size="1" start="0:1" type="bool"/>
1585
<field name="Invalidate Shader Core Other" size="1" start="0:2" type="bool"/>
1586
<field name="Job Manager Clean" size="1" start="0:16" type="bool"/>
1587
<field name="Job Manager Invalidate" size="1" start="0:17" type="bool"/>
1588
<field name="Tiler Clean" size="1" start="0:24" type="bool"/>
1589
<field name="Tiler Invalidate" size="1" start="0:25" type="bool"/>
1590
<field name="L2 Clean" size="1" start="1:0" type="bool"/>
1591
<field name="L2 Invalidate" size="1" start="1:1" type="bool"/>
1592
</struct>
1593
1594
<aggregate name="Write Value Job" align="64">
1595
<section name="Header" offset="0" type="Job Header"/>
1596
<section name="Payload" offset="32" type="Write Value Job Payload"/>
1597
</aggregate>
1598
1599
<aggregate name="Cache Flush Job" align="64">
1600
<section name="Header" offset="0" type="Job Header"/>
1601
<section name="Payload" offset="32" type="Cache Flush Job Payload"/>
1602
</aggregate>
1603
1604
<struct name="Compute Job Parameters" size="6">
1605
<field name="Job Task Split" size="4" start="0:26" type="uint"/>
1606
</struct>
1607
1608
<!-- Compute job also covers vertex and geometry operations -->
1609
<aggregate name="Compute Job" align="64">
1610
<section name="Header" offset="0" type="Job Header"/>
1611
<section name="Invocation" offset="32" type="Invocation"/>
1612
<section name="Parameters" offset="40" type="Compute Job Parameters"/>
1613
<section name="Draw" offset="64" type="Draw"/>
1614
<section name="Draw Padding" offset="184" type="Draw Padding"/>
1615
</aggregate>
1616
1617
<struct name="Primitive Size">
1618
<field name="Constant" size="32" start="0:0" type="float"/>
1619
<field name="Size Array" size="64" start="0:0" type="uint"/>
1620
</struct>
1621
1622
<aggregate name="Midgard Tiler Job" size="192" align="64">
1623
<section name="Header" offset="0" type="Job Header"/>
1624
<section name="Invocation" offset="32" type="Invocation"/>
1625
<section name="Primitive" offset="40" type="Primitive"/>
1626
<section name="Draw" offset="64" type="Draw"/>
1627
<section name="Primitive Size" offset="184" type="Primitive Size"/>
1628
</aggregate>
1629
1630
<struct name="Bifrost Tiler Job Padding" size="12">
1631
</struct>
1632
1633
<aggregate name="Bifrost Tiler Job" size="256" align="64">
1634
<section name="Header" offset="0" type="Job Header"/>
1635
<section name="Invocation" offset="32" type="Invocation"/>
1636
<section name="Primitive" offset="40" type="Primitive"/>
1637
<section name="Primitive Size" offset="64" type="Primitive Size"/>
1638
<section name="Tiler" offset="72" type="Bifrost Tiler Pointer"/>
1639
<section name="Padding" offset="80" type="Bifrost Tiler Job Padding"/>
1640
<section name="Draw" offset="128" type="Draw"/>
1641
<section name="Draw Padding" offset="248" type="Draw Padding"/>
1642
</aggregate>
1643
1644
<aggregate name="Bifrost Indexed Vertex Job" size="384" align="64">
1645
<section name="Header" offset="0" type="Job Header"/>
1646
<section name="Invocation" offset="32" type="Invocation"/>
1647
<section name="Primitive" offset="40" type="Primitive"/>
1648
<section name="Primitive Size" offset="64" type="Primitive Size"/>
1649
<section name="Tiler" offset="72" type="Bifrost Tiler Pointer"/>
1650
<section name="Padding" offset="80" type="Bifrost Tiler Job Padding"/>
1651
<section name="Fragment Draw" offset="128" type="Draw"/>
1652
<section name="Fragment Draw Padding" offset="248" type="Draw Padding"/>
1653
<section name="Vertex Draw" offset="256" type="Draw"/>
1654
<section name="Vertex Draw Padding" offset="376" type="Draw Padding"/>
1655
</aggregate>
1656
</panxml>
1657
1658