[Intel-gfx] [PATCH 1/2] drm/i915: Clean up skl_plane_has_planar()

Pandiyan, Dhinakaran dhinakaran.pandiyan at intel.com
Mon Aug 27 17:53:43 UTC 2018



On Mon, 2018-08-27 at 14:56 +0300, Ville Syrjälä wrote:
> On Fri, Aug 24, 2018 at 01:38:55PM -0700, Dhinakaran Pandiyan wrote:
> > skl_plane_has_planar is hard to read, simplify the logic by
> > checking for
> > support in the order of platform, pipe and plane.
> 
> I had a slightly different version of this somewhere. But this one
> might
> be even better.
> 
> > 
> > No change in functionality intended.
> > 
> > Cc: Ville Syrjälä <ville.syrjala at linux.intel.com>
> > Signed-off-by: Dhinakaran Pandiyan <dhinakaran.pandiyan at intel.com>
> > ---
> >  drivers/gpu/drm/i915/intel_display.c | 27 +++++++++---------------
> > ---
> >  1 file changed, 9 insertions(+), 18 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/i915/intel_display.c
> > b/drivers/gpu/drm/i915/intel_display.c
> > index 30fdfd1a3037..7e18bd8b21b8 100644
> > --- a/drivers/gpu/drm/i915/intel_display.c
> > +++ b/drivers/gpu/drm/i915/intel_display.c
> > @@ -13622,24 +13622,15 @@ static bool skl_plane_has_fbc(struct
> > drm_i915_private *dev_priv,
> >  bool skl_plane_has_planar(struct drm_i915_private *dev_priv,
> >  			  enum pipe pipe, enum plane_id plane_id)
> >  {
> > -	if (plane_id == PLANE_PRIMARY) {
> > -		if (IS_SKYLAKE(dev_priv) || IS_BROXTON(dev_priv))
> > -			return false;
> > -		else if ((INTEL_GEN(dev_priv) == 9 && pipe ==
> > PIPE_C) &&
> > -			 !IS_GEMINILAKE(dev_priv))
> > -			return false;
> > -	} else if (plane_id >= PLANE_SPRITE0) {
> > -		if (plane_id == PLANE_CURSOR)
> > -			return false;
> > -		if (IS_GEMINILAKE(dev_priv) || INTEL_GEN(dev_priv)
> > == 10) {
> > -			if (plane_id != PLANE_SPRITE0)
> > -				return false;
> > -		} else {
> > -			if (plane_id != PLANE_SPRITE0 || pipe ==
> > PIPE_C ||
> > -			    IS_SKYLAKE(dev_priv) ||
> > IS_BROXTON(dev_priv))
> > -				return false;
> > -		}
> > -	}
> > +	if (IS_SKYLAKE(dev_priv) || IS_BROXTON(dev_priv))
> > +		return false;
> > +
> > +	if (INTEL_GEN(dev_priv) == 9 && !IS_GEMINILAKE(dev_priv)
> > && pipe == PIPE_C)
> > +		return false;
> > +
> > +	if (plane_id == PLANE_CURSOR || plane_id != PLANE_SPRITE0)
> > +		return false;
> 
> The cursor check is rather redundant here. IIRC I put it at the very
> start of the function to make it obvious that cursor never supports
> this. But we could just as well drop the check entirely.
> 
> This also disables NV12 for the primary plane which isn't correct.
That's a good catch, thanks.
Switch the condition to
	if (plane_id != PLANE_PRIMARY && plane_id != PLANE_SPRITE0)
		
return false;
?

> 
> > +
> >  	return true;
> >  }
> >  
> > -- 
> > 2.17.1
> 
> 


More information about the Intel-gfx mailing list