[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