Plane damage is irrelevant when full modeset happens so clear the damage blob property(If set by user-space). With damage blob cleared damage helper iterator will return full plane src as damage clip. Signed-off-by: Deepak Rawat <drawat@xxxxxxxxxx> --- drivers/gpu/drm/drm_atomic_helper.c | 4 ++++ include/drm/drm_damage_helper.h | 10 ++++++++++ 2 files changed, 14 insertions(+) diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c index be83e2763c18..e06d2d5d582f 100644 --- a/drivers/gpu/drm/drm_atomic_helper.c +++ b/drivers/gpu/drm/drm_atomic_helper.c @@ -31,6 +31,7 @@ #include <drm/drm_crtc_helper.h> #include <drm/drm_atomic_helper.h> #include <drm/drm_writeback.h> +#include <drm/drm_damage_helper.h> #include <linux/dma-fence.h> #include "drm_crtc_helper_internal.h" @@ -88,6 +89,9 @@ drm_atomic_helper_plane_changed(struct drm_atomic_state *state, return; crtc_state->planes_changed = true; + + if (drm_atomic_crtc_needs_modeset(crtc_state)) + drm_plane_clear_damage(plane_state); } } diff --git a/include/drm/drm_damage_helper.h b/include/drm/drm_damage_helper.h index f1282b459a4f..1f988f7fdd72 100644 --- a/include/drm/drm_damage_helper.h +++ b/include/drm/drm_damage_helper.h @@ -71,6 +71,16 @@ drm_plane_get_damage_clips(const struct drm_plane_state *state) state->fb_damage_clips->data : NULL); } +/** + * drm_plane_clear_damage - clears damage blob in a plane state + * @state: Plane state + */ +static inline void drm_plane_clear_damage(struct drm_plane_state *state) +{ + drm_property_blob_put(state->fb_damage_clips); + state->fb_damage_clips = NULL; +} + void drm_plane_enable_fb_damage_clips(struct drm_plane *plane); int drm_atomic_helper_damage_iter_init(struct drm_atomic_helper_damage_iter *iter, -- 2.17.1 _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel