diff options
author | Chunming Zhou <david1.zhou@amd.com> | 2019-05-16 16:07:09 +0800 |
---|---|---|
committer | Christian König <christian.koenig@amd.com> | 2019-05-16 12:07:18 +0200 |
commit | ec6ae51e807e17f00457c97fc60bc5ac55d3021d (patch) | |
tree | 1cb3f19a93f516e106d096b6edff1bc89ebe17a9 | |
parent | 642ec7fc344faf11a2933d094cc3184c2b8f0126 (diff) | |
download | external_libdrm-ec6ae51e807e17f00457c97fc60bc5ac55d3021d.tar.gz external_libdrm-ec6ae51e807e17f00457c97fc60bc5ac55d3021d.tar.bz2 external_libdrm-ec6ae51e807e17f00457c97fc60bc5ac55d3021d.zip |
add timeline wait/query ioctl v2
v2: drop export/import
Signed-off-by: Chunming Zhou <david1.zhou@amd.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
-rw-r--r-- | xf86drm.c | 44 | ||||
-rw-r--r-- | xf86drm.h | 6 |
2 files changed, 50 insertions, 0 deletions
@@ -4256,3 +4256,47 @@ drm_public int drmSyncobjSignal(int fd, const uint32_t *handles, ret = drmIoctl(fd, DRM_IOCTL_SYNCOBJ_SIGNAL, &args); return ret; } + +drm_public int drmSyncobjTimelineWait(int fd, uint32_t *handles, uint64_t *points, + unsigned num_handles, + int64_t timeout_nsec, unsigned flags, + uint32_t *first_signaled) +{ + struct drm_syncobj_timeline_wait args; + int ret; + + memclear(args); + args.handles = (uintptr_t)handles; + args.points = (uintptr_t)points; + args.timeout_nsec = timeout_nsec; + args.count_handles = num_handles; + args.flags = flags; + + ret = drmIoctl(fd, DRM_IOCTL_SYNCOBJ_TIMELINE_WAIT, &args); + if (ret < 0) + return -errno; + + if (first_signaled) + *first_signaled = args.first_signaled; + return ret; +} + + +drm_public int drmSyncobjQuery(int fd, uint32_t *handles, uint64_t *points, + uint32_t handle_count) +{ + struct drm_syncobj_timeline_array args; + int ret; + + memclear(args); + args.handles = (uintptr_t)handles; + args.points = (uintptr_t)points; + args.count_handles = handle_count; + + ret = drmIoctl(fd, DRM_IOCTL_SYNCOBJ_QUERY, &args); + if (ret) + return ret; + return 0; +} + + @@ -876,6 +876,12 @@ extern int drmSyncobjWait(int fd, uint32_t *handles, unsigned num_handles, uint32_t *first_signaled); extern int drmSyncobjReset(int fd, const uint32_t *handles, uint32_t handle_count); extern int drmSyncobjSignal(int fd, const uint32_t *handles, uint32_t handle_count); +extern int drmSyncobjTimelineWait(int fd, uint32_t *handles, uint64_t *points, + unsigned num_handles, + int64_t timeout_nsec, unsigned flags, + uint32_t *first_signaled); +extern int drmSyncobjQuery(int fd, uint32_t *handles, uint64_t *points, + uint32_t handle_count); #if defined(__cplusplus) } |