Copy the damage region to scanout drm_plane_state which will be sent to
kernel during atomic state update.

Signed-off-by: Deepak Rawat <dra...@vmware.com>
---
 libweston/compositor-drm.c | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/libweston/compositor-drm.c b/libweston/compositor-drm.c
index 30f6fce9..e2ee35eb 100644
--- a/libweston/compositor-drm.c
+++ b/libweston/compositor-drm.c
@@ -2111,6 +2111,21 @@ drm_output_render(struct drm_output_state *state, 
pixman_region32_t *damage)
        scanout_state->dest_w = scanout_state->src_w >> 16;
        scanout_state->dest_h = scanout_state->src_h >> 16;
 
+       pixman_region32_copy(&scanout_state->damage, damage);
+       if (output->base.zoom.active) {
+               weston_matrix_transform_region(&scanout_state->damage,
+                                              &output->base.matrix,
+                                              &scanout_state->damage);
+       } else {
+               pixman_region32_translate(&scanout_state->damage,
+                                         -output->base.x, -output->base.y);
+               weston_transformed_region(output->base.width,
+                                         output->base.height,
+                                         output->base.transform,
+                                         output->base.current_scale,
+                                         &scanout_state->damage,
+                                         &scanout_state->damage);
+       }
 
        pixman_region32_subtract(&c->primary_plane.damage,
                                 &c->primary_plane.damage, damage);
-- 
2.17.1

_______________________________________________
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to