mbox series

[v2,00/13] drm/i915: Use DSB for plane/color management commits

Message ID 20240930170415.23841-1-ville.syrjala@linux.intel.com (mailing list archive)
Headers show
Series drm/i915: Use DSB for plane/color management commits | expand

Message

Ville Syrjälä Sept. 30, 2024, 5:04 p.m. UTC
From: Ville Syrjälä <ville.syrjala@linux.intel.com>

Use the DSB to perform simple plane/color management commits.
Anything more complicatd (modesets and fastsets) are still
punted to the mmio path.

Also DSB won't be used when any of these are in use:
- scalers (scaler code needs more work)
- VRR (need to figure out a race free commit completion scheme)
- PSR (zero thoughts given for PSR interactions so far)
- async flips (no real though given here either)

v2: rebase

Ville Syrjälä (13):
  drm/i915/dsb: Avoid reads of the DSB buffer for indexed register
    writes
  drm/i915: Prepare clear color before wait_for_dependencies()
  drm/i915/dsb: Generate the DSB buffer in commit_tail()
  drm/i915/dsb: Enable programmable DSB interrupt
  drm/i915/dsb: Introduce intel_dsb_vblank_evade()
  drm/i915/dsb: Introduce intel_dsb_wait_usec()
  drm/i915/dsb: Introduce intel_dsb_wait_vblanks()
  drm/i915: Introduce intel_scanlines_to_usecs()
  drm/i915/dsb: Introduce intel_dsb_wait_vblank_delay()
  drm/i915: Extract intel_crtc_prepare_vblank_event()
  drm/i915: Plumb 'dsb' all way to the plane hooks
  drm/i915: Plumb 'dsb' all way to the color commit hooks
  drm/i915/dsb: Use DSB for plane/color management updates

 drivers/gpu/drm/i915/display/i9xx_plane.c     |  22 +-
 drivers/gpu/drm/i915/display/intel_atomic.c   |   5 +-
 .../gpu/drm/i915/display/intel_atomic_plane.c |  49 +--
 .../gpu/drm/i915/display/intel_atomic_plane.h |  19 +-
 drivers/gpu/drm/i915/display/intel_color.c    | 207 ++++++------
 drivers/gpu/drm/i915/display/intel_color.h    |   7 +-
 drivers/gpu/drm/i915/display/intel_crtc.c     |  37 ++-
 drivers/gpu/drm/i915/display/intel_crtc.h     |   5 +
 drivers/gpu/drm/i915/display/intel_cursor.c   | 101 +++---
 drivers/gpu/drm/i915/display/intel_de.h       |  11 +
 drivers/gpu/drm/i915/display/intel_display.c  | 180 ++++++++---
 .../drm/i915/display/intel_display_types.h    |  23 +-
 drivers/gpu/drm/i915/display/intel_dsb.c      | 137 ++++++--
 drivers/gpu/drm/i915/display/intel_dsb.h      |   7 +
 .../drm/i915/display/intel_modeset_setup.c    |   4 +-
 drivers/gpu/drm/i915/display/intel_sprite.c   |  27 +-
 .../drm/i915/display/skl_universal_plane.c    | 305 ++++++++++--------
 drivers/gpu/drm/xe/display/xe_plane_initial.c |   2 +-
 18 files changed, 735 insertions(+), 413 deletions(-)

Comments

Ville Syrjälä Oct. 3, 2024, 9:52 p.m. UTC | #1
On Mon, Sep 30, 2024 at 08:04:02PM +0300, Ville Syrjala wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> 
> Use the DSB to perform simple plane/color management commits.
> Anything more complicatd (modesets and fastsets) are still
> punted to the mmio path.
> 
> Also DSB won't be used when any of these are in use:
> - scalers (scaler code needs more work)
> - VRR (need to figure out a race free commit completion scheme)
> - PSR (zero thoughts given for PSR interactions so far)
> - async flips (no real though given here either)
> 
> v2: rebase
> 
> Ville Syrjälä (13):
>   drm/i915/dsb: Avoid reads of the DSB buffer for indexed register
>     writes
>   drm/i915: Prepare clear color before wait_for_dependencies()
>   drm/i915/dsb: Generate the DSB buffer in commit_tail()
>   drm/i915/dsb: Enable programmable DSB interrupt
>   drm/i915/dsb: Introduce intel_dsb_vblank_evade()
>   drm/i915/dsb: Introduce intel_dsb_wait_usec()
>   drm/i915/dsb: Introduce intel_dsb_wait_vblanks()
>   drm/i915: Introduce intel_scanlines_to_usecs()
>   drm/i915/dsb: Introduce intel_dsb_wait_vblank_delay()
>   drm/i915: Extract intel_crtc_prepare_vblank_event()
>   drm/i915: Plumb 'dsb' all way to the plane hooks
>   drm/i915: Plumb 'dsb' all way to the color commit hooks
>   drm/i915/dsb: Use DSB for plane/color management updates

Pushed to drm-intel-next. Thanks for the reviews.

If the world catches fire you know who to blame.

> 
>  drivers/gpu/drm/i915/display/i9xx_plane.c     |  22 +-
>  drivers/gpu/drm/i915/display/intel_atomic.c   |   5 +-
>  .../gpu/drm/i915/display/intel_atomic_plane.c |  49 +--
>  .../gpu/drm/i915/display/intel_atomic_plane.h |  19 +-
>  drivers/gpu/drm/i915/display/intel_color.c    | 207 ++++++------
>  drivers/gpu/drm/i915/display/intel_color.h    |   7 +-
>  drivers/gpu/drm/i915/display/intel_crtc.c     |  37 ++-
>  drivers/gpu/drm/i915/display/intel_crtc.h     |   5 +
>  drivers/gpu/drm/i915/display/intel_cursor.c   | 101 +++---
>  drivers/gpu/drm/i915/display/intel_de.h       |  11 +
>  drivers/gpu/drm/i915/display/intel_display.c  | 180 ++++++++---
>  .../drm/i915/display/intel_display_types.h    |  23 +-
>  drivers/gpu/drm/i915/display/intel_dsb.c      | 137 ++++++--
>  drivers/gpu/drm/i915/display/intel_dsb.h      |   7 +
>  .../drm/i915/display/intel_modeset_setup.c    |   4 +-
>  drivers/gpu/drm/i915/display/intel_sprite.c   |  27 +-
>  .../drm/i915/display/skl_universal_plane.c    | 305 ++++++++++--------
>  drivers/gpu/drm/xe/display/xe_plane_initial.c |   2 +-
>  18 files changed, 735 insertions(+), 413 deletions(-)
> 
> -- 
> 2.45.2