[libdrm,v2,2/2] Add drmModePageFlipTarget
diff mbox

Message ID 20161013080436.16041-2-michel@daenzer.net
State New
Headers show

Commit Message

Michel Dänzer Oct. 13, 2016, 8:04 a.m. UTC
From: Michel Dänzer <michel.daenzer@amd.com>

It supports the DRM_MODE_PAGE_FLIP_TARGET_* flags.

Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
---

See

https://cgit.freedesktop.org/~daenzer/xf86-video-amdgpu/commit/?id=b8631a9ba49c0d0ebe5dcd1dbfb68fcfe907296f
https://cgit.freedesktop.org/~daenzer/xf86-video-ati/commit/?id=fc884a8af25345c32bd4104c864ecfeb9bb3db9b

for examples how this can be used.

 xf86drmMode.c | 16 ++++++++++++++++
 xf86drmMode.h |  3 +++
 2 files changed, 19 insertions(+)

Comments

Daniel Vetter Oct. 17, 2016, 6:09 a.m. UTC | #1
On Thu, Oct 13, 2016 at 05:04:36PM +0900, Michel Dänzer wrote:
> From: Michel Dänzer <michel.daenzer@amd.com>
> 
> It supports the DRM_MODE_PAGE_FLIP_TARGET_* flags.
> 
> Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>

Ack on both patches.
-Daniel

> ---
> 
> See
> 
> https://cgit.freedesktop.org/~daenzer/xf86-video-amdgpu/commit/?id=b8631a9ba49c0d0ebe5dcd1dbfb68fcfe907296f
> https://cgit.freedesktop.org/~daenzer/xf86-video-ati/commit/?id=fc884a8af25345c32bd4104c864ecfeb9bb3db9b
> 
> for examples how this can be used.
> 
>  xf86drmMode.c | 16 ++++++++++++++++
>  xf86drmMode.h |  3 +++
>  2 files changed, 19 insertions(+)
> 
> diff --git a/xf86drmMode.c b/xf86drmMode.c
> index 228c6e4..fb22f68 100644
> --- a/xf86drmMode.c
> +++ b/xf86drmMode.c
> @@ -948,6 +948,22 @@ int drmModePageFlip(int fd, uint32_t crtc_id, uint32_t fb_id,
>  	return DRM_IOCTL(fd, DRM_IOCTL_MODE_PAGE_FLIP, &flip);
>  }
>  
> +int drmModePageFlipTarget(int fd, uint32_t crtc_id, uint32_t fb_id,
> +			  uint32_t flags, void *user_data,
> +			  uint32_t target_vblank)
> +{
> +	struct drm_mode_crtc_page_flip_target flip_target;
> +
> +	memclear(flip_target);
> +	flip_target.fb_id = fb_id;
> +	flip_target.crtc_id = crtc_id;
> +	flip_target.user_data = VOID2U64(user_data);
> +	flip_target.flags = flags;
> +	flip_target.sequence = target_vblank;
> +
> +	return DRM_IOCTL(fd, DRM_IOCTL_MODE_PAGE_FLIP, &flip_target);
> +}
> +
>  int drmModeSetPlane(int fd, uint32_t plane_id, uint32_t crtc_id,
>  		    uint32_t fb_id, uint32_t flags,
>  		    int32_t crtc_x, int32_t crtc_y,
> diff --git a/xf86drmMode.h b/xf86drmMode.h
> index 1a02fed..b684967 100644
> --- a/xf86drmMode.h
> +++ b/xf86drmMode.h
> @@ -473,6 +473,9 @@ extern int drmModeCrtcGetGamma(int fd, uint32_t crtc_id, uint32_t size,
>  			       uint16_t *red, uint16_t *green, uint16_t *blue);
>  extern int drmModePageFlip(int fd, uint32_t crtc_id, uint32_t fb_id,
>  			   uint32_t flags, void *user_data);
> +extern int drmModePageFlipTarget(int fd, uint32_t crtc_id, uint32_t fb_id,
> +				 uint32_t flags, void *user_data,
> +				 uint32_t target_vblank);
>  
>  extern drmModePlaneResPtr drmModeGetPlaneResources(int fd);
>  extern drmModePlanePtr drmModeGetPlane(int fd, uint32_t plane_id);
> -- 
> 2.9.3
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel

Patch
diff mbox

diff --git a/xf86drmMode.c b/xf86drmMode.c
index 228c6e4..fb22f68 100644
--- a/xf86drmMode.c
+++ b/xf86drmMode.c
@@ -948,6 +948,22 @@  int drmModePageFlip(int fd, uint32_t crtc_id, uint32_t fb_id,
 	return DRM_IOCTL(fd, DRM_IOCTL_MODE_PAGE_FLIP, &flip);
 }
 
+int drmModePageFlipTarget(int fd, uint32_t crtc_id, uint32_t fb_id,
+			  uint32_t flags, void *user_data,
+			  uint32_t target_vblank)
+{
+	struct drm_mode_crtc_page_flip_target flip_target;
+
+	memclear(flip_target);
+	flip_target.fb_id = fb_id;
+	flip_target.crtc_id = crtc_id;
+	flip_target.user_data = VOID2U64(user_data);
+	flip_target.flags = flags;
+	flip_target.sequence = target_vblank;
+
+	return DRM_IOCTL(fd, DRM_IOCTL_MODE_PAGE_FLIP, &flip_target);
+}
+
 int drmModeSetPlane(int fd, uint32_t plane_id, uint32_t crtc_id,
 		    uint32_t fb_id, uint32_t flags,
 		    int32_t crtc_x, int32_t crtc_y,
diff --git a/xf86drmMode.h b/xf86drmMode.h
index 1a02fed..b684967 100644
--- a/xf86drmMode.h
+++ b/xf86drmMode.h
@@ -473,6 +473,9 @@  extern int drmModeCrtcGetGamma(int fd, uint32_t crtc_id, uint32_t size,
 			       uint16_t *red, uint16_t *green, uint16_t *blue);
 extern int drmModePageFlip(int fd, uint32_t crtc_id, uint32_t fb_id,
 			   uint32_t flags, void *user_data);
+extern int drmModePageFlipTarget(int fd, uint32_t crtc_id, uint32_t fb_id,
+				 uint32_t flags, void *user_data,
+				 uint32_t target_vblank);
 
 extern drmModePlaneResPtr drmModeGetPlaneResources(int fd);
 extern drmModePlanePtr drmModeGetPlane(int fd, uint32_t plane_id);