From 31dd0a4a1e509c7cfbdf2cc015a89d58ffbdc896 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Tue, 29 Sep 2020 15:25:47 -0400 Subject: [PATCH] zink: use vkGetFenceStatus when we're obviously checking for status a timeout of 0 indicates that gallium wants to know whether a fence is done, so we can use a simpler call here Reviewed-by: Dave Airlie Part-of: --- src/gallium/drivers/zink/zink_fence.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/gallium/drivers/zink/zink_fence.c b/src/gallium/drivers/zink/zink_fence.c index a45540201de..9733ad0a1fc 100644 --- a/src/gallium/drivers/zink/zink_fence.c +++ b/src/gallium/drivers/zink/zink_fence.c @@ -113,8 +113,13 @@ zink_fence_finish(struct zink_screen *screen, struct zink_fence *fence, { if (!fence->submitted) return true; - bool success = vkWaitForFences(screen->dev, 1, &fence->fence, VK_TRUE, - timeout_ns) == VK_SUCCESS; + bool success; + + if (timeout_ns) + success = vkWaitForFences(screen->dev, 1, &fence->fence, VK_TRUE, timeout_ns) == VK_SUCCESS; + else + success = vkGetFenceStatus(screen->dev, fence->fence) == VK_SUCCESS; + if (success) { if (fence->active_queries) zink_prune_queries(screen, fence);