aboutsummaryrefslogtreecommitdiffstats
path: root/include/drm/drm_mode.h
diff options
context:
space:
mode:
authorKristian Høgsberg <krh@bitplanet.net>2009-11-17 12:43:55 -0500
committerDave Airlie <airlied@redhat.com>2009-11-17 19:05:47 -0500
commitd91d8a3f88059d93e34ac70d059153ec69a9ffc7 (patch)
tree13810c8dbc35522d930b5fc17db35570f3d1e821 /include/drm/drm_mode.h
parentdad07ca71719598bc990dbdbeda763d15a10e98b (diff)
drm/kms: add page flipping ioctl
This adds a page flipping ioctl to the KMS API. The ioctl takes an fb ID and a ctrc ID and flips the crtc to the given fb at the next vblank. The ioctl returns immediately but the flip doesn't happen until after any rendering that's currently queued up against the new framebuffer is done. After submitting a page flip, any execbuffer involving the old front buffer will block until the flip is completed. Optionally, a vblank event can be generated when the swap eventually happens. Signed-off-by: Kristian Høgsberg <krh@bitplanet.net> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'include/drm/drm_mode.h')
-rw-r--r--include/drm/drm_mode.h33
1 files changed, 33 insertions, 0 deletions
diff --git a/include/drm/drm_mode.h b/include/drm/drm_mode.h
index 1f908416aedb..68ddc6175ae7 100644
--- a/include/drm/drm_mode.h
+++ b/include/drm/drm_mode.h
@@ -268,4 +268,37 @@ struct drm_mode_crtc_lut {
268 __u64 blue; 268 __u64 blue;
269}; 269};
270 270
271#define DRM_MODE_PAGE_FLIP_EVENT 0x01
272#define DRM_MODE_PAGE_FLIP_FLAGS DRM_MODE_PAGE_FLIP_EVENT
273
274/*
275 * Request a page flip on the specified crtc.
276 *
277 * This ioctl will ask KMS to schedule a page flip for the specified
278 * crtc. Once any pending rendering targeting the specified fb (as of
279 * ioctl time) has completed, the crtc will be reprogrammed to display
280 * that fb after the next vertical refresh. The ioctl returns
281 * immediately, but subsequent rendering to the current fb will block
282 * in the execbuffer ioctl until the page flip happens. If a page
283 * flip is already pending as the ioctl is called, EBUSY will be
284 * returned.
285 *
286 * The ioctl supports one flag, DRM_MODE_PAGE_FLIP_EVENT, which will
287 * request that drm sends back a vblank event (see drm.h: struct
288 * drm_event_vblank) when the page flip is done. The user_data field
289 * passed in with this ioctl will be returned as the user_data field
290 * in the vblank event struct.
291 *
292 * The reserved field must be zero until we figure out something
293 * clever to use it for.
294 */
295
296struct drm_mode_crtc_page_flip {
297 __u32 crtc_id;
298 __u32 fb_id;
299 __u32 flags;
300 __u32 reserved;
301 __u64 user_data;
302};
303
271#endif 304#endif