freedreno/tools: Fix async flush vs fdperf/computerator
authorRob Clark <robdclark@chromium.org>
Tue, 4 May 2021 16:03:43 +0000 (09:03 -0700)
committerMarge Bot <eric+marge@anholt.net>
Wed, 5 May 2021 20:32:31 +0000 (20:32 +0000)
They need to wait on the ready fence to ensure the submit has been
flushed to the kernel.

Signed-off-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10626>

src/freedreno/computerator/main.c
src/freedreno/perfcntrs/fdperf.c

index 82b2d55..42f0484 100644 (file)
@@ -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);
index 2789cc6..a964597 100644 (file)
@@ -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);