Module: Mesa
Branch: master
Commit: 01c62fca0a951410b6b67c1727810b5a3836b092
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=01c62fca0a951410b6b67c1727810b5a3836b092

Author: Mike Blumenkrantz <[email protected]>
Date:   Sun Apr  4 13:02:40 2021 -0400

zink: use zink_screen_handle_vkresult() for fence and timeline waiting

more consistent handling and some code size reduction

Reviewed-by: Dave Airlie <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10509>

---

 src/gallium/drivers/zink/zink_context.c | 18 ++++++------------
 src/gallium/drivers/zink/zink_fence.c   | 11 +----------
 2 files changed, 7 insertions(+), 22 deletions(-)

diff --git a/src/gallium/drivers/zink/zink_context.c 
b/src/gallium/drivers/zink/zink_context.c
index 46d21f695fc..a5b6f5999c1 100644
--- a/src/gallium/drivers/zink/zink_context.c
+++ b/src/gallium/drivers/zink/zink_context.c
@@ -1836,20 +1836,14 @@ timeline_wait(struct zink_context *ctx, uint32_t 
batch_id, uint64_t timeout)
    bool success = false;
    if (screen->device_lost)
       return true;
-   switch (screen->vk_WaitSemaphores(screen->dev, &wi, timeout)) {
-   case VK_SUCCESS:
-      success = true;
-      break;
-   case VK_ERROR_DEVICE_LOST:
-      if (ctx->reset.reset)
-         ctx->reset.reset(ctx->reset.data, PIPE_GUILTY_CONTEXT_RESET);
-      screen->device_lost = true;
-      break;
-   default:
-      break;
-   }
+   VkResult ret = screen->vk_WaitSemaphores(screen->dev, &wi, timeout);
+   success = zink_screen_handle_vkresult(screen, ret);
+
    if (success)
       zink_screen_update_last_finished(screen, batch_id);
+   else if (screen->device_lost && ctx->reset.reset)
+      ctx->reset.reset(ctx->reset.data, PIPE_GUILTY_CONTEXT_RESET);
+
    return success;
 }
 
diff --git a/src/gallium/drivers/zink/zink_fence.c 
b/src/gallium/drivers/zink/zink_fence.c
index 5f76a95adbb..7f96068beec 100644
--- a/src/gallium/drivers/zink/zink_fence.c
+++ b/src/gallium/drivers/zink/zink_fence.c
@@ -154,16 +154,7 @@ zink_vkfence_wait(struct zink_screen *screen, struct 
zink_fence *fence, uint64_t
       ret = vkWaitForFences(screen->dev, 1, &fence->fence, VK_TRUE, 
timeout_ns);
    else
       ret = vkGetFenceStatus(screen->dev, fence->fence);
-   switch (ret) {
-   case VK_SUCCESS:
-      success = true;
-      break;
-   case VK_ERROR_DEVICE_LOST:
-      screen->device_lost = true;
-      break;
-   default:
-      break;
-   }
+   success = zink_screen_handle_vkresult(screen, ret);
 
    if (success) {
       p_atomic_set(&fence->completed, true);

_______________________________________________
mesa-commit mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to