summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/panfrost
diff options
context:
space:
mode:
authorBoris Brezillon <[email protected]>2019-09-14 18:15:26 +0200
committerBoris Brezillon <[email protected]>2019-09-18 10:27:30 +0200
commit4eac1b20080dce362ded2cfafde668156480a9a9 (patch)
tree9efe9fd60d50febe8eb063a9f48192204bad7023 /src/gallium/drivers/panfrost
parentc16fb1f48dc349b0eb54bf12aab13a113fb2f29e (diff)
panfrost: Add polygon_list to the batch BO set at allocation time
That's what we do for other per-batch BOs, and we'll soon add an helper to automate this create_bo()+add_bo()+bo_unreference() sequence, so let's prepare the code to ease this transition. Signed-off-by: Boris Brezillon <[email protected]> Reviewed-by: Alyssa Rosenzweig <[email protected]>
Diffstat (limited to 'src/gallium/drivers/panfrost')
-rw-r--r--src/gallium/drivers/panfrost/pan_drm.c1
-rw-r--r--src/gallium/drivers/panfrost/pan_job.c10
2 files changed, 7 insertions, 4 deletions
diff --git a/src/gallium/drivers/panfrost/pan_drm.c b/src/gallium/drivers/panfrost/pan_drm.c
index ada6221850c..b77af714d11 100644
--- a/src/gallium/drivers/panfrost/pan_drm.c
+++ b/src/gallium/drivers/panfrost/pan_drm.c
@@ -278,7 +278,6 @@ panfrost_drm_submit_vs_fs_batch(struct panfrost_batch *batch, bool has_draws)
panfrost_batch_add_bo(batch, ctx->scratchpad);
panfrost_batch_add_bo(batch, ctx->tiler_heap);
- panfrost_batch_add_bo(batch, batch->polygon_list);
if (batch->first_job.gpu) {
ret = panfrost_drm_submit_batch(batch, batch->first_job.gpu, 0);
diff --git a/src/gallium/drivers/panfrost/pan_job.c b/src/gallium/drivers/panfrost/pan_job.c
index 03119e64384..e06440010ae 100644
--- a/src/gallium/drivers/panfrost/pan_job.c
+++ b/src/gallium/drivers/panfrost/pan_job.c
@@ -67,9 +67,6 @@ panfrost_free_batch(struct panfrost_batch *batch)
panfrost_bo_unreference(ctx->base.screen, bo);
}
- /* Unreference the polygon list */
- panfrost_bo_unreference(ctx->base.screen, batch->polygon_list);
-
_mesa_hash_table_remove_key(ctx->batches, &batch->key);
if (ctx->batch == batch)
@@ -158,6 +155,13 @@ panfrost_batch_get_polygon_list(struct panfrost_batch *batch, unsigned size)
batch->polygon_list = panfrost_drm_create_bo(screen,
size, PAN_ALLOCATE_INVISIBLE);
+ panfrost_batch_add_bo(batch, batch->polygon_list);
+
+ /* A BO reference has been retained by panfrost_batch_add_bo(),
+ * so we need to unreference it here if we want the BO to be
+ * automatically released when the batch is destroyed.
+ */
+ panfrost_bo_unreference(&screen->base, batch->polygon_list);
}
return batch->polygon_list->gpu;