On Thu, 16 Oct 2025, Ville Syrjala <[email protected]> wrote:
> From: Ville Syrjälä <[email protected]>
>
> Get rid of intel_frontbuffer_flip_{prepare,complete}() (and
> the accompanying flip_bits) since they are unused.
>
> I suppose these could technically provide a minor optiimization

*optimization

> over intel_frontbuffer_flip() in that the flush would get
> deferred further if new rendering were to sneak in between the
> prepare() and complete() calls. But for correctness it should
> not make any difference since another flush will anyway follow
> once the new rendering finishes.
>
> Acked-by: Jani Nikula <[email protected]>
> Signed-off-by: Ville Syrjälä <[email protected]>
> ---
>  .../gpu/drm/i915/display/intel_display_core.h |  4 +-
>  .../drm/i915/display/intel_display_debugfs.c  |  3 --
>  .../gpu/drm/i915/display/intel_frontbuffer.c  | 46 -------------------
>  .../gpu/drm/i915/display/intel_frontbuffer.h  |  4 --
>  4 files changed, 1 insertion(+), 56 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display_core.h 
> b/drivers/gpu/drm/i915/display/intel_display_core.h
> index df4da52cbdb3..fa43636b89fa 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_core.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_core.h
> @@ -144,11 +144,9 @@ struct intel_frontbuffer_tracking {
>       spinlock_t lock;
>  
>       /*
> -      * Tracking bits for delayed frontbuffer flushing du to gpu activity or
> -      * scheduled flips.
> +      * Tracking bits for delayed frontbuffer flushing due to gpu activity.
>        */
>       unsigned busy_bits;
> -     unsigned flip_bits;
>  };
>  
>  struct intel_hotplug {
> diff --git a/drivers/gpu/drm/i915/display/intel_display_debugfs.c 
> b/drivers/gpu/drm/i915/display/intel_display_debugfs.c
> index 10dddec3796f..4e8397504774 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_debugfs.c
> +++ b/drivers/gpu/drm/i915/display/intel_display_debugfs.c
> @@ -76,9 +76,6 @@ static int i915_frontbuffer_tracking(struct seq_file *m, 
> void *unused)
>       seq_printf(m, "FB tracking busy bits: 0x%08x\n",
>                  display->fb_tracking.busy_bits);
>  
> -     seq_printf(m, "FB tracking flip bits: 0x%08x\n",
> -                display->fb_tracking.flip_bits);
> -
>       spin_unlock(&display->fb_tracking.lock);
>  
>       return 0;
> diff --git a/drivers/gpu/drm/i915/display/intel_frontbuffer.c 
> b/drivers/gpu/drm/i915/display/intel_frontbuffer.c
> index 73ed28ac9573..53e93985c7d4 100644
> --- a/drivers/gpu/drm/i915/display/intel_frontbuffer.c
> +++ b/drivers/gpu/drm/i915/display/intel_frontbuffer.c
> @@ -102,51 +102,6 @@ static void frontbuffer_flush(struct intel_display 
> *display,
>       intel_fbc_flush(display, frontbuffer_bits, origin);
>  }
>  
> -/**
> - * intel_frontbuffer_flip_prepare - prepare asynchronous frontbuffer flip
> - * @display: display device
> - * @frontbuffer_bits: frontbuffer plane tracking bits
> - *
> - * This function gets called after scheduling a flip on @obj. The actual
> - * frontbuffer flushing will be delayed until completion is signalled with
> - * intel_frontbuffer_flip_complete. If an invalidate happens in between this
> - * flush will be cancelled.
> - *
> - * Can be called without any locks held.
> - */
> -void intel_frontbuffer_flip_prepare(struct intel_display *display,
> -                                 unsigned frontbuffer_bits)
> -{
> -     spin_lock(&display->fb_tracking.lock);
> -     display->fb_tracking.flip_bits |= frontbuffer_bits;
> -     /* Remove stale busy bits due to the old buffer. */
> -     display->fb_tracking.busy_bits &= ~frontbuffer_bits;
> -     spin_unlock(&display->fb_tracking.lock);
> -}
> -
> -/**
> - * intel_frontbuffer_flip_complete - complete asynchronous frontbuffer flip
> - * @display: display device
> - * @frontbuffer_bits: frontbuffer plane tracking bits
> - *
> - * This function gets called after the flip has been latched and will 
> complete
> - * on the next vblank. It will execute the flush if it hasn't been cancelled 
> yet.
> - *
> - * Can be called without any locks held.
> - */
> -void intel_frontbuffer_flip_complete(struct intel_display *display,
> -                                  unsigned frontbuffer_bits)
> -{
> -     spin_lock(&display->fb_tracking.lock);
> -     /* Mask any cancelled flips. */
> -     frontbuffer_bits &= display->fb_tracking.flip_bits;
> -     display->fb_tracking.flip_bits &= ~frontbuffer_bits;
> -     spin_unlock(&display->fb_tracking.lock);
> -
> -     if (frontbuffer_bits)
> -             frontbuffer_flush(display, frontbuffer_bits, ORIGIN_FLIP);
> -}
> -
>  /**
>   * intel_frontbuffer_flip - synchronous frontbuffer flip
>   * @display: display device
> @@ -178,7 +133,6 @@ void __intel_fb_invalidate(struct intel_frontbuffer 
> *front,
>       if (origin == ORIGIN_CS) {
>               spin_lock(&display->fb_tracking.lock);
>               display->fb_tracking.busy_bits |= frontbuffer_bits;
> -             display->fb_tracking.flip_bits &= ~frontbuffer_bits;
>               spin_unlock(&display->fb_tracking.lock);
>       }
>  
> diff --git a/drivers/gpu/drm/i915/display/intel_frontbuffer.h 
> b/drivers/gpu/drm/i915/display/intel_frontbuffer.h
> index 2fee12eaf9b6..293c2d0152d6 100644
> --- a/drivers/gpu/drm/i915/display/intel_frontbuffer.h
> +++ b/drivers/gpu/drm/i915/display/intel_frontbuffer.h
> @@ -68,10 +68,6 @@ struct intel_frontbuffer {
>       GENMASK(INTEL_FRONTBUFFER_BITS_PER_PIPE * ((pipe) + 1) - 1,     \
>               INTEL_FRONTBUFFER_BITS_PER_PIPE * (pipe))
>  
> -void intel_frontbuffer_flip_prepare(struct intel_display *display,
> -                                 unsigned frontbuffer_bits);
> -void intel_frontbuffer_flip_complete(struct intel_display *display,
> -                                  unsigned frontbuffer_bits);
>  void intel_frontbuffer_flip(struct intel_display *display,
>                           unsigned frontbuffer_bits);

-- 
Jani Nikula, Intel

Reply via email to