radv/amdgpu: Use VkResult for wait_timeline_syncobj.
authorBas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Sat, 11 Dec 2021 18:44:53 +0000 (19:44 +0100)
committerMarge Bot <emma+marge@anholt.net>
Tue, 28 Dec 2021 15:55:18 +0000 (15:55 +0000)
So we can actually return errors.

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

src/amd/vulkan/radv_device.c
src/amd/vulkan/radv_radeon_winsys.h
src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c

index 92e98f5..8994d3c 100644 (file)
@@ -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
index 6f874e7..07d3480 100644 (file)
@@ -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);
index e5d3bfb..b2ed11e 100644 (file)
@@ -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;
    }
 }