Mesa (main): asahi: Extend IOGPU header to contain encoder

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Jul 6 13:55:47 UTC 2021


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

Author: Alyssa Rosenzweig <alyssa at rosenzweig.io>
Date:   Mon Jul  5 19:50:13 2021 -0400

asahi: Extend IOGPU header to contain encoder

Let's squash together all the resulting zeroes. Trying to discern some structure out of this.

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

---

 src/asahi/lib/cmdbuf.xml          |  5 ++++-
 src/gallium/drivers/asahi/magic.c | 24 ++----------------------
 2 files changed, 6 insertions(+), 23 deletions(-)

diff --git a/src/asahi/lib/cmdbuf.xml b/src/asahi/lib/cmdbuf.xml
index 8398cf29181..43b94a36967 100644
--- a/src/asahi/lib/cmdbuf.xml
+++ b/src/asahi/lib/cmdbuf.xml
@@ -465,7 +465,7 @@
     <value name="Depth" value="0xC"/>
   </enum>
 
-  <struct name="IOGPU Header" size="48">
+  <struct name="IOGPU Header" size="64">
     <field name="Unk 0" start="0:0" size="32" default="0x10000" type="hex"/>
     <field name="Total size" start="1:0" size="32" type="uint"/>
     <field name="Unk 2" start="2:0" size="32" default="0x7" type="hex"/>
@@ -473,6 +473,9 @@
     <field name="Unk 3" start="9:0" size="32" default="0x18" type="hex"/>
     <field name="Attachment offset 2" start="10:0" size="32" type="uint"/>
     <field name="Unknown offset" start="11:0" size="32" type="uint"/>
+    <field name="Unk 4" start="12:0" size="32" default="0x30" type="hex"/>
+    <field name="Unk 5" start="13:0" size="32" default="0x01" type="hex"/>
+    <field name="Encoder" start="14:0" size="64" type="address"/>
   </struct>
 
   <struct name="IOGPU Attachment" size="24">
diff --git a/src/gallium/drivers/asahi/magic.c b/src/gallium/drivers/asahi/magic.c
index fc575144298..9d588013957 100644
--- a/src/gallium/drivers/asahi/magic.c
+++ b/src/gallium/drivers/asahi/magic.c
@@ -71,28 +71,7 @@ demo_cmdbuf(uint64_t *buf, size_t size,
 
    struct cmdbuf *cmdbuf = &_cmdbuf;
 
-   /* Vertex stuff */
-   EMIT_ZERO_WORDS(cmdbuf, 12);
-
-   EMIT32(cmdbuf, 0x30); /* 0x30 */
-   EMIT32(cmdbuf, 0x01); /* 0x34. Compute: 0x03 */
-
-   EMIT64(cmdbuf, encoder_ptr);
-
-   EMIT_ZERO_WORDS(cmdbuf, 20);
-
-   EMIT64(cmdbuf, 0); /* 0x90, compute blob - some zero */
-   EMIT64(cmdbuf, 0); // blob - 0x540 bytes of zero, compute blob - null
-   EMIT64(cmdbuf, 0); // blob - 0x280 bytes of zero
-   EMIT64(cmdbuf, 0); // a8, compute blob - zero pointer
-
-   EMIT64(cmdbuf, 0); // compute blob - zero pointer
-   EMIT64(cmdbuf, 0); // compute blob - zero pointer
-   EMIT64(cmdbuf, 0); // compute blob - zero pointer
-
-   // while zero for vertex, used to include the odd unk6 pattern for compute
-   EMIT64(cmdbuf, 0); // compute blob - 0x1
-   EMIT64(cmdbuf, 0); // d0,  ompute blob - pointer to odd pattern, compare how it's done later for frag
+   EMIT_ZERO_WORDS(cmdbuf, 54);
 
    // compute 8 bytes of zero, then reconverge at *
 
@@ -247,6 +226,7 @@ demo_cmdbuf(uint64_t *buf, size_t size,
       cfg.attachment_offset_1 = offset_attachments;
       cfg.attachment_offset_2 = offset_attachments;
       cfg.unknown_offset = offset_unk;
+      cfg.encoder = encoder_ptr;
    }
 
    return total_size;



More information about the mesa-commit mailing list