From: Emil Velikov Date: Thu, 25 Apr 2019 17:42:03 +0000 (+0100) Subject: llvmpipe: correctly handle waiting in llvmpipe_fence_finish X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=591955d82d8d9fd752b900b9bdc0c17085d55560;p=mesa.git llvmpipe: correctly handle waiting in llvmpipe_fence_finish Currently if the timeout differs from 0, we'll end up with infinite wait... even if the user is perfectly clear they don't want that. Use the new lp_fence_timedwait() helper guarding both waits in an !lp_fence_signalled block like the rest of llvmpipe. Signed-off-by: Emil Velikov Reviewed-by: Roland Scheidegger --- diff --git a/src/gallium/drivers/llvmpipe/lp_screen.c b/src/gallium/drivers/llvmpipe/lp_screen.c index 8426427e397..510346d2abf 100644 --- a/src/gallium/drivers/llvmpipe/lp_screen.c +++ b/src/gallium/drivers/llvmpipe/lp_screen.c @@ -637,7 +637,12 @@ llvmpipe_fence_finish(struct pipe_screen *screen, if (!timeout) return lp_fence_signalled(f); - lp_fence_wait(f); + if (!lp_fence_signalled(f)) { + if (timeout != PIPE_TIMEOUT_INFINITE) + return lp_fence_timedwait(f, timeout); + + lp_fence_wait(f); + } return TRUE; }