vc4: Introduce XML-based packet header generation like Intel's.
[mesa.git] / src / broadcom / cle / v3d_packet_v21.xml
diff --git a/src/broadcom/cle/v3d_packet_v21.xml b/src/broadcom/cle/v3d_packet_v21.xml
new file mode 100644 (file)
index 0000000..1d5b5b7
--- /dev/null
@@ -0,0 +1,220 @@
+<vcxml ver="2.1">
+  <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="32" start="0" 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="32" start="0" 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="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="uint">
+      <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="triangles strip" value="5"/>
+      <value name="triangles fan" value="6"/>
+    </field>
+  </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="uint">
+      <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="triangles strip" value="5"/>
+      <value name="triangles fan" value="6"/>
+    </field>
+  </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="uint"/>
+    <!-- add values -->
+    <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="bool"/>
+    <!-- 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="int"/>
+    <field name="Viewport Centre X-coordinate" size="16" start="0" type="int"/>
+  </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>
+
+  <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>
+
+</vcxml>