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>
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);
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);