diff options
author | Keith Packard <keithp@keithp.com> | 2017-07-01 00:43:15 -0700 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2017-12-18 10:04:02 +1000 |
commit | d4331dda5b5969922c4f1e3ad6d53f23becb91ab (patch) | |
tree | f6ee7cae925d839993c7e23acc2d185fe2a9073c /xf86drm.c | |
parent | c4171535389d72e9135c9615cecd07b346fd6d7e (diff) | |
download | libdrm-d4331dda5b5969922c4f1e3ad6d53f23becb91ab.tar.gz libdrm-d4331dda5b5969922c4f1e3ad6d53f23becb91ab.tar.bz2 libdrm-d4331dda5b5969922c4f1e3ad6d53f23becb91ab.zip |
drm: Add CrtcGetSequence and CrtcQueueSequence IOCTLs [v2]
These provide a crtc-id based interface to get the current sequence
(frame) number and to queue an event to be delivered at a specific sequence.
v2: Remove FIRST_PIXEL_OUT flag. This has been removed from the
proposed kernel API
Signed-off-by: Keith Packard <keithp@keithp.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'xf86drm.c')
-rw-r--r-- | xf86drm.c | 37 |
1 files changed, 37 insertions, 0 deletions
@@ -1695,6 +1695,43 @@ int drmUpdateDrawableInfo(int fd, drm_drawable_t handle, return 0; } +int drmCrtcGetSequence(int fd, uint32_t crtcId, uint64_t *sequence, uint64_t *ns) +{ + struct drm_crtc_get_sequence get_seq; + int ret; + + memclear(get_seq); + get_seq.crtc_id = crtcId; + ret = drmIoctl(fd, DRM_IOCTL_CRTC_GET_SEQUENCE, &get_seq); + if (ret) + return ret; + + if (sequence) + *sequence = get_seq.sequence; + if (ns) + *ns = get_seq.sequence_ns; + return 0; +} + +int drmCrtcQueueSequence(int fd, uint32_t crtcId, uint32_t flags, uint64_t sequence, + uint64_t *sequence_queued, uint64_t user_data) +{ + struct drm_crtc_queue_sequence queue_seq; + int ret; + + memclear(queue_seq); + queue_seq.crtc_id = crtcId; + queue_seq.flags = flags; + queue_seq.sequence = sequence; + queue_seq.user_data = user_data; + + ret = drmIoctl(fd, DRM_IOCTL_CRTC_QUEUE_SEQUENCE, &queue_seq); + if (ret == 0 && sequence_queued) + *sequence_queued = queue_seq.sequence; + + return ret; +} + /** * Acquire the AGP device. * |