On Tue, 10 Apr 2012 09:33:19 +0200, Daniel Vetter <daniel.vetter@xxxxxxxx> wrote: > We've only computed whether we need to fall back to 6bpc due to dp > link bandwidth constrains in mode_valid, but not mode_fixup. Under > various circumstances X likes to create new modes which then lack > proper 6bpc flags (if required), resulting in mode_fixup failures and > ultimately black screens. > > This is hopefully fixes the last regression fallout of the dp > bandwidth fixes. Based on my reading, this still leaves the issue of depth > 24 modes as the upper bandwidth required is calculated on the presumption of depth == 24, but the divider set to the fb depth in the normal case. > The likely culprit for this regression is > > commit 3d794f87238f74d80e78a7611c7fbde8a54c85c2 > Author: Keith Packard <keithp@xxxxxxxxxx> > Date: Wed Jan 25 08:16:25 2012 -0800 > > drm/i915: Force explicit bpp selection for intel_dp_link_required > > Reported-and-tested-by: Brice Goglin <Brice.Goglin@xxxxxxxxxxxx> > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=48170 > Cc: stable@xxxxxxxxxx > Signed-Off-by: Daniel Vetter <daniel.vetter@xxxxxxxx> > --- > drivers/gpu/drm/i915/intel_dp.c | 49 +++++++++++++++++++++++++++----------- > 1 files changed, 35 insertions(+), 14 deletions(-) > > diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c > index 110552f..065c26d 100644 > --- a/drivers/gpu/drm/i915/intel_dp.c > +++ b/drivers/gpu/drm/i915/intel_dp.c > @@ -219,14 +219,38 @@ intel_dp_max_data_rate(int max_link_clock, int max_lanes) > return (max_link_clock * max_lanes * 8) / 10; > } > > +static bool > +intel_dp_adjust_dithering(struct intel_dp *intel_dp, > + struct drm_display_mode *mode, > + struct drm_display_mode *adjusted_mode) > +{ > + int max_link_clock = intel_dp_link_clock(intel_dp_max_link_bw(intel_dp)); > + int max_lanes = intel_dp_max_lane_count(intel_dp); > + int max_rate, mode_rate; > + > + mode_rate = intel_dp_link_required(mode->clock, 24); > + max_rate = intel_dp_max_data_rate(max_link_clock, max_lanes); > + > + if (mode_rate > max_rate) { > + mode_rate = intel_dp_link_required(mode->clock, 18); Cut'n'paste bad whitespace. -Chris -- Chris Wilson, Intel Open Source Technology Centre _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel