diff options
-rwxr-xr-x | amdgpu/amdgpu-symbol-check | 1 | ||||
-rw-r--r-- | amdgpu/amdgpu.h | 14 | ||||
-rw-r--r-- | amdgpu/amdgpu_cs.c | 22 |
3 files changed, 37 insertions, 0 deletions
diff --git a/amdgpu/amdgpu-symbol-check b/amdgpu/amdgpu-symbol-check index 7ecfc982..d9f89ef3 100755 --- a/amdgpu/amdgpu-symbol-check +++ b/amdgpu/amdgpu-symbol-check | |||
@@ -34,6 +34,7 @@ amdgpu_cs_ctx_free | |||
34 | amdgpu_cs_destroy_semaphore | 34 | amdgpu_cs_destroy_semaphore |
35 | amdgpu_cs_destroy_syncobj | 35 | amdgpu_cs_destroy_syncobj |
36 | amdgpu_cs_export_syncobj | 36 | amdgpu_cs_export_syncobj |
37 | amdgpu_cs_fence_to_handle | ||
37 | amdgpu_cs_import_syncobj | 38 | amdgpu_cs_import_syncobj |
38 | amdgpu_cs_query_fence_status | 39 | amdgpu_cs_query_fence_status |
39 | amdgpu_cs_query_reset_state | 40 | amdgpu_cs_query_reset_state |
diff --git a/amdgpu/amdgpu.h b/amdgpu/amdgpu.h index 979acfc8..23cde108 100644 --- a/amdgpu/amdgpu.h +++ b/amdgpu/amdgpu.h | |||
@@ -1433,6 +1433,20 @@ int amdgpu_cs_syncobj_import_sync_file(amdgpu_device_handle dev, | |||
1433 | int sync_file_fd); | 1433 | int sync_file_fd); |
1434 | 1434 | ||
1435 | /** | 1435 | /** |
1436 | * Export an amdgpu fence as a handle (syncobj or fd). | ||
1437 | * | ||
1438 | * \param what AMDGPU_FENCE_TO_HANDLE_GET_{SYNCOBJ, FD} | ||
1439 | * \param out_handle returned handle | ||
1440 | * | ||
1441 | * \return 0 on success\n | ||
1442 | * <0 - Negative POSIX Error code | ||
1443 | */ | ||
1444 | int amdgpu_cs_fence_to_handle(amdgpu_device_handle dev, | ||
1445 | struct amdgpu_cs_fence *fence, | ||
1446 | uint32_t what, | ||
1447 | uint32_t *out_handle); | ||
1448 | |||
1449 | /** | ||
1436 | * Submit raw command submission to kernel | 1450 | * Submit raw command submission to kernel |
1437 | * | 1451 | * |
1438 | * \param dev - \c [in] device handle | 1452 | * \param dev - \c [in] device handle |
diff --git a/amdgpu/amdgpu_cs.c b/amdgpu/amdgpu_cs.c index 2cde7bff..9577d5c9 100644 --- a/amdgpu/amdgpu_cs.c +++ b/amdgpu/amdgpu_cs.c | |||
@@ -713,3 +713,25 @@ void amdgpu_cs_chunk_fence_to_dep(struct amdgpu_cs_fence *fence, | |||
713 | dep->ctx_id = fence->context->id; | 713 | dep->ctx_id = fence->context->id; |
714 | dep->handle = fence->fence; | 714 | dep->handle = fence->fence; |
715 | } | 715 | } |
716 | |||
717 | int amdgpu_cs_fence_to_handle(amdgpu_device_handle dev, | ||
718 | struct amdgpu_cs_fence *fence, | ||
719 | uint32_t what, | ||
720 | uint32_t *out_handle) | ||
721 | { | ||
722 | union drm_amdgpu_fence_to_handle fth = {0}; | ||
723 | int r; | ||
724 | |||
725 | fth.in.fence.ctx_id = fence->context->id; | ||
726 | fth.in.fence.ip_type = fence->ip_type; | ||
727 | fth.in.fence.ip_instance = fence->ip_instance; | ||
728 | fth.in.fence.ring = fence->ring; | ||
729 | fth.in.fence.seq_no = fence->fence; | ||
730 | fth.in.what = what; | ||
731 | |||
732 | r = drmCommandWriteRead(dev->fd, DRM_AMDGPU_FENCE_TO_HANDLE, | ||
733 | &fth, sizeof(fth)); | ||
734 | if (r == 0) | ||
735 | *out_handle = fth.out.handle; | ||
736 | return r; | ||
737 | } | ||