summaryrefslogtreecommitdiffstats
path: root/src/broadcom/cle/v3d_packet_v21.xml
blob: df838a7084579db19d0d498231c7056f2eaa79e1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
<vcxml gen="2.1" min_ver="21" max_ver="21">

  <enum name="Compare Function" prefix="V3D_COMPARE_FUNC">
    <value name="NEVER" value="0"/>
    <value name="LESS" value="1"/>
    <value name="EQUAL" value="2"/>
    <value name="LEQUAL" value="3"/>
    <value name="GREATER" value="4"/>
    <value name="NOTEQUAL" value="5"/>
    <value name="GEQUAL" value="6"/>
    <value name="ALWAYS" value="7"/>
  </enum>

  <enum name="Primitive" prefix="V3D_PRIM">
    <value name="POINTS" value="0"/>
    <value name="LINES" value="1"/>
    <value name="LINE_LOOP" value="2"/>
    <value name="LINE_STRIP" value="3"/>
    <value name="TRIANGLES" value="4"/>
    <value name="TRIANGLE_STRIP" value="5"/>
    <value name="TRIANGLE_FAN" value="6"/>
  </enum>

  <packet name="Halt" code="0"/>
  <packet name="NOP" code="1"/>
  <packet name="Flush" code="4" cl="B"/>
  <packet name="Flush All State" code="5" cl="B"/>
  <packet name="Start Tile Binning" code="6" cl="B"/>
  <packet name="Increment Semaphore" code="7"/>
  <packet name="Wait on Semaphore" code="8"/>
  <packet name="Branch" code="16">
    <field name="Address" size="32" start="0" type="address"/>
  </packet>
  <packet name="Branch to sub-list" code="17">
    <field name="Address" size="32" start="0" type="address"/>
  </packet>
  <packet name="Return from sub-list" code="18"/>

  <packet name="Store Multi-sample Resolved Tile Color Buffer" code="24" cl="R"/>
  <packet name="Store Multi-sample Resolved Tile Color Buffer and EOF" code="25" cl="R"/>

  <packet name="Store Full Resolution Tile Buffer" cl="R" code="26">
    <field name="Address" size="28" start="4" type="address"/>
    <field name="Last Tile" size="1" start="3" type="bool"/>
    <field name="Disable Clear on Write" size="1" start="2" type="bool"/>
    <field name="Disable Z/Stencil Buffer write" size="1" start="1" type="bool"/>
    <field name="Disable Color Buffer write" size="1" start="0" type="bool"/>
  </packet>

  <packet name="Re-load Full Resolution Tile Buffer" cl="R" code="27">
    <field name="Address" size="28" start="4" type="address"/>
    <field name="Disable Z/Stencil Buffer read" size="1" start="1" type="bool"/>
    <field name="Disable Color Buffer read" size="1" start="0" type="bool"/>
  </packet>

  <packet name="Store Tile Buffer General" code="28" cl="R">
    <field name="Memory base address of frame/tile dump buffer" size="28" start="20" type="address"/>
    <field name="Last Tile of Frame" size="1" start="19" type="bool"/>
    <field name="Disable VG-Mask buffer dump" size="1" start="18" type="bool"/>
    <field name="Disable Z/Stencil buffer dump" size="1" start="17" type="bool"/>
    <field name="Disable Color buffer dump" size="1" start="16" type="bool"/>
    <field name="Disable VG-Mask buffer clear on store/dump" size="1" start="15" type="bool"/>
    <field name="Disable Z/Stencil buffer clear on store/dump" size="1" start="14" type="bool"/>
    <field name="Disable Color buffer clear on store/dump" size="1" start="13" type="bool"/>

    <field name="Pixel Color Format" size="2" start="8" type="uint">
      <value name="rgba8888" value="0"/>
      <value name="bgr565 dithered" value="1"/>
      <value name="bgr565 no dither" value="2"/>
    </field>

    <field name="Mode" size="2" start="6" type="uint">
      <value name="Sample 0" value="0"/>
      <value name="Decimate x4" value="1"/>
      <value name="Decimate x16" value="2"/>
    </field>

    <field name="Format" size="2" start="4" type="uint">
      <value name="Raster" value="0"/>
      <value name="T" value="1"/>
      <value name="LT" value="2"/>
    </field>

    <field name="Buffer to Store" size="3" start="0" type="uint">
      <value name="None" value="0"/>
      <value name="Color" value="1"/>
      <value name="Z/stencil" value="2"/>
      <value name="Z" value="3"/>
      <value name="VG-Mask" value="4"/>
    </field>
  </packet>

  <packet name="Load Tile Buffer General" code="29" cl="R">
    <field name="Memory base address of frame/tile dump buffer" size="28" start="20" type="address"/>
    <field name="Disable VG-Mask buffer load" size="1" start="18" type="bool"/>
    <field name="Disable Z/Stencil buffer load" size="1" start="17" type="bool"/>
    <field name="Disable Color buffer load" size="1" start="16" type="bool"/>

    <field name="Pixel Color Format" size="2" start="8" type="uint">
      <value name="rgba8888" value="0"/>
      <value name="bgr565 dithered" value="1"/>
      <value name="bgr565 no dither" value="2"/>
    </field>

    <field name="Mode" size="2" start="6" type="uint">
      <value name="Sample 0" value="0"/>
      <value name="Decimate x4" value="1"/>
      <value name="Decimate x16" value="2"/>
    </field>

    <field name="Format" size="2" start="4" type="uint">
      <value name="Raster" value="0"/>
      <value name="T" value="1"/>
      <value name="LT" value="2"/>
    </field>

    <field name="Buffer to Store" size="3" start="0" type="uint">
      <value name="None" value="0"/>
      <value name="Color" value="1"/>
      <value name="Z/stencil" value="2"/>
      <value name="Z" value="3"/>
      <value name="VG-Mask" value="4"/>
    </field>
  </packet>

  <packet name="Indexed Primitive List" code="32">
    <field name="Maximum Index" size="32" start="72" type="uint"/>
    <field name="Address of Indices List" size="32" start="40" type="uint"/>
    <field name="Length" size="32" start="8" type="uint"/>
    <field name="Index type" size="4" start="4" type="uint">
      <value name="8-bit" value="0"/>
      <value name="16-bit" value="1"/>
    </field>
    <field name="Primitive mode" size="4" start="0" type="Primitive"/>
  </packet>

  <packet name="Vertex Array Primitives" code="33">
    <field name="Index of First Vertex" size="32" start="40" type="uint"/>
    <field name="Length" size="32" start="8" type="uint"/>
    <field name="Primitive mode" size="4" start="0" type="Primitive"/>
  </packet>

  <packet name="Primitive List Format" cl="R" code="56">
    <field name="Data Type" size="4" start="4" type="uint">
      <value name="16-bit index" value="1"/>
      <value name="32-bit x/y" value="3"/>
    </field>

    <field name="Primitive Type" size="4" start="0" type="uint">
      <value name="Points List" value="0"/>
      <value name="Lines List" value="1"/>
      <value name="Triangles List" value="2"/>
      <value name="RHY List" value="3"/>
    </field>
  </packet>

  <packet name="GL Shader State" code="64">
    <!-- The address field will be filled in by kernel validation code. -->
    <field name="Address" size="28" start="0" type="uint"/>
    <field name="Extended shader record" size="1" start="3" type="bool"/>
    <field name="Number of attribute arrays" size="3" start="0" type="uint"/>
  </packet>

  <packet name="Clear Colors" cl="R" code="114">
    <field name="Clear Stencil" size="8" start="96" type="uint"/>
    <field name="Clear VG Mask" size="8" start="88" type="uint"/>
    <field name="Clear ZS" size="24" start="64" type="uint"/>
    <field name="Clear Color" size="64" start="0" type="uint"/>
  </packet>

  <packet name="Configuration Bits" code="96">
    <field name="Early Z updates enable" size="1" start="17" type="bool"/>
    <field name="Early Z enable" size="1" start="16" type="bool"/>
    <field name="Z updates enable" size="1" start="15" type="bool"/>
    <field name="Depth-Test Function" size="3" start="12" type="Compare Function"/>
    <field name="Coverage Read Mode" size="1" start="11" type="uint"/>
    <!-- add values -->
    <field name="Coverage Pipe Select" size="1" start="8" type="bool"/>
    <field name="Rasteriser Oversample Mode" size="2" start="6" type="uint"/>
    <!-- add values -->
    <field name="Coverage Read Type" size="1" start="5" type="uint"/>
    <!-- add values -->
    <field name="Antialiased Points and Lines" size="1" start="4" type="bool"/>
    <field name="Enable Depth Offset" size="1" start="3" type="bool"/>
    <field name="Clockwise Primitives" size="1" start="2" type="bool"/>
    <field name="Enable Reverse Facing Primitive" size="1" start="1" type="bool"/>
    <field name="Enable Forward Facing Primitive" size="1" start="0" type="bool"/>
  </packet>

  <packet name="Flat Shade Flags" code="97">
    <field name="Flat-shading Flags" size="32" start="0" type="uint"/>
  </packet>

  <packet name="Point size" code="98">
    <field name="Point Size" size="32" start="0" type="float"/>
  </packet>

  <packet name="Line width" code="99">
    <field name="Line width" size="32" start="0" type="float"/>
  </packet>

  <packet name="RHT X boundary" code="100">
    <field name="RHT primitive X boundary" size="16" start="0" type="int"/>
  </packet>

  <packet name="Depth Offset" code="101">
    <!-- these fields are both float-1-8-7 encoded (top 16 bits of a float32) -->
    <field name="Depth Offset Units" size="16" start="16" type="uint"/>
    <field name="Depth Offset Factor" size="16" start="0" type="uint"/>
  </packet>

  <packet name="Clip Window" code="102">
    <field name="Clip Window Height in pixels" size="16" start="48" type="uint"/>
    <field name="Clip Window Width in pixels" size="16" start="32" type="uint"/>
    <field name="Clip Window Bottom Pixel Coordinate" size="16" start="16" type="uint"/>
    <field name="Clip Window Left Pixel Coordinate" size="16" start="0" type="uint"/>
  </packet>

  <packet name="Viewport Offset" code="103">
    <field name="Viewport Centre Y-coordinate" size="16" start="16" type="s12.4"/>
    <field name="Viewport Centre X-coordinate" size="16" start="0" type="s12.4"/>
  </packet>

  <packet name="Z min and max clipping planes" code="104">
    <field name="Maximum Zw" size="32" start="32" type="float"/>
    <field name="Minimum Zw" size="32" start="0" type="float"/>
  </packet>

  <packet name="Clipper XY Scaling" code="105" cl="B">
    <field name="Viewport Half-Height in 1/16th of pixel" size="32" start="32" type="float"/>
    <field name="Viewport Half-Width in 1/16th of pixel" size="32" start="0" type="float"/>
  </packet>

  <packet name="Clipper Z Scale and Offset" code="106" cl="B">
    <field name="Viewport Z Offset (Zc to Zs)" size="32" start="32" type="float"/>
    <field name="Viewport Z Scale (Zc to Zs)" size="32" start="0" type="float"/>
  </packet>

  <packet name="Tile Binning Mode Configuration" code="112" cl="B">
    <field name="Double-buffer in non-ms mode" size="1" start="119" type="bool"/>

    <field name="Tile Allocation Block Size" size="2" start="117" type="uint">
      <value name="block size 32" value="0"/>
      <value name="block size 64" value="1"/>
      <value name="block size 128" value="2"/>
      <value name="block size 256" value="3"/>
    </field>

    <field name="Tile Allocation Initial Block Size" size="2" start="115" type="uint">
      <value name="block size 32" value="0"/>
      <value name="block size 64" value="1"/>
      <value name="block size 128" value="2"/>
      <value name="block size 256" value="3"/>
    </field>

    <field name="Auto-initialise Tile State Data Array" size="1" start="114" type="bool"/>
    <field name="Tile Buffer 64-bit Color Depth" size="1" start="113" type="bool"/>
    <field name="Multisample Mode (4x)" size="1" start="112" type="bool"/>

    <field name="Height (in tiles)" size="8" start="104" type="uint"/>
    <field name="Width (in tiles)" size="8" start="96" type="uint"/>

    <field name="Tile State Data Array Address" size="32" start="64" type="uint"/>
    <field name="Tile Allocation memory size" size="32" start="32" type="uint"/>
    <field name="Tile Allocation memory address" size="32" start="0" type="uint"/>

  </packet>

  <packet name="Tile Rendering Mode Configuration" code="113" cl="R">
    <field name="Double-buffer in non-ms mode" size="1" start="76" type="bool"/>
    <field name="Early-Z/Early-Cov disable" size="1" start="75" type="bool"/>
    <field name="Early-Z Update Direction GT/GE" size="1" start="74" type="bool"/>
    <field name="Select Coverage Mode" size="1" start="73" type="bool"/>
    <field name="Enable VG Mask Buffer" size="1" start="72" type="bool"/>
    <field name="Memory Format" size="2" start="70" type="uint">
      <value name="Raster" value="0"/>
      <value name="T" value="1"/>
      <value name="LT" value="2"/>
    </field>
    <field name="Decimate Mode" size="2" start="68" type="uint"/>

    <field name="Non-HDR Frame Buffer Color Format" size="2" start="66" type="uint">
      <value name="rendering config bgr565 dithered" value="0"/>
      <value name="rendering config rgba8888" value="1"/>
      <value name="rendering config bgr565 no dither" value="2"/>
    </field>

    <field name="Tile Buffer 64-bit Color Depth" size="1" start="65" type="bool"/>
    <field name="Multisample Mode (4x)" size="1" start="64" type="bool"/>
    <field name="Height (pixels)" size="16" start="48" type="uint"/>
    <field name="Width (pixels)" size="16" start="32" type="uint"/>
    <field name="Memory Address" size="32" start="0" type="address"/>
  </packet>

  <packet name="Tile Coordinates" code="115" cl="R">
    <field name="Tile Row Number" size="8" start="8" type="uint"/>
    <field name="Tile Column Number" size="8" start="0" type="uint"/>
  </packet>

  <packet name="Gem Relocations" code="254" cl="B">
    <field name="buffer 1" size="32" start="32" type="uint"/>
    <field name="buffer 0" size="32" start="0" type="uint"/>
  </packet>

  <struct name="Shader Record">
    <field name="Fragment Shader is single threaded" size="1" start="0" type="bool"/>
    <field name="Point Size included in shaded vertex data" size="1" start="1" type="bool"/>
    <field name="Enable Clipping" size="1" start="2" type="bool"/>

    <field name="Fragment Shader Number of Uniforms (not used currently)" size="16" start="2b" type="uint"/>
    <field name="Fragment Shader Number of Varyings" size="8" start="3b" type="uint"/>
    <field name="Fragment Shader Code Address" size="32" start="4b" type="address"/>
    <!-- set up by the kernel -->
    <field name="Fragment Shader Uniforms Address" size="32" start="8b" type="uint"/>

    <field name="Vertex Shader Number of Uniforms (not used currently)" size="16" start="12b" type="uint"/>
    <field name="Vertex Shader Attribute Array select bits" size="8" start="14b" type="uint"/>
    <field name="Vertex Shader Total Attributes Size" size="8" start="15b" type="uint"/>
    <field name="Vertex Shader Code Address" size="32" start="16b" type="address"/>
    <!-- set up by the kernel -->
    <field name="Vertex Shader Uniforms Address" size="32" start="16b" type="uint"/>

    <field name="Coordinate Shader Number of Uniforms (not used currently)" size="16" start="24b" type="uint"/>
    <field name="Coordinate Shader Attribute Array select bits" size="8" start="26b" type="uint"/>
    <field name="Coordinate Shader Total Attributes Size" size="8" start="27b" type="uint"/>
    <field name="Coordinate Shader Code Address" size="32" start="28b" type="address"/>
    <!-- set up by the kernel -->
    <field name="Coordinate Shader Uniforms Address" size="32" start="32b" type="uint"/>
  </struct>

  <struct name="Attribute Record">
    <field name="Address" size="32" start="0b" type="address"/>
    <field name="Number of Bytes minus 1" size="8" start="4b" type="uint"/>
    <field name="Stride" size="8" start="5b" type="uint"/>
    <field name="Vertex Shader VPM offset" size="8" start="6b" type="uint"/>
    <field name="Coordinate Shader VPM offset" size="8" start="7b" type="uint"/>
  </struct>

</vcxml>