[Intel-gfx] [PATCH 2/4] drm/i915: Don't use HDMI 12bpc when cloning with other encoder types

Rodrigo Vivi rodrigo.vivi at gmail.com
Mon Mar 10 19:31:30 CET 2014


Reviewed-by: Rodrigo Vivi <rodrigo.vivi at gmail.com>

On Mon, Mar 3, 2014 at 11:15 AM,  <ville.syrjala at linux.intel.com> wrote:
> From: Ville Syrjälä <ville.syrjala at linux.intel.com>
>
> 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 at linux.intel.com>
> ---
>  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 at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx



-- 
Rodrigo Vivi
Blog: http://blog.vivi.eng.br



More information about the Intel-gfx mailing list