Module: Mesa
Branch: main
Commit: b447db41fcea9048d5352bb9a1948a4552704d39
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=b447db41fcea9048d5352bb9a1948a4552704d39

Author: Rob Clark <[email protected]>
Date:   Tue May  4 09:03:43 2021 -0700

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 <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10626>

---

 src/freedreno/computerator/main.c | 7 ++++++-
 src/freedreno/perfcntrs/fdperf.c  | 5 +++++
 2 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/src/freedreno/computerator/main.c 
b/src/freedreno/computerator/main.c
index 82b2d55de9e..42f0484f353 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 2789cc6bd87..a9645977b37 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);
 

_______________________________________________
mesa-commit mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to