[Mesa-dev] [PATCH 2/9] panfrost: Remove job from ctx->jobs at submission time

Alyssa Rosenzweig alyssa.rosenzweig at collabora.com
Fri Aug 2 15:00:28 UTC 2019


What happens if the CPU creates jobs significiantly faster than the GPU
processes them? Could you have four jobs for the same framebuffer in
flight at once?

At present, we do some heavy flushing so "no" but in the future we'll
want to lax up for performance.

On Fri, Aug 02, 2019 at 12:12:50PM +0200, Boris Brezillon wrote:
> This guarantees that new draws targetting the same framebuffer will
> get a new job instance.
> 
> Signed-off-by: Boris Brezillon <boris.brezillon at collabora.com>
> ---
>  src/gallium/drivers/panfrost/pan_job.c | 8 ++++++++
>  1 file changed, 8 insertions(+)
> 
> diff --git a/src/gallium/drivers/panfrost/pan_job.c b/src/gallium/drivers/panfrost/pan_job.c
> index 960c8556e2f0..d2a4c8c3c600 100644
> --- a/src/gallium/drivers/panfrost/pan_job.c
> +++ b/src/gallium/drivers/panfrost/pan_job.c
> @@ -173,6 +173,14 @@ panfrost_job_submit(struct panfrost_context *ctx, struct panfrost_job *job)
>  
>          if (ret)
>                  fprintf(stderr, "panfrost_job_submit failed: %d\n", ret);
> +
> +        /* Remove the job from the ctx->jobs set so that future
> +         * panfrost_get_job() calls don't see it.
> +         * We must reset the job key to avoid removing another valid entry when
> +         * the job is freed.
> +         */
> +        _mesa_hash_table_remove_key(ctx->jobs, &job->key);
> +        memset(&job->key, 0, sizeof(job->key));
>  }
>  
>  void
> -- 
> 2.21.0
> 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20190802/ab77eda1/attachment.sig>


More information about the mesa-dev mailing list