summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeng Huang <shawn.p.huang@gmail.com>2020-02-01 22:31:00 -0500
committerMarge Bot <eric+marge@anholt.net>2020-02-12 23:51:50 +0000
commit0660cbf4262891e6380faf0d99217b2d27873051 (patch)
tree7c2ff08abc7fc2e67060c628413910f051728a81
parent787b56ac0e5d62ad07cb0804be5275d885201262 (diff)
radeonsi: make si_fence_server_signal flush pipe without work
glSignalSemaphoreEXT sometime doesn't signal the semaphore, it is because radeonsi doesn't flush if gl context doesn't have pending work. Fix the porblem by always submit ib. Reviewed-by: Marek Olšák <marek.olsak@amd.com> Cc: 19.3 20.0 <mesa-stable@lists.freedesktop.org> Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3779> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3779>
-rw-r--r--src/gallium/drivers/radeonsi/si_fence.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/gallium/drivers/radeonsi/si_fence.c b/src/gallium/drivers/radeonsi/si_fence.c
index e9dd3e937f2..26b5fc4bdba 100644
--- a/src/gallium/drivers/radeonsi/si_fence.c
+++ b/src/gallium/drivers/radeonsi/si_fence.c
@@ -606,7 +606,11 @@ static void si_fence_server_signal(struct pipe_context *ctx,
* Therefore, we must make sure that we flush the pipe to avoid
* new work being emitted and getting executed before the signal
* operation.
+ *
+ * Set sctx->initial_gfx_cs_size to force IB submission even if
+ * it is empty.
*/
+ sctx->initial_gfx_cs_size = 0;
si_flush_from_st(ctx, NULL, PIPE_FLUSH_ASYNC);
}