radeonsi: don't flush asynchronously for fence_server_signal
authorMarek Olšák <marek.olsak@amd.com>
Tue, 20 Sep 2022 20:23:41 +0000 (16:23 -0400)
committerMarge Bot <emma+marge@anholt.net>
Wed, 21 Sep 2022 14:54:50 +0000 (14:54 +0000)
See the comment.

Fixes: 21b3a234 - mesa: fix SignalSemaphoreEXT behavior

Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18223>

src/gallium/drivers/radeonsi/si_fence.c

index b698af0..ddd799c 100644 (file)
@@ -571,8 +571,11 @@ static void si_fence_server_signal(struct pipe_context *ctx, struct pipe_fence_h
     * operation.
     *
     * Forces a flush even if the GFX CS is empty.
+    *
+    * The flush must not be asynchronous because the kernel must receive
+    * the scheduled "signal" operation before any wait.
     */
-   si_flush_all_queues(ctx, NULL, PIPE_FLUSH_ASYNC, true);
+   si_flush_all_queues(ctx, NULL, 0, true);
 }
 
 static void si_fence_server_sync(struct pipe_context *ctx, struct pipe_fence_handle *fence)