[03/12] drm/i915: Fix AVI infoframe quantization range for YCbCr output

Submitted by Ville Syrjälä on July 18, 2019, 2:50 p.m.

Details

Message ID 20190718145053.25808-4-ville.syrjala@linux.intel.com
State Accepted
Headers show
Series "drm/i915: YCbCr output fixes and prep work for YCbCr 4:4:4 output" ( rev: 2 1 ) in DRI devel

Not browsing as part of any series.

Commit Message

Ville Syrjälä July 18, 2019, 2:50 p.m.
From: Ville Syrjälä <ville.syrjala@linux.intel.com>

We're configuring the AVI infoframe quantization range bits as if
we're always transmitting RGB pixels. Let's fix this so that we
correctly indicate limited range YCC quantization range when
transmitting YCbCr instead.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/i915/display/intel_hdmi.c | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

Patch hide | download patch | download mbox

diff --git a/drivers/gpu/drm/i915/display/intel_hdmi.c b/drivers/gpu/drm/i915/display/intel_hdmi.c
index 9bf28de10401..b8100cf21dd0 100644
--- a/drivers/gpu/drm/i915/display/intel_hdmi.c
+++ b/drivers/gpu/drm/i915/display/intel_hdmi.c
@@ -724,11 +724,16 @@  intel_hdmi_compute_avi_infoframe(struct intel_encoder *encoder,
 
 	drm_hdmi_avi_infoframe_colorspace(frame, conn_state);
 
-	drm_hdmi_avi_infoframe_quant_range(frame, connector,
-					   adjusted_mode,
-					   crtc_state->limited_color_range ?
-					   HDMI_QUANTIZATION_RANGE_LIMITED :
-					   HDMI_QUANTIZATION_RANGE_FULL);
+	if (crtc_state->output_format == INTEL_OUTPUT_FORMAT_RGB) {
+		drm_hdmi_avi_infoframe_quant_range(frame, connector,
+						   adjusted_mode,
+						   crtc_state->limited_color_range ?
+						   HDMI_QUANTIZATION_RANGE_LIMITED :
+						   HDMI_QUANTIZATION_RANGE_FULL);
+	} else {
+		frame->quantization_range = HDMI_QUANTIZATION_RANGE_DEFAULT;
+		frame->ycc_quantization_range = HDMI_YCC_QUANTIZATION_RANGE_LIMITED;
+	}
 
 	drm_hdmi_avi_infoframe_content_type(frame, conn_state);
 

Comments

On Thu, 2019-07-18 at 17:50 +0300, Ville Syrjala wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>

> 

> We're configuring the AVI infoframe quantization range bits as if

> we're always transmitting RGB pixels. Let's fix this so that we

> correctly indicate limited range YCC quantization range when

> transmitting YCbCr instead.

> 

> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

> ---

>  drivers/gpu/drm/i915/display/intel_hdmi.c | 15 ++++++++++-----

>  1 file changed, 10 insertions(+), 5 deletions(-)

> 

> diff --git a/drivers/gpu/drm/i915/display/intel_hdmi.c

> b/drivers/gpu/drm/i915/display/intel_hdmi.c

> index 9bf28de10401..b8100cf21dd0 100644

> --- a/drivers/gpu/drm/i915/display/intel_hdmi.c

> +++ b/drivers/gpu/drm/i915/display/intel_hdmi.c

> @@ -724,11 +724,16 @@ intel_hdmi_compute_avi_infoframe(struct

> intel_encoder *encoder,

>  

>  	drm_hdmi_avi_infoframe_colorspace(frame, conn_state);

>  

> -	drm_hdmi_avi_infoframe_quant_range(frame, connector,

> -					   adjusted_mode,

> -					   crtc_state-

> >limited_color_range ?

> -					   HDMI_QUANTIZATION_RANGE_LIMI

> TED :

> -					   HDMI_QUANTIZATION_RANGE_FULL

> );

> +	if (crtc_state->output_format == INTEL_OUTPUT_FORMAT_RGB) {

> +		drm_hdmi_avi_infoframe_quant_range(frame, connector,

> +						   adjusted_mode,

> +						   crtc_state-

> >limited_color_range ?

> +						   HDMI_QUANTIZATION_RA

> NGE_LIMITED :

> +						   HDMI_QUANTIZATION_RA

> NGE_FULL);

> +	} else {

> +		frame->quantization_range =

> HDMI_QUANTIZATION_RANGE_DEFAULT;

> +		frame->ycc_quantization_range =

> HDMI_YCC_QUANTIZATION_RANGE_LIMITED;

> +	}

>  

>  	drm_hdmi_avi_infoframe_content_type(frame, conn_state);

>  

The changes look good to me.
Reviewed-by: Gwan-gyeong Mun <gwan-gyeong.mun@intel.com>