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