Mesa (main): panfrost: Deduplicate indirect dispatch structs

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Jun 8 13:56:10 UTC 2022


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

Author: Alyssa Rosenzweig <alyssa at collabora.com>
Date:   Tue Jun  7 15:45:56 2022 -0400

panfrost: Deduplicate indirect dispatch structs

The input is specified in two identical structs, tear that apart.

Signed-off-by: Alyssa Rosenzweig <alyssa at collabora.com>
Reviewed-by: Boris Brezillon <boris.brezillon at collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16916>

---

 src/panfrost/lib/pan_indirect_dispatch.c | 25 +++++--------------------
 src/panfrost/lib/pan_indirect_dispatch.h |  2 +-
 2 files changed, 6 insertions(+), 21 deletions(-)

diff --git a/src/panfrost/lib/pan_indirect_dispatch.c b/src/panfrost/lib/pan_indirect_dispatch.c
index 5d90a915bb6..e4d521c8864 100644
--- a/src/panfrost/lib/pan_indirect_dispatch.c
+++ b/src/panfrost/lib/pan_indirect_dispatch.c
@@ -34,17 +34,11 @@
 #include "util/u_memory.h"
 #include "util/macros.h"
 
-struct indirect_dispatch_inputs {
-        mali_ptr job;
-        mali_ptr indirect_dim;
-        mali_ptr num_wg_sysval[3];
-} PACKED;
-
 #define get_input_field(b, name) \
         nir_load_push_constant(b, \
-               1, sizeof(((struct indirect_dispatch_inputs *)0)->name) * 8, \
+               1, sizeof(((struct pan_indirect_dispatch_info *)0)->name) * 8, \
                nir_imm_int(b, 0), \
-               .base = offsetof(struct indirect_dispatch_inputs, name))
+               .base = offsetof(struct pan_indirect_dispatch_info, name))
 
 static mali_ptr
 get_rsd(const struct panfrost_device *dev)
@@ -62,22 +56,13 @@ get_tls(const struct panfrost_device *dev)
 unsigned
 GENX(pan_indirect_dispatch_emit)(struct pan_pool *pool,
                                  struct pan_scoreboard *scoreboard,
-                                 const struct pan_indirect_dispatch_info *dispatch_info)
+                                 const struct pan_indirect_dispatch_info *inputs)
 {
         struct panfrost_device *dev = pool->dev;
         struct panfrost_ptr job =
                 pan_pool_alloc_desc(pool, COMPUTE_JOB);
         void *invocation =
                 pan_section_ptr(job.cpu, COMPUTE_JOB, INVOCATION);
-        struct indirect_dispatch_inputs inputs = {
-                .job = dispatch_info->job,
-                .indirect_dim = dispatch_info->indirect_dim,
-                .num_wg_sysval = {
-                        dispatch_info->num_wg_sysval[0],
-                        dispatch_info->num_wg_sysval[1],
-                        dispatch_info->num_wg_sysval[2],
-                },
-        };
 
         panfrost_pack_work_groups_compute(invocation,
                                           1, 1, 1, 1, 1, 1,
@@ -92,7 +77,7 @@ GENX(pan_indirect_dispatch_emit)(struct pan_pool *pool,
                 cfg.state = get_rsd(dev);
                 cfg.thread_storage = get_tls(pool->dev);
                 cfg.push_uniforms =
-                        pan_pool_upload_aligned(pool, &inputs, sizeof(inputs), 16);
+                        pan_pool_upload_aligned(pool, inputs, sizeof(*inputs), 16);
         }
 
         return panfrost_add_job(pool, scoreboard, MALI_JOB_TYPE_COMPUTE,
@@ -179,7 +164,7 @@ GENX(pan_indirect_dispatch_init)(struct panfrost_device *dev)
         assert(!shader_info.sysvals.sysval_count);
 
         shader_info.push.count =
-                DIV_ROUND_UP(sizeof(struct indirect_dispatch_inputs), 4);
+                DIV_ROUND_UP(sizeof(struct pan_indirect_dispatch_info), 4);
 
         dev->indirect_dispatch.bin =
                 panfrost_bo_create(dev, binary.size, PAN_BO_EXECUTE,
diff --git a/src/panfrost/lib/pan_indirect_dispatch.h b/src/panfrost/lib/pan_indirect_dispatch.h
index 30f5441feba..26ab77939a6 100644
--- a/src/panfrost/lib/pan_indirect_dispatch.h
+++ b/src/panfrost/lib/pan_indirect_dispatch.h
@@ -34,7 +34,7 @@ struct pan_indirect_dispatch_info {
         mali_ptr job;
         mali_ptr indirect_dim;
         mali_ptr num_wg_sysval[3];
-};
+} PACKED;
 
 unsigned
 GENX(pan_indirect_dispatch_emit)(struct pan_pool *pool,



More information about the mesa-commit mailing list