panfrost: Remove job from ctx->jobs at submission time
authorBoris Brezillon <boris.brezillon@collabora.com>
Fri, 2 Aug 2019 17:18:41 +0000 (19:18 +0200)
committerBoris Brezillon <boris.brezillon@collabora.com>
Fri, 2 Aug 2019 19:54:58 +0000 (21:54 +0200)
This guarantees that new draws targetting the same framebuffer will
get a new job instance.

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

index cc81d475165ed920dd528e6465f5957f030432c9..d75af0c5330834f4f0b9d47145b4605c2777a676 100644 (file)
@@ -198,6 +198,14 @@ panfrost_job_submit(struct panfrost_context *ctx, struct panfrost_job *job)
         */
         assert(!ctx->job || job == ctx->job);
         ctx->job = NULL;
+
+        /* 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