asahi: Merge fragment control XML
authorAlyssa Rosenzweig <alyssa@rosenzweig.io>
Sat, 7 Jan 2023 04:22:33 +0000 (23:22 -0500)
committerMarge Bot <emma+marge@anholt.net>
Sat, 4 Feb 2023 07:58:42 +0000 (07:58 +0000)
Same struct specified twice and merged in the hw.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21081>

src/asahi/lib/agx_ppp.h
src/asahi/lib/cmdbuf.xml
src/asahi/lib/decode.c
src/gallium/drivers/asahi/agx_state.c

index adfd390..e1ecf80 100644 (file)
@@ -46,7 +46,7 @@ agx_ppp_update_size(struct AGX_PPP_HEADER *present)
    if (present->x)                                                             \
       size += AGX_##y##_LENGTH;
    PPP_CASE(fragment_control, FRAGMENT_CONTROL);
-   PPP_CASE(fragment_control_2, FRAGMENT_CONTROL_2);
+   PPP_CASE(fragment_control_2, FRAGMENT_CONTROL);
    PPP_CASE(fragment_front_face, FRAGMENT_FACE);
    PPP_CASE(fragment_front_face_2, FRAGMENT_FACE_2);
    PPP_CASE(fragment_front_stencil, FRAGMENT_STENCIL);
index 0970eb7..c7ca836 100644 (file)
     <field name="Compare" size="3" start="25" type="ZS Func"/>
   </struct>
 
-  <struct name="Fragment control" size="4">
-    <field name="Unk 1" size="1" start="9" type="hex" default="0x1"/>
-    <field name="Visibility mode" size="2" start="14" type="Visibility Mode"/>
-    <field name="Scissor enable" size="1" start="16" type="bool"/>
-    <field name="Depth bias enable" size="1" start="17" type="bool"/>
-    <field name="Stencil test enable" size="1" start="18" type="bool"/>
-    <field name="Two-sided stencil" size="1" start="19" type="bool"/>
-    <field name="Unk fill lines" size="1" start="26" type="hex" default="0x0"/> <!-- set when drawing LINES -->
-  </struct>
-
   <enum name="Pass type">
     <value name="Opaque" value="0"/>
     <value name="Translucent" value="1"/>
          Translucent punch through seems notably different though? -->
   </enum>
 
-  <struct name="Fragment control 2" size="4">
+  <struct name="Fragment control" size="4">
     <field name="Unk 1" size="1" start="9" type="bool" default="true"/>
-    <!-- Or discards? -->
+    <field name="Visibility mode" size="2" start="14" type="Visibility Mode"/>
+    <field name="Scissor enable" size="1" start="16" type="bool"/>
+    <field name="Depth bias enable" size="1" start="17" type="bool"/>
+    <field name="Stencil test enable" size="1" start="18" type="bool"/>
+    <field name="Two-sided stencil" size="1" start="19" type="bool"/>
     <field name="No colour output" size="1" start="21" type="bool"/>
     <field name="Sample mask after depth/stencil" size="1" start="25" type="bool"/>
     <field name="Disable tri merging" size="1" start="26" type="bool"/>
index e3e39a0..8a9c7bb 100644 (file)
@@ -441,7 +441,7 @@ agxdecode_record(uint64_t va, size_t size, bool verbose)
    map += AGX_PPP_HEADER_LENGTH;
 
    PPP_PRINT(map, fragment_control, FRAGMENT_CONTROL, "Fragment control");
-   PPP_PRINT(map, fragment_control_2, FRAGMENT_CONTROL_2, "Fragment control 2");
+   PPP_PRINT(map, fragment_control_2, FRAGMENT_CONTROL, "Fragment control 2");
    PPP_PRINT(map, fragment_front_face, FRAGMENT_FACE, "Front face");
    PPP_PRINT(map, fragment_front_face_2, FRAGMENT_FACE_2, "Front face 2");
    PPP_PRINT(map, fragment_front_stencil, FRAGMENT_STENCIL, "Front stencil");
index 90dc540..8e5a734 100644 (file)
@@ -1996,7 +1996,7 @@ agx_encode_state(struct agx_batch *batch, uint8_t *out, bool is_lines,
    }
 
    if (dirty.fragment_control_2) {
-      agx_ppp_push(&ppp, FRAGMENT_CONTROL_2, cfg) {
+      agx_ppp_push(&ppp, FRAGMENT_CONTROL, cfg) {
          /* This avoids broken derivatives along primitive edges */
          cfg.disable_tri_merging =
             (is_lines || is_points || ctx->fs->info.disable_tri_merging);