diff mbox

drm/i915: pass adjusted_mode instead of mode to intel_choose_pipe_bpp_dither

Message ID 1348673271-23891-1-git-send-email-jani.nikula@intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

Jani Nikula Sept. 26, 2012, 3:27 p.m. UTC
The dithering introduced in

commit 3b5c78a35cf7511c15e09a9b0ffab290a42d9bcf
Author: Adam Jackson <ajax@redhat.com>
Date:   Tue Dec 13 15:41:00 2011 -0800

    drm/i915/dp: Dither down to 6bpc if it makes the mode fit

stores the INTEL_MODE_DP_FORCE_6BPC flag in the private_flags of the
adjusted mode, while intel_choose_pipe_bpp_dither() determining the color
depth was passed the original mode, without the flag, so it would never
have any effect. However, the BPC was clamped by VBT settings, making
things work by coincidence, until that part was removed in

commit 4344b813f105a19f793f1fd93ad775b784648b95
Author: Daniel Vetter <daniel.vetter@ffwll.ch>
Date:   Fri Aug 10 11:10:20 2012 +0200

Pass adjusted_mode instead of mode to intel_choose_pipe_bpp_dither() to
make INTEL_MODE_DP_FORCE_6BPC have effect.

Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=47621
CC: stable@vger.kernel.org
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
 drivers/gpu/drm/i915/intel_display.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Daniel Vetter Sept. 26, 2012, 3:25 p.m. UTC | #1
On Wed, Sep 26, 2012 at 06:27:51PM +0300, Jani Nikula wrote:
> The dithering introduced in
> 
> commit 3b5c78a35cf7511c15e09a9b0ffab290a42d9bcf
> Author: Adam Jackson <ajax@redhat.com>
> Date:   Tue Dec 13 15:41:00 2011 -0800
> 
>     drm/i915/dp: Dither down to 6bpc if it makes the mode fit
> 
> stores the INTEL_MODE_DP_FORCE_6BPC flag in the private_flags of the
> adjusted mode, while intel_choose_pipe_bpp_dither() determining the color
> depth was passed the original mode, without the flag, so it would never
> have any effect. However, the BPC was clamped by VBT settings, making
> things work by coincidence, until that part was removed in
> 
> commit 4344b813f105a19f793f1fd93ad775b784648b95
> Author: Daniel Vetter <daniel.vetter@ffwll.ch>
> Date:   Fri Aug 10 11:10:20 2012 +0200
> 
> Pass adjusted_mode instead of mode to intel_choose_pipe_bpp_dither() to
> make INTEL_MODE_DP_FORCE_6BPC have effect.
> 
> Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=47621
> CC: stable@vger.kernel.org
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>

Awesome piece of debugging here. But can I point you to
i9xx_crtc_mode_set, where the same bug exists an ask for v2?

Cheers, Daniel

> ---
>  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 08c3f69..0a9802a 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -4936,7 +4936,8 @@ static int ironlake_crtc_mode_set(struct drm_crtc *crtc,
>  	intel_crtc_update_cursor(crtc, true);
>  
>  	/* determine panel color depth */
> -	dither = intel_choose_pipe_bpp_dither(crtc, fb, &intel_crtc->bpp, mode);
> +	dither = intel_choose_pipe_bpp_dither(crtc, fb, &intel_crtc->bpp,
> +					      adjusted_mode);
>  	if (is_lvds && dev_priv->lvds_dither)
>  		dither = true;
>  
> -- 
> 1.7.9.5
>
diff mbox

Patch

diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 08c3f69..0a9802a 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -4936,7 +4936,8 @@  static int ironlake_crtc_mode_set(struct drm_crtc *crtc,
 	intel_crtc_update_cursor(crtc, true);
 
 	/* determine panel color depth */
-	dither = intel_choose_pipe_bpp_dither(crtc, fb, &intel_crtc->bpp, mode);
+	dither = intel_choose_pipe_bpp_dither(crtc, fb, &intel_crtc->bpp,
+					      adjusted_mode);
 	if (is_lvds && dev_priv->lvds_dither)
 		dither = true;