> -----Original Message----- > From: Murthy, Arun R <arun.r.murthy@xxxxxxxxx> > Sent: Tuesday, January 28, 2025 9:21 PM > To: intel-xe@xxxxxxxxxxxxxxxxxxxxx; intel-gfx@xxxxxxxxxxxxxxxxxxxxx; dri- > devel@xxxxxxxxxxxxxxxxxxxxx > Cc: Kandpal, Suraj <suraj.kandpal@xxxxxxxxx>; dmitry.baryshkov@xxxxxxxxxx; > Murthy, Arun R <arun.r.murthy@xxxxxxxxx> > Subject: [PATCH v8 09/14] drm/i915/histogram: Hook i915 histogram with drm > histogram > > Handle histogram caps and histogram config property in i915 driver. Fill the > histogram hardware capability and act upon the histogram config property to > enable/disable histogram in i915. Need to fix comment its not just for i915 but xe as well. Otherwise LGTM, Reviewed-by: Suraj Kandpal <suraj.kandpal@xxxxxxxxx> > > Signed-off-by: Arun R Murthy <arun.r.murthy@xxxxxxxxx> > --- > drivers/gpu/drm/i915/display/intel_crtc.c | 7 +++++++ > drivers/gpu/drm/i915/display/intel_display.c | 12 ++++++++++++ > 2 files changed, 19 insertions(+) > > diff --git a/drivers/gpu/drm/i915/display/intel_crtc.c > b/drivers/gpu/drm/i915/display/intel_crtc.c > index > e69b28779ac551bde56c9c3d394e784275a9b69e..b90017409a23de2a214ca43d > 32ba537998ea0f78 100644 > --- a/drivers/gpu/drm/i915/display/intel_crtc.c > +++ b/drivers/gpu/drm/i915/display/intel_crtc.c > @@ -28,6 +28,7 @@ > #include "intel_drrs.h" > #include "intel_dsi.h" > #include "intel_fifo_underrun.h" > +#include "intel_histogram.h" > #include "intel_pipe_crc.h" > #include "intel_psr.h" > #include "intel_sprite.h" > @@ -211,6 +212,7 @@ static struct intel_crtc *intel_crtc_alloc(void) static > void intel_crtc_free(struct intel_crtc *crtc) { > intel_crtc_destroy_state(&crtc->base, crtc->base.state); > + intel_histogram_finish(crtc); > kfree(crtc); > } > > @@ -381,6 +383,11 @@ int intel_crtc_init(struct drm_i915_private *dev_priv, > enum pipe pipe) > > BIT(DRM_SCALING_FILTER_DEFAULT) | > > BIT(DRM_SCALING_FILTER_NEAREST_NEIGHBOR)); > > + intel_histogram_init(crtc); > + if (drm_crtc_create_histogram_property(&crtc->base, > + crtc->histogram->caps)) > + drm_err(&dev_priv->drm, "Failed to initialize histogram > +properties\n"); > + > intel_color_crtc_init(crtc); > intel_drrs_crtc_init(crtc); > intel_crtc_crc_init(crtc); > diff --git a/drivers/gpu/drm/i915/display/intel_display.c > b/drivers/gpu/drm/i915/display/intel_display.c > index > 7d68d652c1bc91acc68281c4761f688f3779bd79..c38a33ee90aef144931215254f > 178ba955f998b0 100644 > --- a/drivers/gpu/drm/i915/display/intel_display.c > +++ b/drivers/gpu/drm/i915/display/intel_display.c > @@ -93,6 +93,7 @@ > #include "intel_fifo_underrun.h" > #include "intel_frontbuffer.h" > #include "intel_hdmi.h" > +#include "intel_histogram.h" > #include "intel_hotplug.h" > #include "intel_link_bw.h" > #include "intel_lvds.h" > @@ -4675,6 +4676,12 @@ static int intel_crtc_atomic_check(struct > intel_atomic_state *state, > if (ret) > return ret; > > + if (crtc_state->uapi.histogram_updated) { > + ret = intel_histogram_atomic_check(crtc); > + if (ret) > + return ret; > + } > + > return 0; > } > > @@ -7933,6 +7940,11 @@ static void intel_atomic_commit_tail(struct > intel_atomic_state *state) > */ > old_crtc_state->dsb_color_vblank = > fetch_and_zero(&new_crtc_state->dsb_color_vblank); > old_crtc_state->dsb_commit = > fetch_and_zero(&new_crtc_state->dsb_commit); > + > + if (new_crtc_state->uapi.histogram_updated) > + intel_histogram_update(crtc, > + (struct drm_histogram_config *) > + new_crtc_state- > >uapi.histogram_enable->data); > } > > /* Underruns don't always raise interrupts, so check manually */ > > -- > 2.25.1