gentle ping to review this change Am 21.07.26 um 11:54 schrieb Thomas Zimmermann:
Call drm_atomic_helper_check_plane_damage() in plane_atomic_check() before copying the damage information to guarantees that ignore_damage_clips from struct drm_plane_state has the correct value. Although i915 does not directly modify or use the flag, DRM's damage iterator will soon rely on it.As a side effect, if the CRTC has been marked for a full modeset before the call to drm_atomic_helper_check_plane_damage() happens, the plane now ignores all damage clips and does a full update. Git commit 35ed38d58257 ("drm: Allow drivers to indicate the damage helpers to ignore damage clips") introduced ignore_damage_clips to selectively ignore damage clipping for certain framebuffer changes. The mode-setting pipeline can disabled damage clippings for an atomic commit by setting ignore_damage_clips in struct drm_plane_state. The atomic commit will then do a full display update. Future directions: there's currently a multitude of options that affect damage clipping; with different places seeing different state. In order to unify this, drm_atomic_helper_check_plane_state() will soon evaluate all options in a single place and set ignore_damage_clips accordingly. All later stages of the mode-setting pipeline will only look at this field. v3: - fix the call to drm_atomic_helper_check_plane_state() - use primary-CRTC's plane state (Sashiko) - note full-plane updates in commit description v2: - move _check_plane_damage() before reading damage first time (Sashiko) - expand commit description Signed-off-by: Thomas Zimmermann <[email protected]> Reviewed-by: Javier Martinez Canillas <[email protected]> --- Taken with updates from the series at https://lore.kernel.org/dri-devel/[email protected]/ --- drivers/gpu/drm/i915/display/intel_plane.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/i915/display/intel_plane.c b/drivers/gpu/drm/i915/display/intel_plane.c index a440f92ff00c..d64f151ce410 100644 --- a/drivers/gpu/drm/i915/display/intel_plane.c +++ b/drivers/gpu/drm/i915/display/intel_plane.c @@ -850,7 +850,7 @@ static int plane_atomic_check(struct intel_atomic_state *state, intel_atomic_get_new_plane_state(state, plane); const struct intel_plane_state *old_plane_state = intel_atomic_get_old_plane_state(state, plane); - const struct intel_plane_state *new_primary_crtc_plane_state; + struct intel_plane_state *new_primary_crtc_plane_state; const struct intel_plane_state *old_primary_crtc_plane_state; struct intel_crtc *crtc = intel_crtc_for_pipe(display, plane->pipe); const struct intel_crtc_state *old_crtc_state = @@ -873,6 +873,14 @@ static int plane_atomic_check(struct intel_atomic_state *state, old_primary_crtc_plane_state = old_plane_state; }+ /*+ * Prepare plane-damage state before using it; do this on all + * display versions to keep the underlying DRM plane state in + * good shape. + */ + drm_atomic_helper_check_plane_damage(&state->base, + &new_primary_crtc_plane_state->uapi); + intel_plane_copy_uapi_plane_damage(new_plane_state, old_primary_crtc_plane_state, new_primary_crtc_plane_state); base-commit: fcaba3bc017906059b910ece3f83185e93010581 prerequisite-patch-id: c67e5d886a47b7d0266d81100837557fda34cb24 prerequisite-patch-id: a5a973e527c88a5b47053d7a72aefe0b550197cb prerequisite-patch-id: b9adc9622920a3e70168e672c2c92795b3e3a106 prerequisite-patch-id: 5030de433a01c2e99056cadb676a8e2ba35f055a
-- -- Thomas Zimmermann Graphics Driver Developer SUSE Software Solutions Germany GmbH Frankenstr. 146, 90461 Nürnberg, Germany, www.suse.com GF: Jochen Jaser, Andrew McDonald, (HRB 36809, AG Nürnberg)
