diff options
author | Dave Airlie | 2017-07-16 14:18:40 -0500 |
---|---|---|
committer | Dave Airlie | 2017-07-18 18:32:53 -0500 |
commit | 69532d0188ffa12454bc26bb1c30c52555a984e0 (patch) | |
tree | 7d682520e9c54bed62cff7dbcf3e7c960f5f1eee /amdgpu | |
parent | ac214017904b31bc5f80f802d748d5f4f3149d22 (diff) | |
download | external-libdrm-69532d0188ffa12454bc26bb1c30c52555a984e0.tar.gz external-libdrm-69532d0188ffa12454bc26bb1c30c52555a984e0.tar.xz external-libdrm-69532d0188ffa12454bc26bb1c30c52555a984e0.zip |
drm/amdgpu: add syncobj create/destroy/import/export apis
These are just wrappers using the amdgpu device handle.
Acked-by: Chunming Zhou <david1.zhou@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'amdgpu')
-rw-r--r-- | amdgpu/amdgpu.h | 55 | ||||
-rw-r--r-- | amdgpu/amdgpu_cs.c | 38 |
2 files changed, 92 insertions, 1 deletions
diff --git a/amdgpu/amdgpu.h b/amdgpu/amdgpu.h index 1901fa8c..183f974c 100644 --- a/amdgpu/amdgpu.h +++ b/amdgpu/amdgpu.h | |||
@@ -1328,8 +1328,61 @@ int amdgpu_cs_destroy_semaphore(amdgpu_semaphore_handle sem); | |||
1328 | */ | 1328 | */ |
1329 | const char *amdgpu_get_marketing_name(amdgpu_device_handle dev); | 1329 | const char *amdgpu_get_marketing_name(amdgpu_device_handle dev); |
1330 | 1330 | ||
1331 | /** | ||
1332 | * Create kernel sync object | ||
1333 | * | ||
1334 | * \param dev - \c [in] device handle | ||
1335 | * \param syncobj - \c [out] sync object handle | ||
1336 | * | ||
1337 | * \return 0 on success\n | ||
1338 | * <0 - Negative POSIX Error code | ||
1339 | * | ||
1340 | */ | ||
1341 | int amdgpu_cs_create_syncobj(amdgpu_device_handle dev, | ||
1342 | uint32_t *syncobj); | ||
1343 | /** | ||
1344 | * Destroy kernel sync object | ||
1345 | * | ||
1346 | * \param dev - \c [in] device handle | ||
1347 | * \param syncobj - \c [in] sync object handle | ||
1348 | * | ||
1349 | * \return 0 on success\n | ||
1350 | * <0 - Negative POSIX Error code | ||
1351 | * | ||
1352 | */ | ||
1353 | int amdgpu_cs_destroy_syncobj(amdgpu_device_handle dev, | ||
1354 | uint32_t syncobj); | ||
1355 | |||
1356 | /** | ||
1357 | * Export kernel sync object to shareable fd. | ||
1358 | * | ||
1359 | * \param dev - \c [in] device handle | ||
1360 | * \param syncobj - \c [in] sync object handle | ||
1361 | * \param shared_fd - \c [out] shared file descriptor. | ||
1362 | * | ||
1363 | * \return 0 on success\n | ||
1364 | * <0 - Negative POSIX Error code | ||
1365 | * | ||
1366 | */ | ||
1367 | int amdgpu_cs_export_syncobj(amdgpu_device_handle dev, | ||
1368 | uint32_t syncobj, | ||
1369 | int *shared_fd); | ||
1370 | /** | ||
1371 | * Import kernel sync object from shareable fd. | ||
1372 | * | ||
1373 | * \param dev - \c [in] device handle | ||
1374 | * \param shared_fd - \c [in] shared file descriptor. | ||
1375 | * \param syncobj - \c [out] sync object handle | ||
1376 | * | ||
1377 | * \return 0 on success\n | ||
1378 | * <0 - Negative POSIX Error code | ||
1379 | * | ||
1380 | */ | ||
1381 | int amdgpu_cs_import_syncobj(amdgpu_device_handle dev, | ||
1382 | int shared_fd, | ||
1383 | uint32_t *syncobj); | ||
1384 | |||
1331 | #ifdef __cplusplus | 1385 | #ifdef __cplusplus |
1332 | } | 1386 | } |
1333 | #endif | 1387 | #endif |
1334 | |||
1335 | #endif /* #ifdef _AMDGPU_H_ */ | 1388 | #endif /* #ifdef _AMDGPU_H_ */ |
diff --git a/amdgpu/amdgpu_cs.c b/amdgpu/amdgpu_cs.c index 868eb7b0..722fd75b 100644 --- a/amdgpu/amdgpu_cs.c +++ b/amdgpu/amdgpu_cs.c | |||
@@ -596,3 +596,41 @@ int amdgpu_cs_destroy_semaphore(amdgpu_semaphore_handle sem) | |||
596 | { | 596 | { |
597 | return amdgpu_cs_unreference_sem(sem); | 597 | return amdgpu_cs_unreference_sem(sem); |
598 | } | 598 | } |
599 | |||
600 | int amdgpu_cs_create_syncobj(amdgpu_device_handle dev, | ||
601 | uint32_t *handle) | ||
602 | { | ||
603 | if (NULL == dev) | ||
604 | return -EINVAL; | ||
605 | |||
606 | return drmSyncobjCreate(dev->fd, 0, handle); | ||
607 | } | ||
608 | |||
609 | int amdgpu_cs_destroy_syncobj(amdgpu_device_handle dev, | ||
610 | uint32_t handle) | ||
611 | { | ||
612 | if (NULL == dev) | ||
613 | return -EINVAL; | ||
614 | |||
615 | return drmSyncobjDestroy(dev->fd, handle); | ||
616 | } | ||
617 | |||
618 | int amdgpu_cs_export_syncobj(amdgpu_device_handle dev, | ||
619 | uint32_t handle, | ||
620 | int *shared_fd) | ||
621 | { | ||
622 | if (NULL == dev) | ||
623 | return -EINVAL; | ||
624 | |||
625 | return drmSyncobjHandleToFD(dev->fd, handle, shared_fd); | ||
626 | } | ||
627 | |||
628 | int amdgpu_cs_import_syncobj(amdgpu_device_handle dev, | ||
629 | int shared_fd, | ||
630 | uint32_t *handle) | ||
631 | { | ||
632 | if (NULL == dev) | ||
633 | return -EINVAL; | ||
634 | |||
635 | return drmSyncobjFDToHandle(dev->fd, shared_fd, handle); | ||
636 | } | ||