[Intel-gfx] [PATCH 16/22] drm/i915: Commit color correction to CRTC

Emil Velikov emil.l.velikov at gmail.com
Fri Oct 9 16:24:16 PDT 2015


Hi Shashank,

On 9 October 2015 at 20:29, Shashank Sharma <shashank.sharma at intel.com> wrote:
> The color correction blob values are loaded during set_property
> calls. This patch adds a function to find the blob and apply the
> correction values to the display registers, during the atomic
> commit call.
>
> Signed-off-by: Shashank Sharma <shashank.sharma at intel.com>
> Signed-off-by: Kausal Malladi <kausalmalladi at gmail.com>
> ---
>  drivers/gpu/drm/i915/intel_color_manager.c | 44 ++++++++++++++++++++++++++++++
>  drivers/gpu/drm/i915/intel_display.c       |  2 ++
>  drivers/gpu/drm/i915/intel_drv.h           |  3 ++
>  3 files changed, 49 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/intel_color_manager.c b/drivers/gpu/drm/i915/intel_color_manager.c
> index 433e50a..d5315b2 100644
> --- a/drivers/gpu/drm/i915/intel_color_manager.c
> +++ b/drivers/gpu/drm/i915/intel_color_manager.c
> @@ -307,6 +307,50 @@ static int chv_set_gamma(struct drm_device *dev, struct drm_property_blob *blob,
>         return ret;
>  }
>
> +void intel_color_manager_crtc_commit(struct drm_device *dev,
> +               struct drm_crtc_state *crtc_state)
> +{
> +       struct drm_property_blob *blob;
> +       struct drm_crtc *crtc = crtc_state->crtc;
> +       int ret = -EINVAL;
Most places/people advise against pre-emptively initializing ret.

> +
> +       blob = crtc_state->palette_after_ctm_blob;
> +       if (blob) {
> +               /* Gamma correction is platform specific */
> +               if (IS_CHERRYVIEW(dev))
> +                       ret = chv_set_gamma(dev, blob, crtc);
> +
> +               if (ret)
> +                       DRM_ERROR("set Gamma correction failed\n");
Do we really want to spam dmesg on for each non Cherryview device ?

> +               else
> +                       DRM_DEBUG_DRIVER("Gamma correction success\n");
> +       }
> +
> +       blob = crtc_state->palette_before_ctm_blob;
> +       if (blob) {
> +               /* Degamma correction */
> +               if (IS_CHERRYVIEW(dev))
> +                       ret = chv_set_degamma(dev, blob, crtc);
> +
> +               if (ret)
> +                       DRM_ERROR("set degamma correction failed\n");
> +               else
> +                       DRM_DEBUG_DRIVER("degamma correction success\n");
> +       }
> +
> +       blob = crtc_state->ctm_blob;
> +       if (blob) {
> +               /* CSC correction */
> +               if (IS_CHERRYVIEW(dev))
> +                       ret = chv_set_csc(dev, blob, crtc);
> +
> +               if (ret)
> +                       DRM_ERROR("set CSC correction failed\n");
> +               else
> +                       DRM_DEBUG_DRIVER("CSC correction success\n");
> +       }
> +}
> +
>  void intel_attach_color_properties_to_crtc(struct drm_device *dev,
>                 struct drm_crtc *crtc)
>  {
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index 98cc97a..8235341 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -13528,6 +13528,8 @@ static void intel_begin_crtc_commit(struct drm_crtc *crtc,
>                 intel_update_pipe_config(intel_crtc, old_intel_state);
>         else if (INTEL_INFO(dev)->gen >= 9)
>                 skl_detach_scalers(intel_crtc);
> +
> +       intel_color_manager_crtc_commit(dev, crtc->state);
>  }
>
>  static void intel_finish_crtc_commit(struct drm_crtc *crtc,
> diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
> index ed66a4f..d100e81 100644
> --- a/drivers/gpu/drm/i915/intel_drv.h
> +++ b/drivers/gpu/drm/i915/intel_drv.h
> @@ -1469,4 +1469,7 @@ void intel_plane_destroy_state(struct drm_plane *plane,
>                                struct drm_plane_state *state);
>  extern const struct drm_plane_helper_funcs intel_plane_helper_funcs;
>
> +/* intel_color_mnager.c */
Typo -> manager.

Regards,
Emil


More information about the Intel-gfx mailing list