> -----Original Message----- > From: Intel-gfx <intel-gfx-bounces@xxxxxxxxxxxxxxxxxxxxx> On Behalf Of Ville Syrjala > Sent: Thursday, September 29, 2022 12:45 PM > To: intel-gfx@xxxxxxxxxxxxxxxxxxxxx > Subject: [PATCH 08/10] drm/i915: Assert {pre, post}_csc_lut were > assigned sensibly > > From: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > > Since we now have the extra step from hw.(de)gamma_lut into {pre,post}_csc_lut > let's make sure we didn't forget to assign them appropriately. Ie. basically making > sure intel_color_check() was called when necessary (and that it did its job suitable > well). Looks Good to me. Reviewed-by: Uma Shankar <uma.shankar@xxxxxxxxx> > Signed-off-by: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > --- > drivers/gpu/drm/i915/display/intel_color.c | 20 ++++++++++++++++++++ > drivers/gpu/drm/i915/display/intel_color.h | 1 + > drivers/gpu/drm/i915/display/intel_display.c | 2 ++ > 3 files changed, 23 insertions(+) > > diff --git a/drivers/gpu/drm/i915/display/intel_color.c > b/drivers/gpu/drm/i915/display/intel_color.c > index 380f44720fe6..575d2a23682a 100644 > --- a/drivers/gpu/drm/i915/display/intel_color.c > +++ b/drivers/gpu/drm/i915/display/intel_color.c > @@ -1355,6 +1355,26 @@ static u32 i9xx_gamma_mode(struct intel_crtc_state > *crtc_state) > return GAMMA_MODE_MODE_10BIT; /* i965+ only */ } > > +void intel_color_assert_luts(const struct intel_crtc_state *crtc_state) > +{ > + struct drm_i915_private *i915 = to_i915(crtc_state->uapi.crtc->dev); > + > + /* make sure {pre,post}_csc_lut were correctly assigned */ > + if (DISPLAY_VER(i915) >= 10 || HAS_GMCH(i915)) { > + drm_WARN_ON(&i915->drm, > + crtc_state->pre_csc_lut != crtc_state->hw.degamma_lut); > + drm_WARN_ON(&i915->drm, > + crtc_state->post_csc_lut != crtc_state->hw.gamma_lut); > + } else { > + drm_WARN_ON(&i915->drm, > + crtc_state->pre_csc_lut != crtc_state->hw.degamma_lut > && > + crtc_state->pre_csc_lut != crtc_state->hw.gamma_lut); > + drm_WARN_ON(&i915->drm, > + crtc_state->post_csc_lut != crtc_state->hw.degamma_lut > && > + crtc_state->post_csc_lut != crtc_state->hw.gamma_lut); > + } > +} > + > static void intel_assign_luts(struct intel_crtc_state *crtc_state) { > drm_property_replace_blob(&crtc_state->pre_csc_lut, > diff --git a/drivers/gpu/drm/i915/display/intel_color.h > b/drivers/gpu/drm/i915/display/intel_color.h > index 67702451e2fd..b76f18e6c452 100644 > --- a/drivers/gpu/drm/i915/display/intel_color.h > +++ b/drivers/gpu/drm/i915/display/intel_color.h > @@ -24,5 +24,6 @@ int intel_color_get_gamma_bit_precision(const struct > intel_crtc_state *crtc_stat bool intel_color_lut_equal(struct drm_property_blob > *blob1, > struct drm_property_blob *blob2, > u32 gamma_mode, u32 bit_precision); > +void intel_color_assert_luts(const struct intel_crtc_state > +*crtc_state); > > #endif /* __INTEL_COLOR_H__ */ > diff --git a/drivers/gpu/drm/i915/display/intel_display.c > b/drivers/gpu/drm/i915/display/intel_display.c > index 20569b6838d1..441811ac0ab0 100644 > --- a/drivers/gpu/drm/i915/display/intel_display.c > +++ b/drivers/gpu/drm/i915/display/intel_display.c > @@ -6906,6 +6906,8 @@ static int intel_atomic_check(struct drm_device *dev, > > for_each_oldnew_intel_crtc_in_state(state, crtc, old_crtc_state, > new_crtc_state, i) { > + intel_color_assert_luts(new_crtc_state); > + > ret = intel_async_flip_check_hw(state, crtc); > if (ret) > goto fail; > -- > 2.35.1