Mesa (main): radv/amdgpu: Use VkResult for wait_timeline_syncobj.

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Dec 28 16:14:22 UTC 2021


Module: Mesa
Branch: main
Commit: 50658ed8da210680dfe24ea1cf312ba7be109e6a
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=50658ed8da210680dfe24ea1cf312ba7be109e6a

Author: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>
Date:   Sat Dec 11 19:44:53 2021 +0100

radv/amdgpu: Use VkResult for wait_timeline_syncobj.

So we can actually return errors.

Reviewed-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14165>

---

 src/amd/vulkan/radv_device.c                  | 12 ++++++------
 src/amd/vulkan/radv_radeon_winsys.h           |  6 +++---
 src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c |  8 ++++----
 3 files changed, 13 insertions(+), 13 deletions(-)

diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c
index 92e98f57fc3..8994d3cf700 100644
--- a/src/amd/vulkan/radv_device.c
+++ b/src/amd/vulkan/radv_device.c
@@ -4876,14 +4876,14 @@ wait_for_submission_timelines_available(struct radv_deferred_queue_submission *s
       ++syncobj_idx;
    }
 
-   bool success = true;
+   VkResult result = VK_SUCCESS;
    if (syncobj_idx > 0) {
-      success = device->ws->wait_timeline_syncobj(device->ws, syncobj, points, syncobj_idx, true,
-                                                  true, timeout);
+      result = device->ws->wait_timeline_syncobj(device->ws, syncobj, points, syncobj_idx, true,
+                                                 true, timeout);
    }
 
    free(points);
-   return success ? VK_SUCCESS : VK_TIMEOUT;
+   return result;
 }
 
 static int
@@ -6276,11 +6276,11 @@ radv_WaitSemaphores(VkDevice _device, const VkSemaphoreWaitInfo *pWaitInfo, uint
       handles[i] = semaphore->permanent.syncobj;
    }
 
-   bool success =
+   VkResult result =
       device->ws->wait_timeline_syncobj(device->ws, handles, pWaitInfo->pValues,
                                         pWaitInfo->semaphoreCount, wait_all, false, abs_timeout);
    free(handles);
-   return success ? VK_SUCCESS : VK_TIMEOUT;
+   return result;
 }
 
 VKAPI_ATTR VkResult VKAPI_CALL
diff --git a/src/amd/vulkan/radv_radeon_winsys.h b/src/amd/vulkan/radv_radeon_winsys.h
index 6f874e738be..07d3480b07a 100644
--- a/src/amd/vulkan/radv_radeon_winsys.h
+++ b/src/amd/vulkan/radv_radeon_winsys.h
@@ -301,9 +301,9 @@ struct radeon_winsys {
    VkResult (*query_syncobj)(struct radeon_winsys *ws, uint32_t handle, uint64_t *point);
    bool (*wait_syncobj)(struct radeon_winsys *ws, const uint32_t *handles, uint32_t handle_count,
                         bool wait_all, uint64_t timeout);
-   bool (*wait_timeline_syncobj)(struct radeon_winsys *ws, const uint32_t *handles,
-                                 const uint64_t *points, uint32_t handle_count, bool wait_all,
-                                 bool available, uint64_t timeout);
+   VkResult (*wait_timeline_syncobj)(struct radeon_winsys *ws, const uint32_t *handles,
+                                     const uint64_t *points, uint32_t handle_count, bool wait_all,
+                                     bool available, uint64_t timeout);
 
    int (*export_syncobj)(struct radeon_winsys *ws, uint32_t syncobj, int *fd);
    int (*import_syncobj)(struct radeon_winsys *ws, int fd, uint32_t *syncobj);
diff --git a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c
index e5d3bfb545e..b2ed11e60a0 100644
--- a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c
+++ b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c
@@ -1844,7 +1844,7 @@ radv_amdgpu_wait_syncobj(struct radeon_winsys *_ws, const uint32_t *handles, uin
    }
 }
 
-static bool
+static VkResult
 radv_amdgpu_wait_timeline_syncobj(struct radeon_winsys *_ws, const uint32_t *handles,
                                   const uint64_t *points, uint32_t handle_count, bool wait_all,
                                   bool available, uint64_t timeout)
@@ -1860,12 +1860,12 @@ radv_amdgpu_wait_timeline_syncobj(struct radeon_winsys *_ws, const uint32_t *han
          (available ? DRM_SYNCOBJ_WAIT_FLAGS_WAIT_AVAILABLE : 0),
       NULL);
    if (ret == 0) {
-      return true;
+      return VK_SUCCESS;
    } else if (ret == -ETIME) {
-      return false;
+      return VK_TIMEOUT;
    } else {
       fprintf(stderr, "amdgpu: radv_amdgpu_wait_timeline_syncobj failed! (%d)\n", ret);
-      return false;
+      return VK_ERROR_UNKNOWN;
    }
 }
 



More information about the mesa-commit mailing list