[Intel-gfx] [PATCH v2 11/12] drm/i915/dp: Fix DFP rgb->ycbcr conversion matrix

Shankar, Uma uma.shankar at intel.com
Fri Apr 1 06:56:55 UTC 2022



> -----Original Message-----
> From: Ville Syrjala <ville.syrjala at linux.intel.com>
> Sent: Tuesday, March 22, 2022 5:30 PM
> To: intel-gfx at lists.freedesktop.org
> Cc: Nautiyal, Ankit K <ankit.k.nautiyal at intel.com>; Shankar, Uma
> <uma.shankar at intel.com>
> Subject: [PATCH v2 11/12] drm/i915/dp: Fix DFP rgb->ycbcr conversion matrix
> 
> From: Ville Syrjälä <ville.syrjala at linux.intel.com>
> 
> Our YCbCr output is always supposed to be limited range BT.709.
> That's what we send with native HDMI. The conn_state->colorspace stuff is entirely
> independent of that and is not supposed to alter the generated output in any way. If
> we want a way to do that then we need a new proprty for it.
> 
> Make it so that the RGB->YCbCr conversion when performed by the DPF will match
> the BT.709 we would transmit with native HDMI.

Looks Good to me.
Reviewed-by: Uma Shankar <uma.shankar at intel.com>

> Cc: Ankit Nautiyal <ankit.k.nautiyal at intel.com>
> Cc: Uma Shankar <uma.shankar at intel.com>
> Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_dp.c | 38 ++-----------------------
>  1 file changed, 3 insertions(+), 35 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c
> b/drivers/gpu/drm/i915/display/intel_dp.c
> index 053853a3054e..d3d458b3267d 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> @@ -2574,38 +2574,8 @@ void intel_dp_configure_protocol_converter(struct
> intel_dp *intel_dp,
>  			    "Failed to %s protocol converter YCbCr 4:2:0 conversion
> mode\n",
>  			    str_enable_disable(intel_dp->dfp.ycbcr_444_to_420));
> 
> -	tmp = 0;
> -	if (intel_dp->dfp.rgb_to_ycbcr) {
> -		bool bt2020, bt709;
> -
> -		/*
> -		 * FIXME: Currently if userspace selects BT2020 or BT709, but PCON
> supports only
> -		 * RGB->YCbCr for BT601 colorspace, we go ahead with BT601, as
> default.
> -		 *
> -		 */
> -		tmp = DP_CONVERSION_BT601_RGB_YCBCR_ENABLE;
> -
> -		bt2020 = drm_dp_downstream_rgb_to_ycbcr_conversion(intel_dp-
> >dpcd,
> -								   intel_dp-
> >downstream_ports,
> -
> DP_DS_HDMI_BT2020_RGB_YCBCR_CONV);
> -		bt709 = drm_dp_downstream_rgb_to_ycbcr_conversion(intel_dp-
> >dpcd,
> -								  intel_dp-
> >downstream_ports,
> -
> DP_DS_HDMI_BT709_RGB_YCBCR_CONV);
> -		switch (crtc_state->infoframes.vsc.colorimetry) {
> -		case DP_COLORIMETRY_BT2020_RGB:
> -		case DP_COLORIMETRY_BT2020_YCC:
> -			if (bt2020)
> -				tmp =
> DP_CONVERSION_BT2020_RGB_YCBCR_ENABLE;
> -			break;
> -		case DP_COLORIMETRY_BT709_YCC:
> -		case DP_COLORIMETRY_XVYCC_709:
> -			if (bt709)
> -				tmp =
> DP_CONVERSION_BT709_RGB_YCBCR_ENABLE;
> -			break;
> -		default:
> -			break;
> -		}
> -	}
> +	tmp = intel_dp->dfp.rgb_to_ycbcr ?
> +		DP_CONVERSION_BT709_RGB_YCBCR_ENABLE : 0;
> 
>  	if (drm_dp_pcon_convert_rgb_to_ycbcr(&intel_dp->aux, tmp) < 0)
>  		drm_dbg_kms(&i915->drm,
> @@ -4459,9 +4429,7 @@ intel_dp_update_420(struct intel_dp *intel_dp)
>  							intel_dp-
> >downstream_ports);
>  	rgb_to_ycbcr = drm_dp_downstream_rgb_to_ycbcr_conversion(intel_dp-
> >dpcd,
>  								 intel_dp-
> >downstream_ports,
> -
> DP_DS_HDMI_BT601_RGB_YCBCR_CONV |
> -
> DP_DS_HDMI_BT709_RGB_YCBCR_CONV |
> -
> DP_DS_HDMI_BT2020_RGB_YCBCR_CONV);
> +
> DP_DS_HDMI_BT709_RGB_YCBCR_CONV);
> 
>  	if (DISPLAY_VER(i915) >= 11) {
>  		/* Let PCON convert from RGB->YCbCr if possible */
> --
> 2.34.1



More information about the Intel-gfx mailing list