On Fri, 15 Jul 2016 14:59:02 +0100 Lionel Landwerlin <lionel.g.landwerlin@xxxxxxxxx> wrote: > From: Bob Paauwe <bob.j.paauwe@xxxxxxxxx> > > 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 <daniel@xxxxxxxx> > Cc: Maarten Lankhorst <maarten.lankhorst@xxxxxxxxxxxxxxx> > Signed-off-by: Bob Paauwe <bob.j.paauwe@xxxxxxxxx> > Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@xxxxxxxxx> > --- > 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 Bob.J.Paauwe@xxxxxxxxx IOTG / PED Software Organization Intel Corp. Folsom, CA (916) 356-6193 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx