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);
I'm not 100% sure this is the best place to put this. I'm also wondering whether we should clear damage when moving planes between crtc on top of this. But I guess vmwgfx doesn't allow that, we can figure this out when the first driver with moveable planes adds damage support.
Yes I agree this is not the best place but it was the one with minimal code change. IMO should have a separate function for clearing damage.
} }
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
A bit more kerneldoc would be good. Maybe explain how that impacts the damage iterator - you get full damage after calling this, which is a bit confusing for a function called clear_damage. So definitely worth explaining.
With the kerneldoc beefed up:
Agreed.
Reviewed-by: Daniel Vetter daniel.vetter@ffwll.ch
- */
+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