[PATCH 03/14] drm: clear plane damage during full modeset

Deepak Rawat drawat at vmware.com
Wed Sep 5 23:38:50 UTC 2018


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 at vmware.com>
---
 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



More information about the dri-devel mailing list