From: Rob Clark Date: Tue, 4 May 2021 16:03:43 +0000 (-0700) Subject: freedreno/tools: Fix async flush vs fdperf/computerator X-Git-Tag: upstream/21.2.3~3750 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b447db41fcea9048d5352bb9a1948a4552704d39;p=platform%2Fupstream%2Fmesa.git freedreno/tools: Fix async flush vs fdperf/computerator They need to wait on the ready fence to ensure the submit has been flushed to the kernel. Signed-off-by: Rob Clark Part-of: --- diff --git a/src/freedreno/computerator/main.c b/src/freedreno/computerator/main.c index 82b2d55..42f0484 100644 --- a/src/freedreno/computerator/main.c +++ b/src/freedreno/computerator/main.c @@ -284,7 +284,12 @@ main(int argc, char **argv) backend->emit_grid(kernel, grid, submit); - fd_submit_flush(submit, -1, NULL); + struct fd_submit_fence fence = {}; + util_queue_fence_init(&fence.ready); + + fd_submit_flush(submit, -1, &fence); + + util_queue_fence_wait(&fence.ready); for (int i = 0; i < kernel->num_bufs; i++) { fd_bo_cpu_prep(kernel->bufs[i], pipe, FD_BO_PREP_READ); diff --git a/src/freedreno/perfcntrs/fdperf.c b/src/freedreno/perfcntrs/fdperf.c index 2789cc6..a964597 100644 --- a/src/freedreno/perfcntrs/fdperf.c +++ b/src/freedreno/perfcntrs/fdperf.c @@ -173,9 +173,14 @@ flush_ring(void) if (!dev.submit) return; + struct fd_submit_fence fence = {}; + util_queue_fence_init(&fence.ready); + ret = fd_submit_flush(dev.submit, -1, NULL); + if (ret) errx(1, "submit failed: %d", ret); + util_queue_fence_wait(&fence.ready); fd_ringbuffer_del(dev.ring); fd_submit_del(dev.submit);