All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: Chris Wilson <chris@chris-wilson.co.uk>,
	intel-gfx@lists.freedesktop.org,
	drm-intel-fixes@lists.freedesktop.org
Subject: Re: [PATCH] drm/i915: Fix SKL+ 90/270 degree rotated plane coordinate computation
Date: Wed, 26 Oct 2016 18:17:42 +0300	[thread overview]
Message-ID: <20161026151742.GK4617@intel.com> (raw)
In-Reply-To: <20161025095535.GG13263@nuc-i3427.alporthouse.com>

On Tue, Oct 25, 2016 at 10:55:35AM +0100, Chris Wilson wrote:
> On Tue, Oct 25, 2016 at 12:39:43PM +0300, Ville Syrjälä wrote:
> > On Tue, Oct 25, 2016 at 08:20:46AM +0100, Chris Wilson wrote:
> > > On Mon, Oct 24, 2016 at 07:13:04PM +0300, ville.syrjala@linux.intel.com wrote:
> > > > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > > > 
> > > > Pass the framebuffer size in .16 fixed point coordinates to
> > > > drm_rect_rotate() since that's what the source coordinates are as well
> > > > at this stage. We used to do this part of the computation in integer
> > > > coordinates, but that got changed when moving the computation to
> > > > happen in the check phase of the operation. Unfortunately I forgot
> > > > to shift up the fb width and height appropriately.
> > > > 
> > > > With the bogus size we ended up with some negative fb offset, which when
> > > > added to the vma offset caused out scanout to start at an offset earlier
> > > > than we inteded. Eg. when testing on my SKL I saw a row of incorrect
> > > > tiles at the top of my screen.
> > > > 
> > > > Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
> > > > Cc: Sivakumar Thulasimani <sivakumar.thulasimani@intel.com>
> > > > Cc: drm-intel-fixes@lists.freedesktop.org
> > > > Fixes: b63a16f6cd89 ("drm/i915: Compute display surface offset in the plane check hook for SKL+")
> > > > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > > > ---
> > > >  drivers/gpu/drm/i915/intel_display.c | 3 ++-
> > > >  1 file changed, 2 insertions(+), 1 deletion(-)
> > > > 
> > > > diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> > > > index 5a036999487b..c783f884f85d 100644
> > > > --- a/drivers/gpu/drm/i915/intel_display.c
> > > > +++ b/drivers/gpu/drm/i915/intel_display.c
> > > > @@ -2985,7 +2985,8 @@ int skl_check_plane_surface(struct intel_plane_state *plane_state)
> > > >  	/* Rotate src coordinates to match rotated GTT view */
> > > >  	if (drm_rotation_90_or_270(rotation))
> > > >  		drm_rect_rotate(&plane_state->base.src,
> > > > -				fb->width, fb->height, DRM_ROTATE_270);
> > > > +				fb->width << 16, fb->height << 16,
> > > > +				DRM_ROTATE_270);
> > > 
> > > Line 2576 (intel_fill_fb_info()) also looks wrong.
> > > 
> > > drm_rect_rotate(&r,
> > > 		rot_info->plane[i].width * tile_width,
> > > 		rot_info->plane[i].height * tile_height,
> > > 		DRM_ROTATE_270);
> > 
> > That should be fine. No sub-pixel stuff going on in that
> > function.
> 
> Ah, yes r is not scaled.
> 
> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
> 
> drm_plane_subpixel_scale(fb->width) ?
> drm_plane_scale_pixels_to_subpixels(fb->width) ?

I guess we could have something like that. Can't gurarantee it wouldn't
confuse me though. As I replied to Paulo, my brain has a hard time
understanding abstracted fixed point stuff.

> 
> Not sure what terminology you are already using for the plane_state->src
> coordinates.

Me neither. Sometimes I refer to sub-pixel coordinates, sometimes
fractional coordinates, and sometimes perhaps even something else
that I can't recall right now.

-- 
Ville Syrjälä
Intel OTC
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

  reply	other threads:[~2016-10-26 15:17 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-10-24 16:13 [PATCH] drm/i915: Fix SKL+ 90/270 degree rotated plane coordinate computation ville.syrjala
2016-10-24 16:46 ` ✗ Fi.CI.BAT: warning for " Patchwork
2016-10-24 17:40   ` Ville Syrjälä
2016-10-25  5:44   ` Saarinen, Jani
2016-10-25  7:20 ` [PATCH] " Chris Wilson
2016-10-25  9:39   ` Ville Syrjälä
2016-10-25  9:55     ` Chris Wilson
2016-10-26 15:17       ` Ville Syrjälä [this message]
2016-10-26 17:39       ` Ville Syrjälä
2016-10-25 14:04 ` Tvrtko Ursulin
2016-10-25 19:02 ` Paulo Zanoni
2016-10-26  6:25   ` Daniel Vetter
2016-10-26 15:04   ` Ville Syrjälä

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20161026151742.GK4617@intel.com \
    --to=ville.syrjala@linux.intel.com \
    --cc=chris@chris-wilson.co.uk \
    --cc=drm-intel-fixes@lists.freedesktop.org \
    --cc=intel-gfx@lists.freedesktop.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.