[Intel-gfx] [PATCH 15/15] drm/i915: Add 90/270 rotation for NV12 format.

Ville Syrjälä ville.syrjala at linux.intel.com
Sat Sep 5 07:48:34 PDT 2015


On Sat, Sep 05, 2015 at 01:38:14AM +0000, Konduru, Chandra wrote:
> > >  	/* Adjust (macro)pixel boundary */
> > >  	if (fb && intel_format_is_yuv(fb->pixel_format)) {
> > > -		to_intel_plane_state(plane_state)->src.x1 &= ~0x10000;
> > > -		to_intel_plane_state(plane_state)->src.x2 &= ~0x10000;
> > > +		if (intel_rotation_90_or_270(plane_state->rotation)) {
> > > +			to_intel_plane_state(plane_state)->src.y1 &=
> > ~0x10000;
> > > +			to_intel_plane_state(plane_state)->src.y2 &=
> > ~0x10000;
> > > +		} else {
> > > +			to_intel_plane_state(plane_state)->src.x1 &=
> > ~0x10000;
> > > +			to_intel_plane_state(plane_state)->src.x2 &=
> > ~0x10000;
> > > +		}
> > 
> > IIRC we concluded (with Art's help) that this is not needed. We always
> > want to align in src.x.
> 
> Initial code that I added was making both X and Y offsets as even 
> when 90/270 as per bspec at that time. 
> 
> But later Art update is as below:
>   >> " the X offset must always be even for YUV422+NV12, and 
>   >>   the Y offset must be even when rotated 90/270 degrees."
> 
> So, above code change is needed.

That's the orignal text, later update from Art was:
 "They don't both have to be even when roated.  The text should say " the
  X offset must be even for YUV422+NV12 ***when not rotated 90/270***, and
  the Y offset must be even when rotated 90/270 degrees.""

And the spec has been updated since to include the same information. For
us we just need to align src.x? since that's what gets programmed into
the X offset for 0/180, and into the Y offset for 90/270. So the current
code is fine as is.

-- 
Ville Syrjälä
Intel OTC


More information about the Intel-gfx mailing list