[Intel-gfx] [PATCH 12/13] drm/i915: Turn off pipe CSC when it's not needed

Shankar, Uma uma.shankar at intel.com
Thu Jan 17 05:37:04 UTC 2019



>-----Original Message-----
>From: Ville Syrjala [mailto:ville.syrjala at linux.intel.com]
>Sent: Friday, January 11, 2019 10:38 PM
>To: intel-gfx at lists.freedesktop.org
>Cc: Shankar, Uma <uma.shankar at intel.com>; Roper, Matthew D
><matthew.d.roper at intel.com>
>Subject: [PATCH 12/13] drm/i915: Turn off pipe CSC when it's not needed
>
>From: Ville Syrjälä <ville.syrjala at linux.intel.com>
>
>As with pipe gamma we can avoid the potential precision loss from the pipe csc
>unit when there is no need to use it. And again we need the same logic for
>updating the planes.

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

>Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
>---
> drivers/gpu/drm/i915/intel_color.c | 10 ++++++++--
> 1 file changed, 8 insertions(+), 2 deletions(-)
>
>diff --git a/drivers/gpu/drm/i915/intel_color.c
>b/drivers/gpu/drm/i915/intel_color.c
>index a8b7428a64bf..789b04bb51d2 100644
>--- a/drivers/gpu/drm/i915/intel_color.c
>+++ b/drivers/gpu/drm/i915/intel_color.c
>@@ -659,7 +659,8 @@ intel_color_add_affected_planes(struct intel_crtc_state
>*new_crtc_state)
> 		intel_atomic_get_old_crtc_state(state, crtc);
> 	struct intel_plane *plane;
>
>-	if (new_crtc_state->gamma_enable == old_crtc_state->gamma_enable)
>+	if (new_crtc_state->gamma_enable == old_crtc_state->gamma_enable
>&&
>+	    new_crtc_state->csc_enable == old_crtc_state->csc_enable)
> 		return 0;
>
> 	for_each_intel_plane_on_crtc(&dev_priv->drm, crtc, plane) { @@ -684,6
>+685,7 @@ int intel_color_check(struct intel_crtc_state *crtc_state)
> 	const struct drm_property_blob *gamma_lut = crtc_state-
>>base.gamma_lut;
> 	const struct drm_property_blob *degamma_lut = crtc_state-
>>base.degamma_lut;
> 	size_t gamma_length, degamma_length;
>+	bool limited_color_range = false;
> 	int ret;
>
> 	degamma_length = INTEL_INFO(dev_priv)->color.degamma_lut_size;
>@@ -693,7 +695,11 @@ int intel_color_check(struct intel_crtc_state
>*crtc_state)
>
> 	if (INTEL_GEN(dev_priv) >= 9 ||
> 	    IS_BROADWELL(dev_priv) || IS_HASWELL(dev_priv))
>-		crtc_state->csc_enable = true;
>+		limited_color_range = crtc_state->limited_color_range;
>+
>+	crtc_state->csc_enable =
>+		crtc_state->output_format != INTEL_OUTPUT_FORMAT_RGB ||
>+		crtc_state->base.ctm || limited_color_range;
>
> 	ret = intel_color_add_affected_planes(crtc_state);
> 	if (ret)
>--
>2.19.2



More information about the Intel-gfx mailing list