drm/i915: Fix g4x sprite scaling stride check with GTT remapping
diff mbox series

Message ID 20190930183045.662-1-ville.syrjala@linux.intel.com
State New
Headers show
Series
  • drm/i915: Fix g4x sprite scaling stride check with GTT remapping
Related show

Commit Message

Ville Syrjälä Sept. 30, 2019, 6:30 p.m. UTC
From: Ville Syrjälä <ville.syrjala@linux.intel.com>

I forgot to update the g4x sprite scaling stride check when GTT
remapping was introduced. The stride of the original framebuffer
is irrelevant when remapping is used and instead we want to check
the stride of the remapped view.

Also drop the duplicate width_bytes check. We already check that
a few lines earlier.

Fixes: df79cf441910 ("drm/i915: Store the final plane stride in plane_state")
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/display/intel_sprite.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

Comments

Chris Wilson Oct. 1, 2019, 7:18 p.m. UTC | #1
Quoting Ville Syrjala (2019-09-30 19:30:45)
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> 
> I forgot to update the g4x sprite scaling stride check when GTT
> remapping was introduced. The stride of the original framebuffer
> is irrelevant when remapping is used and instead we want to check
> the stride of the remapped view.
> 
> Also drop the duplicate width_bytes check. We already check that
> a few lines earlier.
> 
> Fixes: df79cf441910 ("drm/i915: Store the final plane stride in plane_state")
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

So basically .stride = intel_fb_pitch()
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
-Chris

Patch
diff mbox series

diff --git a/drivers/gpu/drm/i915/display/intel_sprite.c b/drivers/gpu/drm/i915/display/intel_sprite.c
index 3d56db32291b..633fa8069348 100644
--- a/drivers/gpu/drm/i915/display/intel_sprite.c
+++ b/drivers/gpu/drm/i915/display/intel_sprite.c
@@ -1513,12 +1513,13 @@  g4x_sprite_check_scaling(struct intel_crtc_state *crtc_state,
 	const struct drm_framebuffer *fb = plane_state->base.fb;
 	const struct drm_rect *src = &plane_state->base.src;
 	const struct drm_rect *dst = &plane_state->base.dst;
 	int src_x, src_w, src_h, crtc_w, crtc_h;
 	const struct drm_display_mode *adjusted_mode =
 		&crtc_state->base.adjusted_mode;
+	unsigned int stride = plane_state->color_plane[0].stride;
 	unsigned int cpp = fb->format->cpp[0];
 	unsigned int width_bytes;
 	int min_width, min_height;
 
 	crtc_w = drm_rect_width(dst);
 	crtc_h = drm_rect_height(dst);
@@ -1554,15 +1555,15 @@  g4x_sprite_check_scaling(struct intel_crtc_state *crtc_state,
 	if (width_bytes > 4096) {
 		DRM_DEBUG_KMS("Fetch width (%d) exceeds hardware max with scaling (%u)\n",
 			      width_bytes, 4096);
 		return -EINVAL;
 	}
 
-	if (width_bytes > 4096 || fb->pitches[0] > 4096) {
+	if (stride > 4096) {
 		DRM_DEBUG_KMS("Stride (%u) exceeds hardware max with scaling (%u)\n",
-			      fb->pitches[0], 4096);
+			      stride, 4096);
 		return -EINVAL;
 	}
 
 	return 0;
 }