On Fri, 15 Jul 2016 14:59:02 +0100
Lionel Landwerlin <[email protected]> wrote:

> From: Bob Paauwe <[email protected]>
> 
> The i915 driver is now using atomic properties and atomic commit
> to handle the legacy set gamma IOCTL. However, if the driver is
> configured without atomic (nuclear_pageflip = false), it won't
> update the legacy properties for degamma_lut, gamma_lut and ctm
> leaving them out of sync with the atomic version of the properties.
> 
> Until the driver is full atomic, make sure we update the non-atomic
> version of the properties.
> 
> v2: Update the comment with a FIXME.  (Daniel)
> 
> v3: Update arguments of the gamma_set vfunc (Lionel)
> 
> v4: Fixed vfunc prototype (Lionel)

Lionel,

The changes looks correct to me, thanks!  Is it appropriate for me to
add a reviewed-by for those changes?  

Bob

> 
> igt-testcase: kms_pipe_color / legacy-gamma-reset-pipeX
> Cc: Daniel Vetter <[email protected]>
> Cc: Maarten Lankhorst <[email protected]>
> Signed-off-by: Bob Paauwe <[email protected]>
> Signed-off-by: Lionel Landwerlin <[email protected]>
> ---
>  drivers/gpu/drm/i915/intel_display.c | 44 
> +++++++++++++++++++++++++++++++++++-
>  1 file changed, 43 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_display.c 
> b/drivers/gpu/drm/i915/intel_display.c
> index 9337d3a..fb7d8fc5 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -13924,8 +13924,50 @@ out:
>  
>  #undef for_each_intel_crtc_masked
>  
> +/*
> + * FIXME: Remove this once i915 is fully DRIVER_ATOMIC by calling
> + *        drm_atomic_helper_legacy_gamma_set() directly.
> + */
> +static int intel_atomic_legacy_gamma_set(struct drm_crtc *crtc,
> +                                      u16 *red, u16 *green, u16 *blue,
> +                                      uint32_t size)
> +{
> +     struct drm_device *dev = crtc->dev;
> +     struct drm_mode_config *config = &dev->mode_config;
> +     struct drm_crtc_state *state;
> +     int ret;
> +
> +     ret = drm_atomic_helper_legacy_gamma_set(crtc, red, green, blue, size);
> +     if (ret)
> +             return ret;
> +
> +     /*
> +      * Make sure we update the legacy properties so this works when
> +      * atomic is not enabled.
> +      */
> +
> +     state = crtc->state;
> +
> +     drm_object_property_set_value(&crtc->base,
> +                                   config->degamma_lut_property,
> +                                   (state->degamma_lut) ?
> +                                   state->degamma_lut->base.id : 0);
> +
> +     drm_object_property_set_value(&crtc->base,
> +                                   config->ctm_property,
> +                                   (state->ctm) ?
> +                                   state->ctm->base.id : 0);
> +
> +     drm_object_property_set_value(&crtc->base,
> +                                   config->gamma_lut_property,
> +                                   (state->gamma_lut) ?
> +                                   state->gamma_lut->base.id : 0);
> +
> +     return 0;
> +}
> +
>  static const struct drm_crtc_funcs intel_crtc_funcs = {
> -     .gamma_set = drm_atomic_helper_legacy_gamma_set,
> +     .gamma_set = intel_atomic_legacy_gamma_set,
>       .set_config = drm_atomic_helper_set_config,
>       .set_property = drm_atomic_helper_crtc_set_property,
>       .destroy = intel_crtc_destroy,



-- 
--
Bob Paauwe                  
[email protected]
IOTG / PED Software Organization
Intel Corp.  Folsom, CA
(916) 356-6193    

_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to