All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/5] drm: Don't leak fb when plane crtc coodinates are bad
@ 2015-10-15 17:39 ville.syrjala
  2015-10-15 17:39 ` [PATCH 2/5] drm: Swap w/h when converting the mode to src coordidates for a rotated primary plane ville.syrjala
                   ` (3 more replies)
  0 siblings, 4 replies; 15+ messages in thread
From: ville.syrjala @ 2015-10-15 17:39 UTC (permalink / raw)
  To: dri-devel

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/drm_crtc.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
index e7c8422..66233a8 100644
--- a/drivers/gpu/drm/drm_crtc.c
+++ b/drivers/gpu/drm/drm_crtc.c
@@ -2342,7 +2342,8 @@ static int __setplane_internal(struct drm_plane *plane,
 	    crtc_y > INT_MAX - (int32_t) crtc_h) {
 		DRM_DEBUG_KMS("Invalid CRTC coordinates %ux%u+%d+%d\n",
 			      crtc_w, crtc_h, crtc_x, crtc_y);
-		return -ERANGE;
+		ret = -ERANGE;
+		goto out;
 	}
 
 
-- 
2.4.9

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH 2/5] drm: Swap w/h when converting the mode to src coordidates for a rotated primary plane
  2015-10-15 17:39 [PATCH 1/5] drm: Don't leak fb when plane crtc coodinates are bad ville.syrjala
@ 2015-10-15 17:39 ` ville.syrjala
  2015-10-15 17:40 ` [PATCH 3/5] drm: Refactor plane src coordinate checks ville.syrjala
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 15+ messages in thread
From: ville.syrjala @ 2015-10-15 17:39 UTC (permalink / raw)
  To: dri-devel; +Cc: Tvrtko Ursulin

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

When converting the mode hdisplay/vdisplay to primary plane src
coordinates we need to take into account the current plane
rotation.

Cc: Matt Roper <matthew.d.roper@intel.com>
Cc: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
Cc: Daniel Vetter <daniel@ffwll.ch>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/drm_atomic_helper.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c
index 87a2a44..0c6f621 100644
--- a/drivers/gpu/drm/drm_atomic_helper.c
+++ b/drivers/gpu/drm/drm_atomic_helper.c
@@ -1790,8 +1790,13 @@ int __drm_atomic_helper_set_config(struct drm_mode_set *set,
 	primary_state->crtc_w = set->mode->hdisplay;
 	primary_state->src_x = set->x << 16;
 	primary_state->src_y = set->y << 16;
-	primary_state->src_h = set->mode->vdisplay << 16;
-	primary_state->src_w = set->mode->hdisplay << 16;
+	if (primary_state->rotation & (BIT(DRM_ROTATE_90) | BIT(DRM_ROTATE_270))) {
+		primary_state->src_h = set->mode->hdisplay << 16;
+		primary_state->src_w = set->mode->vdisplay << 16;
+	} else {
+		primary_state->src_h = set->mode->vdisplay << 16;
+		primary_state->src_w = set->mode->hdisplay << 16;
+	}
 
 commit:
 	ret = update_output_state(state, set);
-- 
2.4.9

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH 3/5] drm: Refactor plane src coordinate checks
  2015-10-15 17:39 [PATCH 1/5] drm: Don't leak fb when plane crtc coodinates are bad ville.syrjala
  2015-10-15 17:39 ` [PATCH 2/5] drm: Swap w/h when converting the mode to src coordidates for a rotated primary plane ville.syrjala
@ 2015-10-15 17:40 ` ville.syrjala
  2015-10-15 17:40 ` [PATCH 4/5] drm: Check crtc viewport correctly with rotated primary plane on atomic drivers ville.syrjala
  2015-10-15 17:40 ` [PATCH 5/5] drm: Check plane src coordinates correctly during page flip for " ville.syrjala
  3 siblings, 0 replies; 15+ messages in thread
From: ville.syrjala @ 2015-10-15 17:40 UTC (permalink / raw)
  To: dri-devel; +Cc: Tvrtko Ursulin

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

Pull the plane src coordinate checks into a separate function so that we
can share them for the legacy and new stuff.

Cc: Matt Roper <matthew.d.roper@intel.com>
Cc: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
Cc: Daniel Vetter <daniel@ffwll.ch>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/drm_crtc.c | 59 +++++++++++++++++++++++-----------------------
 1 file changed, 30 insertions(+), 29 deletions(-)

diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
index 66233a8..227613a 100644
--- a/drivers/gpu/drm/drm_crtc.c
+++ b/drivers/gpu/drm/drm_crtc.c
@@ -2286,6 +2286,32 @@ int drm_plane_check_pixel_format(const struct drm_plane *plane, u32 format)
 	return -EINVAL;
 }
 
+static int check_src_coords(uint32_t src_x, uint32_t src_y,
+			    uint32_t src_w, uint32_t src_h,
+			    const struct drm_framebuffer *fb)
+{
+	unsigned int fb_width, fb_height;
+
+	fb_width = fb->width << 16;
+	fb_height = fb->height << 16;
+
+	/* Make sure source coordinates are inside the fb. */
+	if (src_w > fb_width ||
+	    src_x > fb_width - src_w ||
+	    src_h > fb_height ||
+	    src_y > fb_height - src_h) {
+		DRM_DEBUG_KMS("Invalid source coordinates "
+			      "%u.%06ux%u.%06u+%u.%06u+%u.%06u\n",
+			      src_w >> 16, ((src_w & 0xffff) * 15625) >> 10,
+			      src_h >> 16, ((src_h & 0xffff) * 15625) >> 10,
+			      src_x >> 16, ((src_x & 0xffff) * 15625) >> 10,
+			      src_y >> 16, ((src_y & 0xffff) * 15625) >> 10);
+		return -ENOSPC;
+	}
+
+	return 0;
+}
+
 /*
  * setplane_internal - setplane handler for internal callers
  *
@@ -2305,7 +2331,6 @@ static int __setplane_internal(struct drm_plane *plane,
 			       uint32_t src_w, uint32_t src_h)
 {
 	int ret = 0;
-	unsigned int fb_width, fb_height;
 
 	/* No fb means shut it down */
 	if (!fb) {
@@ -2346,24 +2371,9 @@ static int __setplane_internal(struct drm_plane *plane,
 		goto out;
 	}
 
-
-	fb_width = fb->width << 16;
-	fb_height = fb->height << 16;
-
-	/* Make sure source coordinates are inside the fb. */
-	if (src_w > fb_width ||
-	    src_x > fb_width - src_w ||
-	    src_h > fb_height ||
-	    src_y > fb_height - src_h) {
-		DRM_DEBUG_KMS("Invalid source coordinates "
-			      "%u.%06ux%u.%06u+%u.%06u+%u.%06u\n",
-			      src_w >> 16, ((src_w & 0xffff) * 15625) >> 10,
-			      src_h >> 16, ((src_h & 0xffff) * 15625) >> 10,
-			      src_x >> 16, ((src_x & 0xffff) * 15625) >> 10,
-			      src_y >> 16, ((src_y & 0xffff) * 15625) >> 10);
-		ret = -ENOSPC;
+	ret = check_src_coords(src_x, src_y, src_w, src_h, fb);
+	if (ret)
 		goto out;
-	}
 
 	plane->old_fb = plane->fb;
 	ret = plane->funcs->update_plane(plane, crtc, fb,
@@ -2557,17 +2567,8 @@ int drm_crtc_check_viewport(const struct drm_crtc *crtc,
 	if (crtc->invert_dimensions)
 		swap(hdisplay, vdisplay);
 
-	if (hdisplay > fb->width ||
-	    vdisplay > fb->height ||
-	    x > fb->width - hdisplay ||
-	    y > fb->height - vdisplay) {
-		DRM_DEBUG_KMS("Invalid fb size %ux%u for CRTC viewport %ux%u+%d+%d%s.\n",
-			      fb->width, fb->height, hdisplay, vdisplay, x, y,
-			      crtc->invert_dimensions ? " (inverted)" : "");
-		return -ENOSPC;
-	}
-
-	return 0;
+	return check_src_coords(x << 16, y << 16,
+				hdisplay << 16, vdisplay << 16, fb);
 }
 EXPORT_SYMBOL(drm_crtc_check_viewport);
 
-- 
2.4.9

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH 4/5] drm: Check crtc viewport correctly with rotated primary plane on atomic drivers
  2015-10-15 17:39 [PATCH 1/5] drm: Don't leak fb when plane crtc coodinates are bad ville.syrjala
  2015-10-15 17:39 ` [PATCH 2/5] drm: Swap w/h when converting the mode to src coordidates for a rotated primary plane ville.syrjala
  2015-10-15 17:40 ` [PATCH 3/5] drm: Refactor plane src coordinate checks ville.syrjala
@ 2015-10-15 17:40 ` ville.syrjala
  2015-10-16  0:32   ` Matt Roper
  2015-10-16 15:38   ` [PATCH v2 " ville.syrjala
  2015-10-15 17:40 ` [PATCH 5/5] drm: Check plane src coordinates correctly during page flip for " ville.syrjala
  3 siblings, 2 replies; 15+ messages in thread
From: ville.syrjala @ 2015-10-15 17:40 UTC (permalink / raw)
  To: dri-devel; +Cc: Tvrtko Ursulin

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

On atomic drivers we can dig out the primary plane rotation from the
plane state instead of looking at the legacy crtc->invert_dimensions
flag. The flag is not set by anyone except omapdrm, and it would be
racy to set it the same way in the atomic helpers.

Cc: Matt Roper <matthew.d.roper@intel.com>
Cc: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
Cc: Daniel Vetter <daniel@ffwll.ch>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/drm_crtc.c | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
index 227613a..ffaa3f5 100644
--- a/drivers/gpu/drm/drm_crtc.c
+++ b/drivers/gpu/drm/drm_crtc.c
@@ -2545,6 +2545,16 @@ void drm_crtc_get_hv_timing(const struct drm_display_mode *mode,
 }
 EXPORT_SYMBOL(drm_crtc_get_hv_timing);
 
+static bool invert_dimensions(const struct drm_crtc *crtc)
+{
+	if (crtc->state) {
+		return crtc->primary->state->rotation & (BIT(DRM_ROTATE_90) |
+							 BIT(DRM_ROTATE_270));
+	} else {
+		return crtc->invert_dimensions;
+	}
+}
+
 /**
  * drm_crtc_check_viewport - Checks that a framebuffer is big enough for the
  *     CRTC viewport
@@ -2564,7 +2574,7 @@ int drm_crtc_check_viewport(const struct drm_crtc *crtc,
 
 	drm_crtc_get_hv_timing(mode, &hdisplay, &vdisplay);
 
-	if (crtc->invert_dimensions)
+	if (invert_dimensions(crtc))
 		swap(hdisplay, vdisplay);
 
 	return check_src_coords(x << 16, y << 16,
-- 
2.4.9

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH 5/5] drm: Check plane src coordinates correctly during page flip for atomic drivers
  2015-10-15 17:39 [PATCH 1/5] drm: Don't leak fb when plane crtc coodinates are bad ville.syrjala
                   ` (2 preceding siblings ...)
  2015-10-15 17:40 ` [PATCH 4/5] drm: Check crtc viewport correctly with rotated primary plane on atomic drivers ville.syrjala
@ 2015-10-15 17:40 ` ville.syrjala
  2015-10-16 16:27   ` Matt Roper
  3 siblings, 1 reply; 15+ messages in thread
From: ville.syrjala @ 2015-10-15 17:40 UTC (permalink / raw)
  To: dri-devel; +Cc: Tvrtko Ursulin

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

Instead of relying on the old crtc-{x,y,mode} gunk, dig out the primary
plane coordinates from the plane state when checking them against the
new framebuffer during page flip.

Cc: Matt Roper <matthew.d.roper@intel.com>
Cc: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
Cc: Daniel Vetter <daniel@ffwll.ch>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/drm_crtc.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
index ffaa3f5..52feffc 100644
--- a/drivers/gpu/drm/drm_crtc.c
+++ b/drivers/gpu/drm/drm_crtc.c
@@ -5193,7 +5193,14 @@ int drm_mode_page_flip_ioctl(struct drm_device *dev,
 		goto out;
 	}
 
-	ret = drm_crtc_check_viewport(crtc, crtc->x, crtc->y, &crtc->mode, fb);
+	if (crtc->state) {
+		const struct drm_plane_state *state = crtc->primary->state;
+
+		ret = check_src_coords(state->src_x, state->src_y,
+				       state->src_w, state->src_h, fb);
+	} else {
+		ret = drm_crtc_check_viewport(crtc, crtc->x, crtc->y, &crtc->mode, fb);
+	}
 	if (ret)
 		goto out;
 
-- 
2.4.9

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* Re: [PATCH 4/5] drm: Check crtc viewport correctly with rotated primary plane on atomic drivers
  2015-10-15 17:40 ` [PATCH 4/5] drm: Check crtc viewport correctly with rotated primary plane on atomic drivers ville.syrjala
@ 2015-10-16  0:32   ` Matt Roper
  2015-10-16  8:38     ` Ville Syrjälä
  2015-10-16 15:38   ` [PATCH v2 " ville.syrjala
  1 sibling, 1 reply; 15+ messages in thread
From: Matt Roper @ 2015-10-16  0:32 UTC (permalink / raw)
  To: ville.syrjala; +Cc: Tvrtko Ursulin, dri-devel

On Thu, Oct 15, 2015 at 08:40:01PM +0300, ville.syrjala@linux.intel.com wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> 
> On atomic drivers we can dig out the primary plane rotation from the
> plane state instead of looking at the legacy crtc->invert_dimensions
> flag. The flag is not set by anyone except omapdrm, and it would be
> racy to set it the same way in the atomic helpers.

Can't we just remove the invert_dimensions field completely now?  It's a
legacy-only field, but no legacy drivers actually set it, so it winds up
being completely unused.


Matt

> 
> Cc: Matt Roper <matthew.d.roper@intel.com>
> Cc: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
> Cc: Daniel Vetter <daniel@ffwll.ch>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
>  drivers/gpu/drm/drm_crtc.c | 12 +++++++++++-
>  1 file changed, 11 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
> index 227613a..ffaa3f5 100644
> --- a/drivers/gpu/drm/drm_crtc.c
> +++ b/drivers/gpu/drm/drm_crtc.c
> @@ -2545,6 +2545,16 @@ void drm_crtc_get_hv_timing(const struct drm_display_mode *mode,
>  }
>  EXPORT_SYMBOL(drm_crtc_get_hv_timing);
>  
> +static bool invert_dimensions(const struct drm_crtc *crtc)
> +{
> +	if (crtc->state) {
> +		return crtc->primary->state->rotation & (BIT(DRM_ROTATE_90) |
> +							 BIT(DRM_ROTATE_270));
> +	} else {
> +		return crtc->invert_dimensions;
> +	}
> +}
> +
>  /**
>   * drm_crtc_check_viewport - Checks that a framebuffer is big enough for the
>   *     CRTC viewport
> @@ -2564,7 +2574,7 @@ int drm_crtc_check_viewport(const struct drm_crtc *crtc,
>  
>  	drm_crtc_get_hv_timing(mode, &hdisplay, &vdisplay);
>  
> -	if (crtc->invert_dimensions)
> +	if (invert_dimensions(crtc))
>  		swap(hdisplay, vdisplay);
>  
>  	return check_src_coords(x << 16, y << 16,
> -- 
> 2.4.9
> 

-- 
Matt Roper
Graphics Software Engineer
IoTG Platform Enabling & Development
Intel Corporation
(916) 356-2795
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 4/5] drm: Check crtc viewport correctly with rotated primary plane on atomic drivers
  2015-10-16  0:32   ` Matt Roper
@ 2015-10-16  8:38     ` Ville Syrjälä
  2015-10-16 14:35       ` Daniel Vetter
  0 siblings, 1 reply; 15+ messages in thread
From: Ville Syrjälä @ 2015-10-16  8:38 UTC (permalink / raw)
  To: Matt Roper; +Cc: Tvrtko Ursulin, dri-devel

On Thu, Oct 15, 2015 at 05:32:12PM -0700, Matt Roper wrote:
> On Thu, Oct 15, 2015 at 08:40:01PM +0300, ville.syrjala@linux.intel.com wrote:
> > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > 
> > On atomic drivers we can dig out the primary plane rotation from the
> > plane state instead of looking at the legacy crtc->invert_dimensions
> > flag. The flag is not set by anyone except omapdrm, and it would be
> > racy to set it the same way in the atomic helpers.
> 
> Can't we just remove the invert_dimensions field completely now?  It's a
> legacy-only field, but no legacy drivers actually set it, so it winds up
> being completely unused.

omap sets it.

> 
> 
> Matt
> 
> > 
> > Cc: Matt Roper <matthew.d.roper@intel.com>
> > Cc: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
> > Cc: Daniel Vetter <daniel@ffwll.ch>
> > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > ---
> >  drivers/gpu/drm/drm_crtc.c | 12 +++++++++++-
> >  1 file changed, 11 insertions(+), 1 deletion(-)
> > 
> > diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
> > index 227613a..ffaa3f5 100644
> > --- a/drivers/gpu/drm/drm_crtc.c
> > +++ b/drivers/gpu/drm/drm_crtc.c
> > @@ -2545,6 +2545,16 @@ void drm_crtc_get_hv_timing(const struct drm_display_mode *mode,
> >  }
> >  EXPORT_SYMBOL(drm_crtc_get_hv_timing);
> >  
> > +static bool invert_dimensions(const struct drm_crtc *crtc)
> > +{
> > +	if (crtc->state) {
> > +		return crtc->primary->state->rotation & (BIT(DRM_ROTATE_90) |
> > +							 BIT(DRM_ROTATE_270));
> > +	} else {
> > +		return crtc->invert_dimensions;
> > +	}
> > +}
> > +
> >  /**
> >   * drm_crtc_check_viewport - Checks that a framebuffer is big enough for the
> >   *     CRTC viewport
> > @@ -2564,7 +2574,7 @@ int drm_crtc_check_viewport(const struct drm_crtc *crtc,
> >  
> >  	drm_crtc_get_hv_timing(mode, &hdisplay, &vdisplay);
> >  
> > -	if (crtc->invert_dimensions)
> > +	if (invert_dimensions(crtc))
> >  		swap(hdisplay, vdisplay);
> >  
> >  	return check_src_coords(x << 16, y << 16,
> > -- 
> > 2.4.9
> > 
> 
> -- 
> Matt Roper
> Graphics Software Engineer
> IoTG Platform Enabling & Development
> Intel Corporation
> (916) 356-2795

-- 
Ville Syrjälä
Intel OTC
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 4/5] drm: Check crtc viewport correctly with rotated primary plane on atomic drivers
  2015-10-16  8:38     ` Ville Syrjälä
@ 2015-10-16 14:35       ` Daniel Vetter
  2015-10-16 15:10         ` Ville Syrjälä
  0 siblings, 1 reply; 15+ messages in thread
From: Daniel Vetter @ 2015-10-16 14:35 UTC (permalink / raw)
  To: Ville Syrjälä; +Cc: Tvrtko Ursulin, dri-devel

On Fri, Oct 16, 2015 at 11:38:18AM +0300, Ville Syrjälä wrote:
> On Thu, Oct 15, 2015 at 05:32:12PM -0700, Matt Roper wrote:
> > On Thu, Oct 15, 2015 at 08:40:01PM +0300, ville.syrjala@linux.intel.com wrote:
> > > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > > 
> > > On atomic drivers we can dig out the primary plane rotation from the
> > > plane state instead of looking at the legacy crtc->invert_dimensions
> > > flag. The flag is not set by anyone except omapdrm, and it would be
> > > racy to set it the same way in the atomic helpers.
> > 
> > Can't we just remove the invert_dimensions field completely now?  It's a
> > legacy-only field, but no legacy drivers actually set it, so it winds up
> > being completely unused.
> 
> omap sets it.

Omap should be atomic now (maybe double-check with Laurent), so I think we
can indeed ditch it. Follow-up series perhaps?
-Daniel

> 
> > 
> > 
> > Matt
> > 
> > > 
> > > Cc: Matt Roper <matthew.d.roper@intel.com>
> > > Cc: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
> > > Cc: Daniel Vetter <daniel@ffwll.ch>
> > > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > > ---
> > >  drivers/gpu/drm/drm_crtc.c | 12 +++++++++++-
> > >  1 file changed, 11 insertions(+), 1 deletion(-)
> > > 
> > > diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
> > > index 227613a..ffaa3f5 100644
> > > --- a/drivers/gpu/drm/drm_crtc.c
> > > +++ b/drivers/gpu/drm/drm_crtc.c
> > > @@ -2545,6 +2545,16 @@ void drm_crtc_get_hv_timing(const struct drm_display_mode *mode,
> > >  }
> > >  EXPORT_SYMBOL(drm_crtc_get_hv_timing);
> > >  
> > > +static bool invert_dimensions(const struct drm_crtc *crtc)
> > > +{
> > > +	if (crtc->state) {
> > > +		return crtc->primary->state->rotation & (BIT(DRM_ROTATE_90) |
> > > +							 BIT(DRM_ROTATE_270));
> > > +	} else {
> > > +		return crtc->invert_dimensions;
> > > +	}
> > > +}
> > > +
> > >  /**
> > >   * drm_crtc_check_viewport - Checks that a framebuffer is big enough for the
> > >   *     CRTC viewport
> > > @@ -2564,7 +2574,7 @@ int drm_crtc_check_viewport(const struct drm_crtc *crtc,
> > >  
> > >  	drm_crtc_get_hv_timing(mode, &hdisplay, &vdisplay);
> > >  
> > > -	if (crtc->invert_dimensions)
> > > +	if (invert_dimensions(crtc))
> > >  		swap(hdisplay, vdisplay);
> > >  
> > >  	return check_src_coords(x << 16, y << 16,
> > > -- 
> > > 2.4.9
> > > 
> > 
> > -- 
> > Matt Roper
> > Graphics Software Engineer
> > IoTG Platform Enabling & Development
> > Intel Corporation
> > (916) 356-2795
> 
> -- 
> Ville Syrjälä
> Intel OTC

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 4/5] drm: Check crtc viewport correctly with rotated primary plane on atomic drivers
  2015-10-16 14:35       ` Daniel Vetter
@ 2015-10-16 15:10         ` Ville Syrjälä
  2015-10-16 15:26           ` Matt Roper
  0 siblings, 1 reply; 15+ messages in thread
From: Ville Syrjälä @ 2015-10-16 15:10 UTC (permalink / raw)
  To: Daniel Vetter; +Cc: Tvrtko Ursulin, dri-devel

On Fri, Oct 16, 2015 at 04:35:02PM +0200, Daniel Vetter wrote:
> On Fri, Oct 16, 2015 at 11:38:18AM +0300, Ville Syrjälä wrote:
> > On Thu, Oct 15, 2015 at 05:32:12PM -0700, Matt Roper wrote:
> > > On Thu, Oct 15, 2015 at 08:40:01PM +0300, ville.syrjala@linux.intel.com wrote:
> > > > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > > > 
> > > > On atomic drivers we can dig out the primary plane rotation from the
> > > > plane state instead of looking at the legacy crtc->invert_dimensions
> > > > flag. The flag is not set by anyone except omapdrm, and it would be
> > > > racy to set it the same way in the atomic helpers.
> > > 
> > > Can't we just remove the invert_dimensions field completely now?  It's a
> > > legacy-only field, but no legacy drivers actually set it, so it winds up
> > > being completely unused.
> > 
> > omap sets it.
> 
> Omap should be atomic now (maybe double-check with Laurent), so I think we
> can indeed ditch it. Follow-up series perhaps?

grep ATOMIC in omap didn't turn up anything, so I assumed no.

> -Daniel
> 
> > 
> > > 
> > > 
> > > Matt
> > > 
> > > > 
> > > > Cc: Matt Roper <matthew.d.roper@intel.com>
> > > > Cc: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
> > > > Cc: Daniel Vetter <daniel@ffwll.ch>
> > > > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > > > ---
> > > >  drivers/gpu/drm/drm_crtc.c | 12 +++++++++++-
> > > >  1 file changed, 11 insertions(+), 1 deletion(-)
> > > > 
> > > > diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
> > > > index 227613a..ffaa3f5 100644
> > > > --- a/drivers/gpu/drm/drm_crtc.c
> > > > +++ b/drivers/gpu/drm/drm_crtc.c
> > > > @@ -2545,6 +2545,16 @@ void drm_crtc_get_hv_timing(const struct drm_display_mode *mode,
> > > >  }
> > > >  EXPORT_SYMBOL(drm_crtc_get_hv_timing);
> > > >  
> > > > +static bool invert_dimensions(const struct drm_crtc *crtc)
> > > > +{
> > > > +	if (crtc->state) {
> > > > +		return crtc->primary->state->rotation & (BIT(DRM_ROTATE_90) |
> > > > +							 BIT(DRM_ROTATE_270));
> > > > +	} else {
> > > > +		return crtc->invert_dimensions;
> > > > +	}
> > > > +}
> > > > +
> > > >  /**
> > > >   * drm_crtc_check_viewport - Checks that a framebuffer is big enough for the
> > > >   *     CRTC viewport
> > > > @@ -2564,7 +2574,7 @@ int drm_crtc_check_viewport(const struct drm_crtc *crtc,
> > > >  
> > > >  	drm_crtc_get_hv_timing(mode, &hdisplay, &vdisplay);
> > > >  
> > > > -	if (crtc->invert_dimensions)
> > > > +	if (invert_dimensions(crtc))
> > > >  		swap(hdisplay, vdisplay);
> > > >  
> > > >  	return check_src_coords(x << 16, y << 16,
> > > > -- 
> > > > 2.4.9
> > > > 
> > > 
> > > -- 
> > > Matt Roper
> > > Graphics Software Engineer
> > > IoTG Platform Enabling & Development
> > > Intel Corporation
> > > (916) 356-2795
> > 
> > -- 
> > Ville Syrjälä
> > Intel OTC
> 
> -- 
> Daniel Vetter
> Software Engineer, Intel Corporation
> http://blog.ffwll.ch

-- 
Ville Syrjälä
Intel OTC
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 4/5] drm: Check crtc viewport correctly with rotated primary plane on atomic drivers
  2015-10-16 15:10         ` Ville Syrjälä
@ 2015-10-16 15:26           ` Matt Roper
  0 siblings, 0 replies; 15+ messages in thread
From: Matt Roper @ 2015-10-16 15:26 UTC (permalink / raw)
  To: Ville Syrjälä; +Cc: Tvrtko Ursulin, dri-devel

On Fri, Oct 16, 2015 at 06:10:20PM +0300, Ville Syrjälä wrote:
> On Fri, Oct 16, 2015 at 04:35:02PM +0200, Daniel Vetter wrote:
> > On Fri, Oct 16, 2015 at 11:38:18AM +0300, Ville Syrjälä wrote:
> > > On Thu, Oct 15, 2015 at 05:32:12PM -0700, Matt Roper wrote:
> > > > On Thu, Oct 15, 2015 at 08:40:01PM +0300, ville.syrjala@linux.intel.com wrote:
> > > > > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > > > > 
> > > > > On atomic drivers we can dig out the primary plane rotation from the
> > > > > plane state instead of looking at the legacy crtc->invert_dimensions
> > > > > flag. The flag is not set by anyone except omapdrm, and it would be
> > > > > racy to set it the same way in the atomic helpers.
> > > > 
> > > > Can't we just remove the invert_dimensions field completely now?  It's a
> > > > legacy-only field, but no legacy drivers actually set it, so it winds up
> > > > being completely unused.
> > > 
> > > omap sets it.
> > 
> > Omap should be atomic now (maybe double-check with Laurent), so I think we
> > can indeed ditch it. Follow-up series perhaps?
> 
> grep ATOMIC in omap didn't turn up anything, so I assumed no.

omap might not be full atomic (just like i915 isn't full atomic), but
it's state-based now, so your new code below will cause the
invert_dimensions to be ignored by the DRM core.  And omap never uses
the field internally, aside from setting it once to reflect the state
values, so as far as I can see, the field is completely unused.


Matt

> 
> > -Daniel
> > 
> > > 
> > > > 
> > > > 
> > > > Matt
> > > > 
> > > > > 
> > > > > Cc: Matt Roper <matthew.d.roper@intel.com>
> > > > > Cc: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
> > > > > Cc: Daniel Vetter <daniel@ffwll.ch>
> > > > > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > > > > ---
> > > > >  drivers/gpu/drm/drm_crtc.c | 12 +++++++++++-
> > > > >  1 file changed, 11 insertions(+), 1 deletion(-)
> > > > > 
> > > > > diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
> > > > > index 227613a..ffaa3f5 100644
> > > > > --- a/drivers/gpu/drm/drm_crtc.c
> > > > > +++ b/drivers/gpu/drm/drm_crtc.c
> > > > > @@ -2545,6 +2545,16 @@ void drm_crtc_get_hv_timing(const struct drm_display_mode *mode,
> > > > >  }
> > > > >  EXPORT_SYMBOL(drm_crtc_get_hv_timing);
> > > > >  
> > > > > +static bool invert_dimensions(const struct drm_crtc *crtc)
> > > > > +{
> > > > > +	if (crtc->state) {
> > > > > +		return crtc->primary->state->rotation & (BIT(DRM_ROTATE_90) |
> > > > > +							 BIT(DRM_ROTATE_270));
> > > > > +	} else {
> > > > > +		return crtc->invert_dimensions;
> > > > > +	}
> > > > > +}
> > > > > +
> > > > >  /**
> > > > >   * drm_crtc_check_viewport - Checks that a framebuffer is big enough for the
> > > > >   *     CRTC viewport
> > > > > @@ -2564,7 +2574,7 @@ int drm_crtc_check_viewport(const struct drm_crtc *crtc,
> > > > >  
> > > > >  	drm_crtc_get_hv_timing(mode, &hdisplay, &vdisplay);
> > > > >  
> > > > > -	if (crtc->invert_dimensions)
> > > > > +	if (invert_dimensions(crtc))
> > > > >  		swap(hdisplay, vdisplay);
> > > > >  
> > > > >  	return check_src_coords(x << 16, y << 16,
> > > > > -- 
> > > > > 2.4.9
> > > > > 
> > > > 
> > > > -- 
> > > > Matt Roper
> > > > Graphics Software Engineer
> > > > IoTG Platform Enabling & Development
> > > > Intel Corporation
> > > > (916) 356-2795
> > > 
> > > -- 
> > > Ville Syrjälä
> > > Intel OTC
> > 
> > -- 
> > Daniel Vetter
> > Software Engineer, Intel Corporation
> > http://blog.ffwll.ch
> 
> -- 
> Ville Syrjälä
> Intel OTC

-- 
Matt Roper
Graphics Software Engineer
IoTG Platform Enabling & Development
Intel Corporation
(916) 356-2795
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 15+ messages in thread

* [PATCH v2 4/5] drm: Check crtc viewport correctly with rotated primary plane on atomic drivers
  2015-10-15 17:40 ` [PATCH 4/5] drm: Check crtc viewport correctly with rotated primary plane on atomic drivers ville.syrjala
  2015-10-16  0:32   ` Matt Roper
@ 2015-10-16 15:38   ` ville.syrjala
  1 sibling, 0 replies; 15+ messages in thread
From: ville.syrjala @ 2015-10-16 15:38 UTC (permalink / raw)
  To: dri-devel; +Cc: Tvrtko Ursulin, Tomi Valkeinen

From: Ville Syrjälä <ville.syrjala@linux.intel.com>

On atomic drivers we can dig out the primary plane rotation from the
plane state instead of looking at the legacy crtc->invert_dimensions
flag. The flag is not set by anyone except omapdrm, and it would be
racy to set it the same way in the atomic helpers.

v2: Kill crtc->invert_dimensions totally since omap is state based
    already and no one else ever used it (Matt)

Cc: Matt Roper <matthew.d.roper@intel.com>
Cc: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
Cc: Daniel Vetter <daniel@ffwll.ch>
Cc: Tomi Valkeinen <tomi.valkeinen@ti.com>
Cc: Rob Clark <robdclark@gmail.com>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/drm_crtc.c          | 5 +++--
 drivers/gpu/drm/omapdrm/omap_crtc.c | 3 ---
 include/drm/drm_crtc.h              | 5 -----
 3 files changed, 3 insertions(+), 10 deletions(-)

diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
index 227613a..a7738be 100644
--- a/drivers/gpu/drm/drm_crtc.c
+++ b/drivers/gpu/drm/drm_crtc.c
@@ -677,7 +677,6 @@ int drm_crtc_init_with_planes(struct drm_device *dev, struct drm_crtc *crtc,
 
 	crtc->dev = dev;
 	crtc->funcs = funcs;
-	crtc->invert_dimensions = false;
 
 	drm_modeset_lock_init(&crtc->mutex);
 	ret = drm_mode_object_get(dev, &crtc->base, DRM_MODE_OBJECT_CRTC);
@@ -2564,7 +2563,9 @@ int drm_crtc_check_viewport(const struct drm_crtc *crtc,
 
 	drm_crtc_get_hv_timing(mode, &hdisplay, &vdisplay);
 
-	if (crtc->invert_dimensions)
+	if (crtc->state &&
+	    crtc->primary->state->rotation & (BIT(DRM_ROTATE_90) |
+					      BIT(DRM_ROTATE_270)))
 		swap(hdisplay, vdisplay);
 
 	return check_src_coords(x << 16, y << 16,
diff --git a/drivers/gpu/drm/omapdrm/omap_crtc.c b/drivers/gpu/drm/omapdrm/omap_crtc.c
index 9a4ba4f..ad09590 100644
--- a/drivers/gpu/drm/omapdrm/omap_crtc.c
+++ b/drivers/gpu/drm/omapdrm/omap_crtc.c
@@ -412,9 +412,6 @@ static void omap_crtc_atomic_flush(struct drm_crtc *crtc,
 		dispc_mgr_go(omap_crtc->channel);
 		omap_irq_register(crtc->dev, &omap_crtc->vblank_irq);
 	}
-
-	crtc->invert_dimensions = !!(crtc->primary->state->rotation &
-				    (BIT(DRM_ROTATE_90) | BIT(DRM_ROTATE_270)));
 }
 
 static int omap_crtc_atomic_set_property(struct drm_crtc *crtc,
diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h
index 317baf9..028e5d4 100644
--- a/include/drm/drm_crtc.h
+++ b/include/drm/drm_crtc.h
@@ -407,9 +407,6 @@ struct drm_crtc_funcs {
  * @enabled: is this CRTC enabled?
  * @mode: current mode timings
  * @hwmode: mode timings as programmed to hw regs
- * @invert_dimensions: for purposes of error checking crtc vs fb sizes,
- *    invert the width/height of the crtc.  This is used if the driver
- *    is performing 90 or 270 degree rotated scanout
  * @x: x position on screen
  * @y: y position on screen
  * @funcs: CRTC control functions
@@ -458,8 +455,6 @@ struct drm_crtc {
 	 */
 	struct drm_display_mode hwmode;
 
-	bool invert_dimensions;
-
 	int x, y;
 	const struct drm_crtc_funcs *funcs;
 
-- 
2.4.9

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* Re: [PATCH 5/5] drm: Check plane src coordinates correctly during page flip for atomic drivers
  2015-10-15 17:40 ` [PATCH 5/5] drm: Check plane src coordinates correctly during page flip for " ville.syrjala
@ 2015-10-16 16:27   ` Matt Roper
  2015-10-16 16:40     ` Tvrtko Ursulin
  0 siblings, 1 reply; 15+ messages in thread
From: Matt Roper @ 2015-10-16 16:27 UTC (permalink / raw)
  To: ville.syrjala; +Cc: Tvrtko Ursulin, dri-devel

On Thu, Oct 15, 2015 at 08:40:02PM +0300, ville.syrjala@linux.intel.com wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> 
> Instead of relying on the old crtc-{x,y,mode} gunk, dig out the primary
> plane coordinates from the plane state when checking them against the
> new framebuffer during page flip.
> 
> Cc: Matt Roper <matthew.d.roper@intel.com>
> Cc: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
> Cc: Daniel Vetter <daniel@ffwll.ch>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

For the series:

Reviewed-by: Matt Roper <matthew.d.roper@intel.com>

I also confirmed that the i-g-t test I wrote here:
   http://lists.freedesktop.org/archives/intel-gfx/2015-October/077394.html
now passes with your patch series, so I believe Tvrtko's original bug
report should be fixed.


Matt

> ---
>  drivers/gpu/drm/drm_crtc.c | 9 ++++++++-
>  1 file changed, 8 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
> index ffaa3f5..52feffc 100644
> --- a/drivers/gpu/drm/drm_crtc.c
> +++ b/drivers/gpu/drm/drm_crtc.c
> @@ -5193,7 +5193,14 @@ int drm_mode_page_flip_ioctl(struct drm_device *dev,
>  		goto out;
>  	}
>  
> -	ret = drm_crtc_check_viewport(crtc, crtc->x, crtc->y, &crtc->mode, fb);
> +	if (crtc->state) {
> +		const struct drm_plane_state *state = crtc->primary->state;
> +
> +		ret = check_src_coords(state->src_x, state->src_y,
> +				       state->src_w, state->src_h, fb);
> +	} else {
> +		ret = drm_crtc_check_viewport(crtc, crtc->x, crtc->y, &crtc->mode, fb);
> +	}
>  	if (ret)
>  		goto out;
>  
> -- 
> 2.4.9
> 

-- 
Matt Roper
Graphics Software Engineer
IoTG Platform Enabling & Development
Intel Corporation
(916) 356-2795
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 5/5] drm: Check plane src coordinates correctly during page flip for atomic drivers
  2015-10-16 16:27   ` Matt Roper
@ 2015-10-16 16:40     ` Tvrtko Ursulin
  2015-10-16 17:17       ` Daniel Vetter
  0 siblings, 1 reply; 15+ messages in thread
From: Tvrtko Ursulin @ 2015-10-16 16:40 UTC (permalink / raw)
  To: Matt Roper, ville.syrjala; +Cc: intel-gfx, dri-devel


On 16/10/15 17:27, Matt Roper wrote:
> On Thu, Oct 15, 2015 at 08:40:02PM +0300, ville.syrjala@linux.intel.com wrote:
>> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>>
>> Instead of relying on the old crtc-{x,y,mode} gunk, dig out the primary
>> plane coordinates from the plane state when checking them against the
>> new framebuffer during page flip.
>>
>> Cc: Matt Roper <matthew.d.roper@intel.com>
>> Cc: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
>> Cc: Daniel Vetter <daniel@ffwll.ch>
>> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> For the series:
>
> Reviewed-by: Matt Roper <matthew.d.roper@intel.com>
>
> I also confirmed that the i-g-t test I wrote here:
>     http://lists.freedesktop.org/archives/intel-gfx/2015-October/077394.html
> now passes with your patch series, so I believe Tvrtko's original bug
> report should be fixed.

Oh I did not realize this series is about this, perhaps because I did 
not see 1/5 which maybe had some more obvious clues. :)

Great, that means if we decide to merge "drm/i915: Consider plane 
rotation when calculating stride in skl_do_mmio_flip" and 
"kms_rotation_crc: Exercise page flips with 90 degree rotation" we would 
have working rotated legacy page flip with a test case.

Regards,

Tvrtko
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 5/5] drm: Check plane src coordinates correctly during page flip for atomic drivers
  2015-10-16 16:40     ` Tvrtko Ursulin
@ 2015-10-16 17:17       ` Daniel Vetter
  2015-10-16 17:46         ` Matt Roper
  0 siblings, 1 reply; 15+ messages in thread
From: Daniel Vetter @ 2015-10-16 17:17 UTC (permalink / raw)
  To: Tvrtko Ursulin; +Cc: intel-gfx, dri-devel

On Fri, Oct 16, 2015 at 05:40:59PM +0100, Tvrtko Ursulin wrote:
> 
> On 16/10/15 17:27, Matt Roper wrote:
> >On Thu, Oct 15, 2015 at 08:40:02PM +0300, ville.syrjala@linux.intel.com wrote:
> >>From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> >>
> >>Instead of relying on the old crtc-{x,y,mode} gunk, dig out the primary
> >>plane coordinates from the plane state when checking them against the
> >>new framebuffer during page flip.
> >>
> >>Cc: Matt Roper <matthew.d.roper@intel.com>
> >>Cc: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
> >>Cc: Daniel Vetter <daniel@ffwll.ch>
> >>Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> >
> >For the series:
> >
> >Reviewed-by: Matt Roper <matthew.d.roper@intel.com>

Pulled all 5 into drm-misc, thanks.

> >I also confirmed that the i-g-t test I wrote here:
> >    http://lists.freedesktop.org/archives/intel-gfx/2015-October/077394.html
> >now passes with your patch series, so I believe Tvrtko's original bug
> >report should be fixed.
> 
> Oh I did not realize this series is about this, perhaps because I did not
> see 1/5 which maybe had some more obvious clues. :)
> 
> Great, that means if we decide to merge "drm/i915: Consider plane rotation
> when calculating stride in skl_do_mmio_flip" and "kms_rotation_crc: Exercise
> page flips with 90 degree rotation" we would have working rotated legacy
> page flip with a test case.

Matt, can you please push these igt patches and double-check that we have
subtests to catch the viewport confusion here?

Thanks, Daniel
-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 5/5] drm: Check plane src coordinates correctly during page flip for atomic drivers
  2015-10-16 17:17       ` Daniel Vetter
@ 2015-10-16 17:46         ` Matt Roper
  0 siblings, 0 replies; 15+ messages in thread
From: Matt Roper @ 2015-10-16 17:46 UTC (permalink / raw)
  To: Daniel Vetter; +Cc: intel-gfx, dri-devel

On Fri, Oct 16, 2015 at 07:17:31PM +0200, Daniel Vetter wrote:
> On Fri, Oct 16, 2015 at 05:40:59PM +0100, Tvrtko Ursulin wrote:
> > 
> > On 16/10/15 17:27, Matt Roper wrote:
> > >On Thu, Oct 15, 2015 at 08:40:02PM +0300, ville.syrjala@linux.intel.com wrote:
> > >>From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > >>
> > >>Instead of relying on the old crtc-{x,y,mode} gunk, dig out the primary
> > >>plane coordinates from the plane state when checking them against the
> > >>new framebuffer during page flip.
> > >>
> > >>Cc: Matt Roper <matthew.d.roper@intel.com>
> > >>Cc: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
> > >>Cc: Daniel Vetter <daniel@ffwll.ch>
> > >>Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > >
> > >For the series:
> > >
> > >Reviewed-by: Matt Roper <matthew.d.roper@intel.com>
> 
> Pulled all 5 into drm-misc, thanks.
> 
> > >I also confirmed that the i-g-t test I wrote here:
> > >    http://lists.freedesktop.org/archives/intel-gfx/2015-October/077394.html
> > >now passes with your patch series, so I believe Tvrtko's original bug
> > >report should be fixed.
> > 
> > Oh I did not realize this series is about this, perhaps because I did not
> > see 1/5 which maybe had some more obvious clues. :)
> > 
> > Great, that means if we decide to merge "drm/i915: Consider plane rotation
> > when calculating stride in skl_do_mmio_flip" and "kms_rotation_crc: Exercise
> > page flips with 90 degree rotation" we would have working rotated legacy
> > page flip with a test case.
> 
> Matt, can you please push these igt patches and double-check that we have
> subtests to catch the viewport confusion here?
> 
> Thanks, Daniel

Looks like Thomas already beat me to pushing the relevant i-g-t patches
(both the one I wrote and the one Tvrtko wrote), so I think we're
covered there.

Thanks.


Matt

> -- 
> Daniel Vetter
> Software Engineer, Intel Corporation
> http://blog.ffwll.ch

-- 
Matt Roper
Graphics Software Engineer
IoTG Platform Enabling & Development
Intel Corporation
(916) 356-2795
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2015-10-16 17:46 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-10-15 17:39 [PATCH 1/5] drm: Don't leak fb when plane crtc coodinates are bad ville.syrjala
2015-10-15 17:39 ` [PATCH 2/5] drm: Swap w/h when converting the mode to src coordidates for a rotated primary plane ville.syrjala
2015-10-15 17:40 ` [PATCH 3/5] drm: Refactor plane src coordinate checks ville.syrjala
2015-10-15 17:40 ` [PATCH 4/5] drm: Check crtc viewport correctly with rotated primary plane on atomic drivers ville.syrjala
2015-10-16  0:32   ` Matt Roper
2015-10-16  8:38     ` Ville Syrjälä
2015-10-16 14:35       ` Daniel Vetter
2015-10-16 15:10         ` Ville Syrjälä
2015-10-16 15:26           ` Matt Roper
2015-10-16 15:38   ` [PATCH v2 " ville.syrjala
2015-10-15 17:40 ` [PATCH 5/5] drm: Check plane src coordinates correctly during page flip for " ville.syrjala
2015-10-16 16:27   ` Matt Roper
2015-10-16 16:40     ` Tvrtko Ursulin
2015-10-16 17:17       ` Daniel Vetter
2015-10-16 17:46         ` Matt Roper

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.