From: Marek Olšák <marek.olsak@xxxxxxx> v2: update amdgpu-symbol-check --- amdgpu/amdgpu-symbol-check | 1 + amdgpu/amdgpu.h | 20 ++++++++++++++++++++ amdgpu/amdgpu_cs.c | 12 ++++++++++++ 3 files changed, 33 insertions(+) diff --git a/amdgpu/amdgpu-symbol-check b/amdgpu/amdgpu-symbol-check index bc9ed3f..7ecfc98 100755 --- a/amdgpu/amdgpu-symbol-check +++ b/amdgpu/amdgpu-symbol-check @@ -35,20 +35,21 @@ amdgpu_cs_destroy_semaphore amdgpu_cs_destroy_syncobj amdgpu_cs_export_syncobj amdgpu_cs_import_syncobj amdgpu_cs_query_fence_status amdgpu_cs_query_reset_state amdgpu_cs_signal_semaphore amdgpu_cs_submit amdgpu_cs_submit_raw amdgpu_cs_syncobj_export_sync_file amdgpu_cs_syncobj_import_sync_file +amdgpu_cs_syncobj_wait amdgpu_cs_wait_fences amdgpu_cs_wait_semaphore amdgpu_device_deinitialize amdgpu_device_initialize amdgpu_get_marketing_name amdgpu_query_buffer_size_alignment amdgpu_query_crtc_from_id amdgpu_query_firmware_version amdgpu_query_gds_info amdgpu_query_gpu_info diff --git a/amdgpu/amdgpu.h b/amdgpu/amdgpu.h index b44b9b6..979acfc 100644 --- a/amdgpu/amdgpu.h +++ b/amdgpu/amdgpu.h @@ -1347,20 +1347,40 @@ int amdgpu_cs_create_syncobj(amdgpu_device_handle dev, * \param syncobj - \c [in] sync object handle * * \return 0 on success\n * <0 - Negative POSIX Error code * */ int amdgpu_cs_destroy_syncobj(amdgpu_device_handle dev, uint32_t syncobj); /** + * Wait for one or all sync objects to signal. + * + * \param dev - \c [in] self-explanatory + * \param handles - \c [in] array of sync object handles + * \param num_handles - \c [in] self-explanatory + * \param timeout_nsec - \c [in] self-explanatory + * \param flags - \c [in] a bitmask of DRM_SYNCOBJ_WAIT_FLAGS_* + * \param first_signaled - \c [in] self-explanatory + * + * \return 0 on success\n + * -ETIME - Timeout + * <0 - Negative POSIX Error code + * + */ +int amdgpu_cs_syncobj_wait(amdgpu_device_handle dev, + uint32_t *handles, unsigned num_handles, + int64_t timeout_nsec, unsigned flags, + uint32_t *first_signaled); + +/** * Export kernel sync object to shareable fd. * * \param dev - \c [in] device handle * \param syncobj - \c [in] sync object handle * \param shared_fd - \c [out] shared file descriptor. * * \return 0 on success\n * <0 - Negative POSIX Error code * */ diff --git a/amdgpu/amdgpu_cs.c b/amdgpu/amdgpu_cs.c index 4a05536..2cde7bf 100644 --- a/amdgpu/amdgpu_cs.c +++ b/amdgpu/amdgpu_cs.c @@ -608,20 +608,32 @@ int amdgpu_cs_create_syncobj(amdgpu_device_handle dev, int amdgpu_cs_destroy_syncobj(amdgpu_device_handle dev, uint32_t handle) { if (NULL == dev) return -EINVAL; return drmSyncobjDestroy(dev->fd, handle); } +int amdgpu_cs_syncobj_wait(amdgpu_device_handle dev, + uint32_t *handles, unsigned num_handles, + int64_t timeout_nsec, unsigned flags, + uint32_t *first_signaled) +{ + if (NULL == dev) + return -EINVAL; + + return drmSyncobjWait(dev->fd, handles, num_handles, timeout_nsec, + flags, first_signaled); +} + int amdgpu_cs_export_syncobj(amdgpu_device_handle dev, uint32_t handle, int *shared_fd) { if (NULL == dev) return -EINVAL; return drmSyncobjHandleToFD(dev->fd, handle, shared_fd); } -- 2.7.4