expose timeline signal/export/import interfaces v2
v2: adapt to new one transfer ioctl Signed-off-by: Chunming Zhou <david1.zhou@amd.com> Acked-by: Christian König <christian.koenig@amd.com> Acked-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>main
parent
12712eb6e3
commit
6bb5cc174b
|
@ -52,10 +52,13 @@ amdgpu_cs_submit
|
||||||
amdgpu_cs_submit_raw
|
amdgpu_cs_submit_raw
|
||||||
amdgpu_cs_submit_raw2
|
amdgpu_cs_submit_raw2
|
||||||
amdgpu_cs_syncobj_export_sync_file
|
amdgpu_cs_syncobj_export_sync_file
|
||||||
|
amdgpu_cs_syncobj_export_sync_file2
|
||||||
amdgpu_cs_syncobj_import_sync_file
|
amdgpu_cs_syncobj_import_sync_file
|
||||||
|
amdgpu_cs_syncobj_import_sync_file2
|
||||||
amdgpu_cs_syncobj_query
|
amdgpu_cs_syncobj_query
|
||||||
amdgpu_cs_syncobj_reset
|
amdgpu_cs_syncobj_reset
|
||||||
amdgpu_cs_syncobj_signal
|
amdgpu_cs_syncobj_signal
|
||||||
|
amdgpu_cs_syncobj_timeline_signal
|
||||||
amdgpu_cs_syncobj_timeline_wait
|
amdgpu_cs_syncobj_timeline_wait
|
||||||
amdgpu_cs_syncobj_wait
|
amdgpu_cs_syncobj_wait
|
||||||
amdgpu_cs_wait_fences
|
amdgpu_cs_wait_fences
|
||||||
|
|
|
@ -1516,6 +1516,23 @@ int amdgpu_cs_syncobj_reset(amdgpu_device_handle dev,
|
||||||
int amdgpu_cs_syncobj_signal(amdgpu_device_handle dev,
|
int amdgpu_cs_syncobj_signal(amdgpu_device_handle dev,
|
||||||
const uint32_t *syncobjs, uint32_t syncobj_count);
|
const uint32_t *syncobjs, uint32_t syncobj_count);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Signal kernel timeline sync objects.
|
||||||
|
*
|
||||||
|
* \param dev - \c [in] device handle
|
||||||
|
* \param syncobjs - \c [in] array of sync object handles
|
||||||
|
* \param points - \c [in] array of timeline points
|
||||||
|
* \param syncobj_count - \c [in] number of handles in syncobjs
|
||||||
|
*
|
||||||
|
* \return 0 on success\n
|
||||||
|
* <0 - Negative POSIX Error code
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
int amdgpu_cs_syncobj_timeline_signal(amdgpu_device_handle dev,
|
||||||
|
const uint32_t *syncobjs,
|
||||||
|
uint64_t *points,
|
||||||
|
uint32_t syncobj_count);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Wait for one or all sync objects to signal.
|
* Wait for one or all sync objects to signal.
|
||||||
*
|
*
|
||||||
|
@ -1633,7 +1650,41 @@ int amdgpu_cs_syncobj_export_sync_file(amdgpu_device_handle dev,
|
||||||
int amdgpu_cs_syncobj_import_sync_file(amdgpu_device_handle dev,
|
int amdgpu_cs_syncobj_import_sync_file(amdgpu_device_handle dev,
|
||||||
uint32_t syncobj,
|
uint32_t syncobj,
|
||||||
int sync_file_fd);
|
int sync_file_fd);
|
||||||
|
/**
|
||||||
|
* Export kernel timeline sync object to a sync_file.
|
||||||
|
*
|
||||||
|
* \param dev - \c [in] device handle
|
||||||
|
* \param syncobj - \c [in] sync object handle
|
||||||
|
* \param point - \c [in] timeline point
|
||||||
|
* \param flags - \c [in] flags
|
||||||
|
* \param sync_file_fd - \c [out] sync_file file descriptor.
|
||||||
|
*
|
||||||
|
* \return 0 on success\n
|
||||||
|
* <0 - Negative POSIX Error code
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
int amdgpu_cs_syncobj_export_sync_file2(amdgpu_device_handle dev,
|
||||||
|
uint32_t syncobj,
|
||||||
|
uint64_t point,
|
||||||
|
uint32_t flags,
|
||||||
|
int *sync_file_fd);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Import kernel timeline sync object from a sync_file.
|
||||||
|
*
|
||||||
|
* \param dev - \c [in] device handle
|
||||||
|
* \param syncobj - \c [in] sync object handle
|
||||||
|
* \param point - \c [in] timeline point
|
||||||
|
* \param sync_file_fd - \c [in] sync_file file descriptor.
|
||||||
|
*
|
||||||
|
* \return 0 on success\n
|
||||||
|
* <0 - Negative POSIX Error code
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
int amdgpu_cs_syncobj_import_sync_file2(amdgpu_device_handle dev,
|
||||||
|
uint32_t syncobj,
|
||||||
|
uint64_t point,
|
||||||
|
int sync_file_fd);
|
||||||
/**
|
/**
|
||||||
* Export an amdgpu fence as a handle (syncobj or fd).
|
* Export an amdgpu fence as a handle (syncobj or fd).
|
||||||
*
|
*
|
||||||
|
|
|
@ -674,6 +674,18 @@ drm_public int amdgpu_cs_syncobj_signal(amdgpu_device_handle dev,
|
||||||
return drmSyncobjSignal(dev->fd, syncobjs, syncobj_count);
|
return drmSyncobjSignal(dev->fd, syncobjs, syncobj_count);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
drm_public int amdgpu_cs_syncobj_timeline_signal(amdgpu_device_handle dev,
|
||||||
|
const uint32_t *syncobjs,
|
||||||
|
uint64_t *points,
|
||||||
|
uint32_t syncobj_count)
|
||||||
|
{
|
||||||
|
if (NULL == dev)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
return drmSyncobjTimelineSignal(dev->fd, syncobjs,
|
||||||
|
points, syncobj_count);
|
||||||
|
}
|
||||||
|
|
||||||
drm_public int amdgpu_cs_syncobj_wait(amdgpu_device_handle dev,
|
drm_public int amdgpu_cs_syncobj_wait(amdgpu_device_handle dev,
|
||||||
uint32_t *handles, unsigned num_handles,
|
uint32_t *handles, unsigned num_handles,
|
||||||
int64_t timeout_nsec, unsigned flags,
|
int64_t timeout_nsec, unsigned flags,
|
||||||
|
@ -749,6 +761,62 @@ drm_public int amdgpu_cs_syncobj_import_sync_file(amdgpu_device_handle dev,
|
||||||
return drmSyncobjImportSyncFile(dev->fd, syncobj, sync_file_fd);
|
return drmSyncobjImportSyncFile(dev->fd, syncobj, sync_file_fd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
drm_public int amdgpu_cs_syncobj_export_sync_file2(amdgpu_device_handle dev,
|
||||||
|
uint32_t syncobj,
|
||||||
|
uint64_t point,
|
||||||
|
uint32_t flags,
|
||||||
|
int *sync_file_fd)
|
||||||
|
{
|
||||||
|
uint32_t binary_handle;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
if (NULL == dev)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
if (!point)
|
||||||
|
return drmSyncobjExportSyncFile(dev->fd, syncobj, sync_file_fd);
|
||||||
|
|
||||||
|
ret = drmSyncobjCreate(dev->fd, 0, &binary_handle);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
ret = drmSyncobjTransfer(dev->fd, binary_handle, 0,
|
||||||
|
syncobj, point, flags);
|
||||||
|
if (ret)
|
||||||
|
goto out;
|
||||||
|
ret = drmSyncobjExportSyncFile(dev->fd, binary_handle, sync_file_fd);
|
||||||
|
out:
|
||||||
|
drmSyncobjDestroy(dev->fd, binary_handle);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
drm_public int amdgpu_cs_syncobj_import_sync_file2(amdgpu_device_handle dev,
|
||||||
|
uint32_t syncobj,
|
||||||
|
uint64_t point,
|
||||||
|
int sync_file_fd)
|
||||||
|
{
|
||||||
|
uint32_t binary_handle;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
if (NULL == dev)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
if (!point)
|
||||||
|
return drmSyncobjImportSyncFile(dev->fd, syncobj, sync_file_fd);
|
||||||
|
|
||||||
|
ret = drmSyncobjCreate(dev->fd, 0, &binary_handle);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
ret = drmSyncobjImportSyncFile(dev->fd, binary_handle, sync_file_fd);
|
||||||
|
if (ret)
|
||||||
|
goto out;
|
||||||
|
ret = drmSyncobjTransfer(dev->fd, syncobj, point,
|
||||||
|
binary_handle, 0, 0);
|
||||||
|
out:
|
||||||
|
drmSyncobjDestroy(dev->fd, binary_handle);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
drm_public int amdgpu_cs_submit_raw(amdgpu_device_handle dev,
|
drm_public int amdgpu_cs_submit_raw(amdgpu_device_handle dev,
|
||||||
amdgpu_context_handle context,
|
amdgpu_context_handle context,
|
||||||
amdgpu_bo_list_handle bo_list_handle,
|
amdgpu_bo_list_handle bo_list_handle,
|
||||||
|
|
Loading…
Reference in New Issue