panfrost: Make panfrost_scoreboard_initialize_tiler() return the job pointer
authorBoris Brezillon <boris.brezillon@collabora.com>
Thu, 6 May 2021 06:43:00 +0000 (08:43 +0200)
committerMarge Bot <eric+marge@anholt.net>
Tue, 22 Jun 2021 14:07:33 +0000 (14:07 +0000)
In the vulkan driver we need to patch job headers when re-submitting
an already submitted batch. Change panfrost_scoreboard_initialize_tiler()
prototype to allow that.

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

src/panfrost/lib/pan_scoreboard.c
src/panfrost/lib/pan_scoreboard.h

index 3fb87c8..5589b4d 100644 (file)
@@ -189,22 +189,23 @@ panfrost_add_job(
 /* Generates a write value job, used to initialize the tiler structures. Note
  * this is called right before frame submission. */
 
-void
+struct panfrost_ptr
 panfrost_scoreboard_initialize_tiler(struct pan_pool *pool,
-                struct pan_scoreboard *scoreboard,
-                mali_ptr polygon_list)
+                                     struct pan_scoreboard *scoreboard,
+                                     mali_ptr polygon_list)
 {
+        struct panfrost_ptr transfer = { 0 };
+
         /* Check if we even need tiling */
         if (pan_is_bifrost(pool->dev) || !scoreboard->first_tiler)
-                return;
+                return transfer;
 
         /* Okay, we do. Let's generate it. We'll need the job's polygon list
          * regardless of size. */
 
-        struct panfrost_ptr transfer =
-                panfrost_pool_alloc_aligned(pool,
-                                            MALI_WRITE_VALUE_JOB_LENGTH,
-                                            64);
+        transfer = panfrost_pool_alloc_aligned(pool,
+                                               MALI_WRITE_VALUE_JOB_LENGTH,
+                                               64);
 
         pan_section_pack(transfer.cpu, WRITE_VALUE_JOB, HEADER, header) {
                 header.type = MALI_JOB_TYPE_WRITE_VALUE;
@@ -218,4 +219,5 @@ panfrost_scoreboard_initialize_tiler(struct pan_pool *pool,
         }
 
         scoreboard->first_job = transfer.gpu;
+        return transfer;
 }
index 44a3456..c785473 100644 (file)
@@ -64,9 +64,9 @@ panfrost_add_job(
                 const struct panfrost_ptr *job,
                 bool inject);
 
-void panfrost_scoreboard_initialize_tiler(
-                struct pan_pool *pool,
-                struct pan_scoreboard *scoreboard,
-                mali_ptr polygon_list);
+struct panfrost_ptr
+panfrost_scoreboard_initialize_tiler(struct pan_pool *pool,
+                                     struct pan_scoreboard *scoreboard,
+                                     mali_ptr polygon_list);
 
 #endif