On Fri, Dec 13, 2019 at 03:34:52PM +0200, Ville Syrjala wrote: > From: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > > Add tracepoints which let us know when fbc activates/deactivates/nukes. > > Signed-off-by: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> Reviewed-by: Imre Deak <imre.deak@xxxxxxxxx> > --- > drivers/gpu/drm/i915/display/intel_fbc.c | 9 ++++ > drivers/gpu/drm/i915/i915_trace.h | 62 ++++++++++++++++++++++++ > 2 files changed, 71 insertions(+) > > diff --git a/drivers/gpu/drm/i915/display/intel_fbc.c b/drivers/gpu/drm/i915/display/intel_fbc.c > index 28adf4636800..88a9c2fea695 100644 > --- a/drivers/gpu/drm/i915/display/intel_fbc.c > +++ b/drivers/gpu/drm/i915/display/intel_fbc.c > @@ -41,6 +41,7 @@ > #include <drm/drm_fourcc.h> > > #include "i915_drv.h" > +#include "i915_trace.h" > #include "intel_display_types.h" > #include "intel_fbc.h" > #include "intel_frontbuffer.h" > @@ -200,6 +201,10 @@ static bool g4x_fbc_is_active(struct drm_i915_private *dev_priv) > /* This function forces a CFB recompression through the nuke operation. */ > static void intel_fbc_recompress(struct drm_i915_private *dev_priv) > { > + struct intel_fbc *fbc = &dev_priv->fbc; > + > + trace_intel_fbc_nuke(fbc->crtc); > + > I915_WRITE(MSG_FBC_REND_STATE, FBC_REND_NUKE); > POSTING_READ(MSG_FBC_REND_STATE); > } > @@ -356,6 +361,8 @@ static void intel_fbc_hw_activate(struct drm_i915_private *dev_priv) > { > struct intel_fbc *fbc = &dev_priv->fbc; > > + trace_intel_fbc_activate(fbc->crtc); > + > fbc->active = true; > fbc->activated = true; > > @@ -373,6 +380,8 @@ static void intel_fbc_hw_deactivate(struct drm_i915_private *dev_priv) > { > struct intel_fbc *fbc = &dev_priv->fbc; > > + trace_intel_fbc_deactivate(fbc->crtc); > + > fbc->active = false; > > if (INTEL_GEN(dev_priv) >= 5) > diff --git a/drivers/gpu/drm/i915/i915_trace.h b/drivers/gpu/drm/i915/i915_trace.h > index 7ef7a1e1664c..66ff96303b95 100644 > --- a/drivers/gpu/drm/i915/i915_trace.h > +++ b/drivers/gpu/drm/i915/i915_trace.h > @@ -339,6 +339,68 @@ TRACE_EVENT(intel_disable_plane, > __entry->frame, __entry->scanline) > ); > > +/* fbc */ > + > +TRACE_EVENT(intel_fbc_activate, > + TP_PROTO(struct intel_crtc *crtc), > + TP_ARGS(crtc), > + > + TP_STRUCT__entry( > + __field(enum pipe, pipe) > + __field(u32, frame) > + __field(u32, scanline) > + ), > + > + TP_fast_assign( > + __entry->pipe = crtc->pipe; > + __entry->frame = intel_crtc_get_vblank_counter(crtc); > + __entry->scanline = intel_get_crtc_scanline(crtc); > + ), > + > + TP_printk("pipe %c, frame=%u, scanline=%u", > + pipe_name(__entry->pipe), __entry->frame, __entry->scanline) > +); > + > +TRACE_EVENT(intel_fbc_deactivate, > + TP_PROTO(struct intel_crtc *crtc), > + TP_ARGS(crtc), > + > + TP_STRUCT__entry( > + __field(enum pipe, pipe) > + __field(u32, frame) > + __field(u32, scanline) > + ), > + > + TP_fast_assign( > + __entry->pipe = crtc->pipe; > + __entry->frame = intel_crtc_get_vblank_counter(crtc); > + __entry->scanline = intel_get_crtc_scanline(crtc); > + ), > + > + TP_printk("pipe %c, frame=%u, scanline=%u", > + pipe_name(__entry->pipe), __entry->frame, __entry->scanline) > +); > + > +TRACE_EVENT(intel_fbc_nuke, > + TP_PROTO(struct intel_crtc *crtc), > + TP_ARGS(crtc), > + > + TP_STRUCT__entry( > + __field(enum pipe, pipe) > + __field(u32, frame) > + __field(u32, scanline) > + ), > + > + TP_fast_assign( > + __entry->pipe = crtc->pipe; > + __entry->frame = intel_crtc_get_vblank_counter(crtc); > + __entry->scanline = intel_get_crtc_scanline(crtc); > + ), > + > + TP_printk("pipe %c, frame=%u, scanline=%u", > + pipe_name(__entry->pipe), __entry->frame, __entry->scanline) > +); > + > /* pipe updates */ > > TRACE_EVENT(i915_pipe_update_start, > -- > 2.23.0 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/intel-gfx _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx