Reviewed-by: Rodrigo Vivi <rodrigo.vivi@xxxxxxxxx> On Mon, Mar 3, 2014 at 11:15 AM, <ville.syrjala@xxxxxxxxxxxxxxx> wrote: > From: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > > When cloning HDMI with other output types, we can't use 12bpc since the > clocks for the other encoder types would be off. So have > intel_hdmi_compute_config() check if there are other encoders besides > HDMI being fed from the same pipe, and if so, pick 8bpc insted if 12bpc. > > Signed-off-by: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > --- > drivers/gpu/drm/i915/intel_hdmi.c | 27 ++++++++++++++++++++++++++- > 1 file changed, 26 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c > index 393cd30..524962d 100644 > --- a/drivers/gpu/drm/i915/intel_hdmi.c > +++ b/drivers/gpu/drm/i915/intel_hdmi.c > @@ -843,6 +843,30 @@ intel_hdmi_mode_valid(struct drm_connector *connector, > return MODE_OK; > } > > +static bool hdmi_12bpc_possible(struct intel_crtc *crtc) > +{ > + struct drm_device *dev = crtc->base.dev; > + struct intel_encoder *encoder; > + int count = 0, count_hdmi = 0; > + > + if (!HAS_PCH_SPLIT(dev)) > + return false; > + > + list_for_each_entry(encoder, &dev->mode_config.encoder_list, base.head) { > + if (encoder->new_crtc != crtc) > + continue; > + > + count_hdmi += encoder->type == INTEL_OUTPUT_HDMI; > + count++; > + } > + > + /* > + * HDMI 12bpc affects the clocks, so it's only possible > + * when not cloning with other encoder types. > + */ > + return count_hdmi > 0 && count_hdmi == count; > +} > + > bool intel_hdmi_compute_config(struct intel_encoder *encoder, > struct intel_crtc_config *pipe_config) > { > @@ -875,7 +899,8 @@ bool intel_hdmi_compute_config(struct intel_encoder *encoder, > * within limits. > */ > if (pipe_config->pipe_bpp > 8*3 && intel_hdmi->has_hdmi_sink && > - clock_12bpc <= portclock_limit && HAS_PCH_SPLIT(dev)) { > + clock_12bpc <= portclock_limit && > + hdmi_12bpc_possible(encoder->new_crtc)) { > DRM_DEBUG_KMS("picking bpc to 12 for HDMI output\n"); > desired_bpp = 12*3; > > -- > 1.8.3.2 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@xxxxxxxxxxxxxxxxxxxxx > http://lists.freedesktop.org/mailman/listinfo/intel-gfx -- Rodrigo Vivi Blog: http://blog.vivi.eng.br _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx