[Intel-gfx] [PATCH] drm/i915: fix pfit regression for non-autoscaled resolutions

Daniel Vetter daniel at ffwll.ch
Fri Jul 12 18:56:25 CEST 2013


On Fri, Jul 12, 2013 at 08:04:16AM -0700, Jesse Barnes wrote:
> On Fri, 12 Jul 2013 08:07:30 +0200
> Daniel Vetter <daniel.vetter at ffwll.ch> wrote:
> 
> > I.e. for letter/pillarboxing. For those cases we need to adjust the
> > mode a bit, but Jesse gmch pfit refactoring in
> > 
> > commit 2dd24552cab40ea829ba3fda890eeafd2c4816d8
> > Author: Jesse Barnes <jbarnes at virtuousgeek.org>
> > Date:   Thu Apr 25 12:55:01 2013 -0700
> > 
> >     drm/i915: factor out GMCH panel fitting code and use for eDP v3
> > 
> > broke that by reordering the computation of the gmch pfit state with
> > the block of code that prepared the adjusted mode for it and told the
> > modeset core not to overwrite the adjusted mode with default settings.
> > 
> > We might want to switch around the core code to just fill in defaults,
> > but this code predates the pipe_config modeset rework. And in the old
> > crtc helpers we did not have a suitable spot to do this.
> > 
> > Cc: Mika Kuoppala <mika.kuoppala at intel.com>
> > Cc: Jesse Barnes <jbarnes at virtuousgeek.org>
> > Cc: Hans de Bruin <jmdebruin at xmsnet.nl>
> > Reported-and-tested-by: Hans de Bruin <jmdebruin at xmsnet.nl>
> > Signed-off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
> > ---
> >  drivers/gpu/drm/i915/intel_lvds.c  | 5 +----
> >  drivers/gpu/drm/i915/intel_panel.c | 3 +++
> >  2 files changed, 4 insertions(+), 4 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/i915/intel_lvds.c b/drivers/gpu/drm/i915/intel_lvds.c
> > index b0e1088..0536c9b 100644
> > --- a/drivers/gpu/drm/i915/intel_lvds.c
> > +++ b/drivers/gpu/drm/i915/intel_lvds.c
> > @@ -297,14 +297,11 @@ static bool intel_lvds_compute_config(struct intel_encoder *intel_encoder,
> >  
> >  		intel_pch_panel_fitting(intel_crtc, pipe_config,
> >  					intel_connector->panel.fitting_mode);
> > -		return true;
> >  	} else {
> >  		intel_gmch_panel_fitting(intel_crtc, pipe_config,
> >  					 intel_connector->panel.fitting_mode);
> > -	}
> >  
> > -	drm_mode_set_crtcinfo(adjusted_mode, 0);
> > -	pipe_config->timings_set = true;
> > +	}
> >  
> >  	/*
> >  	 * XXX: It would be nice to support lower refresh rates on the
> > diff --git a/drivers/gpu/drm/i915/intel_panel.c b/drivers/gpu/drm/i915/intel_panel.c
> > index 80bea1d..45010bb 100644
> > --- a/drivers/gpu/drm/i915/intel_panel.c
> > +++ b/drivers/gpu/drm/i915/intel_panel.c
> > @@ -194,6 +194,9 @@ void intel_gmch_panel_fitting(struct intel_crtc *intel_crtc,
> >  	    adjusted_mode->vdisplay == mode->vdisplay)
> >  		goto out;
> >  
> > +	drm_mode_set_crtcinfo(adjusted_mode, 0);
> > +	pipe_config->timings_set = true;
> > +
> >  	switch (fitting_mode) {
> >  	case DRM_MODE_SCALE_CENTER:
> >  		/*
> 
> This code is a bit confusing, but this looks better than what was there
> before (clobbering the adjusted_mode after calling gmch_panel_fitting
> definitely seems wrong).  Only nit is that the timings_set flag isn't
> very descriptive, but that's not the fault of this patch.

Yeah, that's just an artifact from the old crtc helper code, with the
new compute_config callbacks we could precompute sane crtc timings. I'll
fix this up for 3.12

> Reviewed-by: Jesse Barnes <jbarnes at virtuousgeek.org>

Picked up for -fixes, thanks for the review.
-Daniel
-- 
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch



More information about the Intel-gfx mailing list