Thomas Zimmermann <[email protected]> writes: Hello Thomas,
> User space supplies rectangles for damage clipping in a plane property. > For full mode sets, drivers still require a full plane update. In this > case, leave the information as-is and set the ignore_damage_clips flag > instead. The damage iterator will later ignore any damage information. > > Also fixes a bug where ignore_damage_clips was not cleared across plane- > state duplications. > > Leaving the damage information as-is might be helpful to drivers that > benefit from this information even on full modesets (e.g., for cache > management). It will also help with consolidating the damage-handling > logic. > > Also add a new unit test that evaluates the ignore_damage_clips flag. It > sets two damage clips plus the flag and tests if the reported damage > covers the entire framebuffer. > > v4: > - slightly reword the commit description > > Signed-off-by: Thomas Zimmermann <[email protected]> > Fixes: 35ed38d58257 ("drm: Allow drivers to indicate the damage helpers to > ignore damage clips") > Acked-by: Zack Rusin <[email protected]> > Cc: [email protected] > Cc: <[email protected]> # v6.10+ > --- > drivers/gpu/drm/drm_atomic_state_helper.c | 1 + > drivers/gpu/drm/drm_damage_helper.c | 6 ++-- > .../gpu/drm/tests/drm_damage_helper_test.c | 28 +++++++++++++++++++ > 3 files changed, 31 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/drm_atomic_state_helper.c > b/drivers/gpu/drm/drm_atomic_state_helper.c > index cc70508d4fdb..84d5231ccac1 100644 > --- a/drivers/gpu/drm/drm_atomic_state_helper.c > +++ b/drivers/gpu/drm/drm_atomic_state_helper.c > @@ -359,6 +359,7 @@ void __drm_atomic_helper_plane_duplicate_state(struct > drm_plane *plane, > state->fence = NULL; > state->commit = NULL; > state->fb_damage_clips = NULL; > + state->ignore_damage_clips = false; > state->color_mgmt_changed = false; > } I would split this as a separate patch since is the bug you are fixing for commit 35ed38d58257 ("drm: Allow drivers to indicate the damage helpers to ignore damage clips"). > EXPORT_SYMBOL(__drm_atomic_helper_plane_duplicate_state); > diff --git a/drivers/gpu/drm/drm_damage_helper.c > b/drivers/gpu/drm/drm_damage_helper.c > index 74a7f4252ecf..945fac8dc27b 100644 > --- a/drivers/gpu/drm/drm_damage_helper.c > +++ b/drivers/gpu/drm/drm_damage_helper.c > @@ -78,10 +78,8 @@ void drm_atomic_helper_check_plane_damage(struct > drm_atomic_commit *state, > if (WARN_ON(!crtc_state)) > return; > > - if (drm_atomic_crtc_needs_modeset(crtc_state)) { > - drm_property_blob_put(plane_state->fb_damage_clips); > - plane_state->fb_damage_clips = NULL; > - } > + if (drm_atomic_crtc_needs_modeset(crtc_state)) > + plane_state->ignore_damage_clips = true; > } > } This makes sense to me as well and I agree that re-using the flag for this is better than making plane_state->fb_damage_clips == NULL the condition. As mentioned though, I would make it a separate patch. Both changes look good to me: Reviewed-by: Javier Martinez Canillas <[email protected]> -- Best regards, Javier Martinez Canillas Core Platforms Red Hat
