mbox series

[v6,0/7] drm/i915/xe3: FBC Dirty rect feature support

Message ID 20250130210027.591927-1-vinod.govindapillai@intel.com (mailing list archive)
Headers show
Series drm/i915/xe3: FBC Dirty rect feature support | expand

Message

Govindapillai, Vinod Jan. 30, 2025, 9 p.m. UTC
Dirty rect support for FBC in xe3 onwards based on the comments after the
initial RFC series.

v2: Dirty rect related compute and storage moved to fbc state (Ville)

V3: Dont call fbc activate if FBC is already active

v4: Dirty rect compute and programming moved within DSB scope
    New changes are added as separate patches to make it easy for review
    But could be squashed if the reviews as ok.

v5: add HAS_FBC_DIRTY_RECT()
    FBC Damage area updates in 3 steps. 
    1. As part of plane_atomic_check() get, adjust coordinates and store
       the merged damage area in plane_state
    2. Atomic_commit, update merged damage are to fbc_state and prepare the
       damage area satifying all conditions
    3  update the FBC dirty rect registers as part of DSB commit.

v6: Use dmage_merged helper earlier to handle bigjoiner cases (Ville)
    Place the damage_merged handling code under HAS_FBC_DIRTY_RECT()
    Added a variable to check if the damage_merged received from
    the helper is valid. And if it is not valid, the FBC dirty rect
    is updated with full plane reqion.

Vinod Govindapillai (7):
  drm/i915/xe3: add register definitions for fbc dirty rect support
  drm/i915/xe3: introduce HAS_FBC_DIRTY_RECT() for FBC dirty rect
    support
  drm/damage-helper: add const qualifier in
    drm_atomic_helper_damage_merged()
  drm/i915/xe3: update and store the plane damage clips
  drm/i915/xe3: dirty rect support for FBC
  drm/i915/xe3: avoid calling fbc activate if fbc is active
  drm/i915/xe3: disable FBC if PSR2 selective fetch is enabled

 drivers/gpu/drm/drm_damage_helper.c           |   2 +-
 .../gpu/drm/i915/display/intel_atomic_plane.c |  28 ++++
 drivers/gpu/drm/i915/display/intel_display.c  |   7 +
 .../drm/i915/display/intel_display_device.h   |   1 +
 .../drm/i915/display/intel_display_types.h    |   2 +
 drivers/gpu/drm/i915/display/intel_fbc.c      | 152 +++++++++++++++++-
 drivers/gpu/drm/i915/display/intel_fbc.h      |   6 +
 drivers/gpu/drm/i915/display/intel_fbc_regs.h |   9 ++
 .../drm/i915/display/skl_universal_plane.c    |  45 +++++-
 include/drm/drm_damage_helper.h               |   2 +-
 10 files changed, 246 insertions(+), 8 deletions(-)

Comments

Jani Nikula Feb. 4, 2025, 9:09 a.m. UTC | #1
On Thu, 30 Jan 2025, Vinod Govindapillai <vinod.govindapillai@intel.com> wrote:
> Dirty rect support for FBC in xe3 onwards based on the comments after the
> initial RFC series.

I think "drm/i915/fbc" subject prefix is more appropriate than
"drm/i915/xe3".

(Please don't resend just for that.)

>
> v2: Dirty rect related compute and storage moved to fbc state (Ville)
>
> V3: Dont call fbc activate if FBC is already active
>
> v4: Dirty rect compute and programming moved within DSB scope
>     New changes are added as separate patches to make it easy for review
>     But could be squashed if the reviews as ok.
>
> v5: add HAS_FBC_DIRTY_RECT()
>     FBC Damage area updates in 3 steps. 
>     1. As part of plane_atomic_check() get, adjust coordinates and store
>        the merged damage area in plane_state
>     2. Atomic_commit, update merged damage are to fbc_state and prepare the
>        damage area satifying all conditions
>     3  update the FBC dirty rect registers as part of DSB commit.
>
> v6: Use dmage_merged helper earlier to handle bigjoiner cases (Ville)
>     Place the damage_merged handling code under HAS_FBC_DIRTY_RECT()
>     Added a variable to check if the damage_merged received from
>     the helper is valid. And if it is not valid, the FBC dirty rect
>     is updated with full plane reqion.
>
> Vinod Govindapillai (7):
>   drm/i915/xe3: add register definitions for fbc dirty rect support
>   drm/i915/xe3: introduce HAS_FBC_DIRTY_RECT() for FBC dirty rect
>     support
>   drm/damage-helper: add const qualifier in
>     drm_atomic_helper_damage_merged()
>   drm/i915/xe3: update and store the plane damage clips
>   drm/i915/xe3: dirty rect support for FBC
>   drm/i915/xe3: avoid calling fbc activate if fbc is active
>   drm/i915/xe3: disable FBC if PSR2 selective fetch is enabled
>
>  drivers/gpu/drm/drm_damage_helper.c           |   2 +-
>  .../gpu/drm/i915/display/intel_atomic_plane.c |  28 ++++
>  drivers/gpu/drm/i915/display/intel_display.c  |   7 +
>  .../drm/i915/display/intel_display_device.h   |   1 +
>  .../drm/i915/display/intel_display_types.h    |   2 +
>  drivers/gpu/drm/i915/display/intel_fbc.c      | 152 +++++++++++++++++-
>  drivers/gpu/drm/i915/display/intel_fbc.h      |   6 +
>  drivers/gpu/drm/i915/display/intel_fbc_regs.h |   9 ++
>  .../drm/i915/display/skl_universal_plane.c    |  45 +++++-
>  include/drm/drm_damage_helper.h               |   2 +-
>  10 files changed, 246 insertions(+), 8 deletions(-)