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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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.

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

-- 
Jesse Barnes, Intel Open Source Technology Center


[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux