panfrost: XMLify the rest of shader_meta
authorAlyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Fri, 21 Aug 2020 19:54:10 +0000 (15:54 -0400)
committerTomeu Vizoso <tomeu.vizoso@collabora.com>
Tue, 25 Aug 2020 15:05:38 +0000 (17:05 +0200)
This contains a bit of everything, so just XML for this commit. The rest
of the series will be slowly moving over to this representation.

The one noteworthy addition is the rename of "No MSAA" to
"Single-sampled lines". This came about due to a buggy branch that
forgot to set this bit. Ths worked, with the caveat of the following
tests failing with a single-sampled framebuffer:

   dEQP-GLES2.functional.rasterization.interpolation.basic.line_loop_wide
   dEQP-GLES2.functional.rasterization.interpolation.basic.line_strip_wide
   dEQP-GLES2.functional.rasterization.interpolation.basic.lines_wide
   dEQP-GLES2.functional.rasterization.interpolation.projected.line_loop_wide
   dEQP-GLES2.functional.rasterization.interpolation.projected.line_strip_wide
   dEQP-GLES2.functional.rasterization.interpolation.projected.lines_wide
   dEQP-GLES2.functional.rasterization.primitives.line_loop
   dEQP-GLES2.functional.rasterization.primitives.line_loop_wide
   dEQP-GLES2.functional.rasterization.primitives.line_strip
   dEQP-GLES2.functional.rasterization.primitives.line_strip_wide
   dEQP-GLES2.functional.rasterization.primitives.lines
   dEQP-GLES2.functional.rasterization.primitives.lines_wide

That is, this bit controls the behaviour of line rasterization with
multisampling. This is required to implement the divergent behaviours
described in the OpenGL ES 3.2 specification sections 13.6.1 ("Basic
Line Segment Rasterization") and 13.6.4 ("Line Multisample
Rasterization"), where setting this bit corresponds to the former
(single-sampled) behaviour.

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Reviewed-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6440>

src/panfrost/lib/midgard.xml

index 08615b15f9735ca156d4a27f5f003d134b6aa2ad..e145e7433c78bcec9fc1a8dfb32e91c402796aa0 100644 (file)
     <field name="Varying count" size="16" start="3:16" type="uint"/>
   </struct>
 
+  <struct name="Multisample, Misc" size="1">
+    <field name="Sample mask" size="16" start="0" type="uint"/>
+    <field name="Multisample enable" size="1" start="16" type="bool"/>
+    <!-- TODO 17 -->
+    <field name="Evaluate per-sample" size="1" start="18" type="bool"/>
+    <field name="Unknown 1" size="1" start="19" type="bool"/>
+    <field name="Unknown 2" size="1" start="20" type="bool"/>
+    <field name="SFBD Load destination" size="1" start="21" type="bool"/>
+    <field name="SFBD Blend shader" size="1" start="22" type="bool"/>
+    <!-- TODO 23 -->
+    <field name="Depth function" size="3" start="24" type="Func"/>
+    <field name="Depth write mask" size="1" start="27" type="bool"/>
+    <field name="Near discard" size="1" start="28" type="bool"/>
+    <field name="Far discard" size="1" start="29" type="bool"/>
+    <!-- TODO: 30-31 -->
+  </struct>
+
+  <struct name="Stencil Mask, Misc" size="1">
+    <field name="Stencil mask front" size="8" start="0" type="uint"/>
+    <field name="Stencil mask back" size="8" start="8" type="uint"/>
+    <field name="Stencil enable" size="1" start="16" type="bool"/>
+    <field name="Alpha-to-coverage" size="1" start="17" type="bool"/>
+    <!-- TODO 18-19 -->
+    <field name="SFBD Write enable" size="1" start="20" type="bool"/>
+    <field name="Unknown 1" size="3" start="21" type="uint"/>
+    <field name="SFBD sRGB" size="1" start="24" type="bool"/>
+    <field name="SFBD Dither disable" size="1" start="25" type="bool"/>
+    <field name="Unknown 2" size="1" start="26" type="bool"/>
+    <field name="Depth Range 1" size="1" start="28" type="bool"/>
+    <field name="Depth Range 2" size="1" start="29" type="bool"/>
+    <field name="Single-sampled lines" size="1" start="30" type="bool"/>
+   <!-- TODO: 31 -->
+  </struct>
+
   <struct name="Stencil">
     <field name="Reference Value" size="8" start="0" type="uint"/>
     <field name="Mask" size="8" start="8" type="uint" default="0xFF"/>
     <field name="Depth Pass" size="3" start="25" type="Stencil Op"/>
   </struct>
 
+  <struct name="State" with_opaque="true">
+    <field name="Shader" size="128" start="0:0" type="Shader"/>
+    <field name="Properties" size="32" start="4:0" type="uint"/>
+    <field name="Depth units" size="32" start="5:0" type="float"/>
+    <field name="Depth factor" size="32" start="6:0" type="float"/>
+    <!-- TODO: word 7 -->
+    <field name="Multisample, Misc" size="32" start="8:0" type="Multisample, Misc"/>
+    <field name="Stencil Mask, Misc" size="32" start="9:0" type="Stencil Mask, Misc"/>
+    <field name="Stencil front" size="32" start="10:0" type="Stencil"/>
+    <field name="Stencil back" size="32" start="11:0" type="Stencil"/>
+    <field name="Preload" size="32" start="12:0" type="Preload"/>
+    <!--- TODO: word 13 -->
+    <field name="SFBD Blend" size="64" start="14:0" type="uint"/>
+  </struct>
+
   <struct name="Uniform Buffer">
     <field name="Entries" size="12" start="0" type="uint" modifier="minus(1)"/>
     <field name="Pointer" size="52" start="12" type="address" modifier="shr(4)" element="16" count="Entries"/>