diff mbox

[weston] compositor-drm: handle vblanks on secondary crtc

Message ID 1344475657-1148-1-git-send-email-rob.clark@linaro.org
State New
Headers show

Commit Message

Rob Clark Aug. 9, 2012, 1:27 a.m. UTC
From: Rob Clark <rob@ti.com>

Signed-off-by: Rob Clark <rob@ti.com>
---
 src/compositor-drm.c |    5 +++++
 1 file changed, 5 insertions(+)

Comments

Kristian Høgsberg Aug. 9, 2012, 4:46 p.m. UTC | #1
On Wed, Aug 08, 2012 at 08:27:37PM -0500, Rob Clark wrote:
> From: Rob Clark <rob@ti.com>

Ah, yes, thanks Rob.

Kristian

> Signed-off-by: Rob Clark <rob@ti.com>
> ---
>  src/compositor-drm.c |    5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/src/compositor-drm.c b/src/compositor-drm.c
> index 8ea4965..80dccfc 100644
> --- a/src/compositor-drm.c
> +++ b/src/compositor-drm.c
> @@ -100,6 +100,7 @@ struct drm_output {
>  	struct weston_output   base;
>  
>  	uint32_t crtc_id;
> +	int pipe;
>  	uint32_t connector_id;
>  	drmModeCrtcPtr original_crtc;
>  
> @@ -374,6 +375,9 @@ drm_output_repaint(struct weston_output *output_base,
>  			weston_log("setplane failed: %d: %s\n",
>  				ret, strerror(errno));
>  
> +		if (output->pipe > 0)
> +			vbl.request.type |= DRM_VBLANK_SECONDARY;
> +
>  		/*
>  		 * Queue a vblank signal so we know when the surface
>  		 * becomes active on the display or has been replaced.
> @@ -1285,6 +1289,7 @@ create_output_for_connector(struct drm_compositor *ec,
>  	wl_list_init(&output->base.mode_list);
>  
>  	output->crtc_id = resources->crtcs[i];
> +	output->pipe = i;
>  	ec->crtc_allocator |= (1 << output->crtc_id);
>  	output->connector_id = connector->connector_id;
>  	ec->connector_allocator |= (1 << output->connector_id);
> -- 
> 1.7.9.5
> 
> _______________________________________________
> wayland-devel mailing list
> wayland-devel@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/wayland-devel
diff mbox

Patch

diff --git a/src/compositor-drm.c b/src/compositor-drm.c
index 8ea4965..80dccfc 100644
--- a/src/compositor-drm.c
+++ b/src/compositor-drm.c
@@ -100,6 +100,7 @@  struct drm_output {
 	struct weston_output   base;
 
 	uint32_t crtc_id;
+	int pipe;
 	uint32_t connector_id;
 	drmModeCrtcPtr original_crtc;
 
@@ -374,6 +375,9 @@  drm_output_repaint(struct weston_output *output_base,
 			weston_log("setplane failed: %d: %s\n",
 				ret, strerror(errno));
 
+		if (output->pipe > 0)
+			vbl.request.type |= DRM_VBLANK_SECONDARY;
+
 		/*
 		 * Queue a vblank signal so we know when the surface
 		 * becomes active on the display or has been replaced.
@@ -1285,6 +1289,7 @@  create_output_for_connector(struct drm_compositor *ec,
 	wl_list_init(&output->base.mode_list);
 
 	output->crtc_id = resources->crtcs[i];
+	output->pipe = i;
 	ec->crtc_allocator |= (1 << output->crtc_id);
 	output->connector_id = connector->connector_id;
 	ec->connector_allocator |= (1 << output->connector_id);