Mesa (main): panfrost: Maintain a bitmap of active batches
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Tue Aug 24 19:58:00 UTC 2021
Module: Mesa
Branch: main
Commit: 79dd1a4e634ffd735323da7111f00e9dbda6a354
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=79dd1a4e634ffd735323da7111f00e9dbda6a354
Author: Alyssa Rosenzweig <alyssa at collabora.com>
Date: Tue Aug 17 16:39:40 2021 +0000
panfrost: Maintain a bitmap of active batches
This is on the context, so no concurrency issues. This will allow us to
efficiently iterate active batches.
Signed-off-by: Alyssa Rosenzweig <alyssa at collabora.com>
Cc: mesa-stable
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12528>
---
src/gallium/drivers/panfrost/pan_context.h | 3 +++
src/gallium/drivers/panfrost/pan_job.c | 4 ++++
2 files changed, 7 insertions(+)
diff --git a/src/gallium/drivers/panfrost/pan_context.h b/src/gallium/drivers/panfrost/pan_context.h
index 98394c1bcf8..78b39ebaef1 100644
--- a/src/gallium/drivers/panfrost/pan_context.h
+++ b/src/gallium/drivers/panfrost/pan_context.h
@@ -141,6 +141,9 @@ struct panfrost_context {
struct {
uint64_t seqnum;
struct panfrost_batch slots[PAN_MAX_BATCHES];
+
+ /** Set of active batches for faster traversal */
+ BITSET_DECLARE(active, PAN_MAX_BATCHES);
} batches;
/* Bound job batch */
diff --git a/src/gallium/drivers/panfrost/pan_job.c b/src/gallium/drivers/panfrost/pan_job.c
index 2bf544860a1..f7339678f30 100644
--- a/src/gallium/drivers/panfrost/pan_job.c
+++ b/src/gallium/drivers/panfrost/pan_job.c
@@ -143,6 +143,7 @@ panfrost_batch_cleanup(struct panfrost_batch *batch)
util_sparse_array_finish(&batch->bos);
memset(batch, 0, sizeof(*batch));
+ BITSET_CLEAR(ctx->batches.active, batch_idx);
}
static void
@@ -177,6 +178,9 @@ panfrost_get_batch(struct panfrost_context *ctx,
panfrost_batch_init(ctx, key, batch);
+ unsigned batch_idx = panfrost_batch_idx(batch);
+ BITSET_SET(ctx->batches.active, batch_idx);
+
return batch;
}
More information about the mesa-commit
mailing list