Mesa (main): asahi: Identify triangle/lines vs point varyings

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Sun Jul 11 22:41:36 UTC 2021


Module: Mesa
Branch: main
Commit: 3d75cff7d7e82835d27e8608575c5721c72a8637
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=3d75cff7d7e82835d27e8608575c5721c72a8637

Author: Alyssa Rosenzweig <alyssa at rosenzweig.io>
Date:   Sun Jul 11 17:10:29 2021 -0400

asahi: Identify triangle/lines vs point varyings

Seems to allow skipping over point coords?

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

---

 src/asahi/compiler/agx_compile.c      | 6 +++---
 src/asahi/lib/cmdbuf.xml              | 9 +++++----
 src/gallium/drivers/asahi/agx_state.c | 2 +-
 3 files changed, 9 insertions(+), 8 deletions(-)

diff --git a/src/asahi/compiler/agx_compile.c b/src/asahi/compiler/agx_compile.c
index 76d133cbb10..241d0e0c83e 100644
--- a/src/asahi/compiler/agx_compile.c
+++ b/src/asahi/compiler/agx_compile.c
@@ -1212,7 +1212,7 @@ agx_remap_varyings_fs(nir_shader *nir, struct agx_varyings *varyings,
    agx_pack(packed, VARYING, cfg) {
       cfg.type = AGX_VARYING_TYPE_FRAGCOORD_W;
       cfg.components = 1;
-      cfg.slot_1 = cfg.slot_2 = base;
+      cfg.triangle_slot = cfg.point_slot = base;
    }
 
    base++;
@@ -1221,7 +1221,7 @@ agx_remap_varyings_fs(nir_shader *nir, struct agx_varyings *varyings,
    agx_pack(packed, VARYING, cfg) {
       cfg.type = AGX_VARYING_TYPE_FRAGCOORD_Z;
       cfg.components = 1;
-      cfg.slot_1 = cfg.slot_2 = base;
+      cfg.triangle_slot = cfg.point_slot = base;
    }
 
    base++;
@@ -1258,7 +1258,7 @@ agx_remap_varyings_fs(nir_shader *nir, struct agx_varyings *varyings,
               AGX_VARYING_TYPE_FLAT_LAST :
               AGX_VARYING_TYPE_SMOOTH;
            cfg.components = channels;
-           cfg.slot_1 = cfg.slot_2 = base;
+           cfg.triangle_slot = cfg.point_slot = base;
         }
 
         base += channels;
diff --git a/src/asahi/lib/cmdbuf.xml b/src/asahi/lib/cmdbuf.xml
index e068b7b0d8a..91267825ed1 100644
--- a/src/asahi/lib/cmdbuf.xml
+++ b/src/asahi/lib/cmdbuf.xml
@@ -130,8 +130,8 @@
   </enum>
 
   <struct name="Varying header" size="4">
-    <field name="Slots 1" size="8" start="0:0" type="uint"/>
-    <field name="Slots 2" size="8" start="0:8" type="uint"/>
+    <field name="Triangle slots" size="8" start="0:0" type="uint"/>
+    <field name="Point slots" size="8" start="0:8" type="uint"/>
   </struct>
 
   <enum name="Varying Type">
@@ -140,13 +140,14 @@
     <value name="Fragcoord W" value="3"/>
     <value name="Smooth" value="7"/>
     <value name="Fragcoord Z" value="11"/>
+    <value name="Point coordinates" value="19"/>
   </enum>
 
   <struct name="Varying" size="4">
     <field name="Components" size="2" start="0" type="uint" modifier="minus(1)"/>
     <field name="Type" size="6" start="2" type="Varying Type" default="Smooth"/>
-    <field name="Slot 1" size="8" start="8" type="uint"/>
-    <field name="Slot 2" size="8" start="16" type="uint"/>
+    <field name="Triangle slot" size="8" start="8" type="uint"/>
+    <field name="Point slot" size="8" start="16" type="uint"/>
   </struct>
 
   <struct name="Format" size="2">
diff --git a/src/gallium/drivers/asahi/agx_state.c b/src/gallium/drivers/asahi/agx_state.c
index 0ee33226781..ba81bd278a8 100644
--- a/src/gallium/drivers/asahi/agx_state.c
+++ b/src/gallium/drivers/asahi/agx_state.c
@@ -895,7 +895,7 @@ agx_update_shader(struct agx_context *ctx, struct agx_compiled_shader **out,
    uint8_t *packed_varyings = alloca(packed_varying_sz);
 
    agx_pack(packed_varyings, VARYING_HEADER, cfg) {
-      cfg.slots_1 = cfg.slots_2 = varyings->nr_slots;
+      cfg.triangle_slots = cfg.point_slots = varyings->nr_slots;
    }
 
    memcpy(packed_varyings + AGX_VARYING_HEADER_LENGTH, varyings->packed,



More information about the mesa-commit mailing list