panfrost: Add transient BOs to job batches
authorBoris Brezillon <boris.brezillon@collabora.com>
Fri, 30 Aug 2019 13:38:56 +0000 (15:38 +0200)
committerBoris Brezillon <boris.brezillon@collabora.com>
Fri, 30 Aug 2019 20:13:41 +0000 (22:13 +0200)
Memory allocated through panfrost_allocate_transient() is likely to
come from the transient pool. Let's add the BO backing the allocated
memory region to the job batch so the kernel can retain this BO while
jobs are executed.

In practice that has never been a problem because the transient pool
is never shrinked, and even if it was, we still control the lifetime of
the job, so there's no reason for this BO to be freed before the GPU is
done executing the batch. But it still make sense to add the BO for
debugging purpose.

Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
src/gallium/drivers/panfrost/pan_allocate.c
src/gallium/drivers/panfrost/pan_drm.c

index fb8b18fe718bc8b8a57be01eb6becafaf25d0241..78318ee1784f5d40d6b381503cc3fbb19c80970b 100644 (file)
@@ -111,6 +111,8 @@ panfrost_allocate_transient(struct panfrost_context *ctx, size_t sz)
                         bo = panfrost_create_slab(screen, &index);
                 }
 
+                panfrost_job_add_bo(batch, bo);
+
                 /* Remember we created this */
                 util_dynarray_append(&batch->transient_indices, unsigned, index);
 
index fc2e9255fac085c4d233e381984fd7f75703d093..4e69282480975dd5dc0bc6099de1ab358e82bc49 100644 (file)
@@ -298,7 +298,6 @@ panfrost_drm_submit_vs_fs_job(struct panfrost_context *ctx, bool has_draws)
 
         struct panfrost_job *job = panfrost_get_job_for_fbo(ctx);
 
-        /* TODO: Add here the transient pools */
         panfrost_job_add_bo(job, ctx->scratchpad.bo);
         panfrost_job_add_bo(job, ctx->tiler_heap.bo);
         panfrost_job_add_bo(job, job->polygon_list);