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

Author: Alyssa Rosenzweig <[email protected]>
Date:   Wed May 12 18:31:54 2021 -0400

panfrost: Label pools

Allows the allocated BOs to be labeled more intelligently.

Signed-off-by: Alyssa Rosenzweig <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10866>

---

 src/gallium/drivers/panfrost/pan_job.c | 5 +++--
 src/panfrost/lib/pan_blitter.c         | 6 +++---
 src/panfrost/lib/pan_indirect_draw.c   | 2 +-
 src/panfrost/lib/pan_pool.c            | 7 ++++---
 src/panfrost/lib/pan_pool.h            | 5 ++++-
 5 files changed, 15 insertions(+), 10 deletions(-)

diff --git a/src/gallium/drivers/panfrost/pan_job.c 
b/src/gallium/drivers/panfrost/pan_job.c
index b33aa5b6296..225d60244c5 100644
--- a/src/gallium/drivers/panfrost/pan_job.c
+++ b/src/gallium/drivers/panfrost/pan_job.c
@@ -85,12 +85,13 @@ panfrost_batch_init(struct panfrost_context *ctx,
 
         /* Preallocate the main pool, since every batch has at least one job
          * structure so it will be used */
-        panfrost_pool_init(&batch->pool, NULL, dev, 0, true, true);
+        panfrost_pool_init(&batch->pool, NULL, dev, 0, "Batch pool", true, 
true);
 
         /* Don't preallocate the invisible pool, since not every batch will use
          * the pre-allocation, particularly if the varyings are larger than the
          * preallocation and a reallocation is needed after anyway. */
-        panfrost_pool_init(&batch->invisible_pool, NULL, dev, 
PAN_BO_INVISIBLE, false, true);
+        panfrost_pool_init(&batch->invisible_pool, NULL, dev,
+                        PAN_BO_INVISIBLE, "Varyings", false, true);
 
         panfrost_batch_add_fbo_bos(batch);
 }
diff --git a/src/panfrost/lib/pan_blitter.c b/src/panfrost/lib/pan_blitter.c
index 5322d025c14..fe7b9916093 100644
--- a/src/panfrost/lib/pan_blitter.c
+++ b/src/panfrost/lib/pan_blitter.c
@@ -1348,7 +1348,7 @@ pan_blit_ctx_init(struct panfrost_device *dev,
                   struct pan_blit_context *ctx)
 {
         memset(ctx, 0, sizeof(*ctx));
-        panfrost_pool_init(&ctx->pool, NULL, dev, 0, false, true);
+        panfrost_pool_init(&ctx->pool, NULL, dev, 0, "Blitter pool", false, 
true);
 
         ctx->z_scale = (float)(info->dst.end.z - info->dst.start.z + 1) /
                        (info->src.end.z - info->src.start.z + 1);
@@ -1599,11 +1599,11 @@ pan_blitter_init(struct panfrost_device *dev)
                 _mesa_hash_table_create(NULL, pan_blit_blend_shader_key_hash,
                                         pan_blit_blend_shader_key_equal);
         panfrost_pool_init(&dev->blitter.shaders.pool, NULL, dev,
-                           PAN_BO_EXECUTE, false, true);
+                           PAN_BO_EXECUTE, "Blitter shaders", false, true);
         pthread_mutex_init(&dev->blitter.shaders.lock, NULL);
         pan_blitter_prefill_blit_shader_cache(dev);
 
-        panfrost_pool_init(&dev->blitter.rsds.pool, NULL, dev, 0, false, true);
+        panfrost_pool_init(&dev->blitter.rsds.pool, NULL, dev, 0, "Blitter 
RSDs", false, true);
         dev->blitter.rsds.rsds =
                 _mesa_hash_table_create(NULL, pan_blit_rsd_key_hash,
                                         pan_blit_rsd_key_equal);
diff --git a/src/panfrost/lib/pan_indirect_draw.c 
b/src/panfrost/lib/pan_indirect_draw.c
index bae6f106f4f..6156038bb8d 100644
--- a/src/panfrost/lib/pan_indirect_draw.c
+++ b/src/panfrost/lib/pan_indirect_draw.c
@@ -1372,7 +1372,7 @@ panfrost_init_indirect_draw_shaders(struct 
panfrost_device *dev)
          */
         pthread_mutex_init(&dev->indirect_draw_shaders.lock, NULL);
         panfrost_pool_init(&dev->indirect_draw_shaders.bin_pool, NULL, dev,
-                           PAN_BO_EXECUTE, false, true);
+                           PAN_BO_EXECUTE, "Indirect draw shaders", false, 
true);
 }
 
 void
diff --git a/src/panfrost/lib/pan_pool.c b/src/panfrost/lib/pan_pool.c
index c5eb2b31977..b2044d34705 100644
--- a/src/panfrost/lib/pan_pool.c
+++ b/src/panfrost/lib/pan_pool.c
@@ -51,7 +51,7 @@ panfrost_pool_alloc_backing(struct pan_pool *pool, size_t 
bo_sz)
          * fragment/vertex+tiler pools separate.
          */
         struct panfrost_bo *bo = panfrost_bo_create(pool->dev, bo_sz,
-                        pool->create_flags, "Pool memory");
+                        pool->create_flags, pool->label);
 
         if (pool->owned)
                 util_dynarray_append(&pool->bos, struct panfrost_bo *, bo);
@@ -67,13 +67,14 @@ panfrost_pool_alloc_backing(struct pan_pool *pool, size_t 
bo_sz)
 void
 panfrost_pool_init(struct pan_pool *pool, void *memctx,
                    struct panfrost_device *dev,
-                   unsigned create_flags, bool prealloc,
-                   bool owned)
+                   unsigned create_flags, const char *label,
+                   bool prealloc, bool owned)
 {
         memset(pool, 0, sizeof(*pool));
         pool->dev = dev;
         pool->create_flags = create_flags;
         pool->owned = owned;
+        pool->label = label;
 
         if (owned)
                 util_dynarray_init(&pool->bos, memctx);
diff --git a/src/panfrost/lib/pan_pool.h b/src/panfrost/lib/pan_pool.h
index 84eb170118e..f0b639a6ce4 100644
--- a/src/panfrost/lib/pan_pool.h
+++ b/src/panfrost/lib/pan_pool.h
@@ -47,6 +47,9 @@ struct pan_pool {
         /* Within the topmost transient BO, how much has been used? */
         unsigned transient_offset;
 
+        /* Label for created BOs */
+        const char *label;
+
         /* BO flags to use in the pool */
         unsigned create_flags;
 
@@ -58,7 +61,7 @@ struct pan_pool {
 void
 panfrost_pool_init(struct pan_pool *pool, void *memctx,
                    struct panfrost_device *dev, unsigned create_flags,
-                   bool prealloc, bool owned);
+                   const char *label, bool prealloc, bool owned);
 
 void
 panfrost_pool_cleanup(struct pan_pool *pool);

_______________________________________________
mesa-commit mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to