From 0660cbf4262891e6380faf0d99217b2d27873051 Mon Sep 17 00:00:00 2001 From: Peng Huang Date: Sat, 1 Feb 2020 22:31:00 -0500 Subject: [PATCH] radeonsi: make si_fence_server_signal flush pipe without work MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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 Cc: 19.3 20.0 Tested-by: Marge Bot Part-of: --- src/gallium/drivers/radeonsi/si_fence.c | 4 ++++ 1 file changed, 4 insertions(+) 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); } -- 2.30.2