v2: also check src rect (Chia-I Wu).

Signed-off-by: Gerd Hoffmann <kra...@redhat.com>
---
 drivers/gpu/drm/virtio/virtgpu_plane.c | 35 +++++++++++++++-----------
 1 file changed, 21 insertions(+), 14 deletions(-)

diff --git a/drivers/gpu/drm/virtio/virtgpu_plane.c 
b/drivers/gpu/drm/virtio/virtgpu_plane.c
index bc4bc4475a8c..59bf76d4a333 100644
--- a/drivers/gpu/drm/virtio/virtgpu_plane.c
+++ b/drivers/gpu/drm/virtio/virtgpu_plane.c
@@ -151,20 +151,27 @@ static void virtio_gpu_primary_plane_update(struct 
drm_plane *plane,
        if (bo->dumb)
                virtio_gpu_update_dumb_bo(vgdev, bo, plane->state);
 
-       DRM_DEBUG("handle 0x%x, crtc %dx%d+%d+%d, src %dx%d+%d+%d\n",
-                 bo->hw_res_handle,
-                 plane->state->crtc_w, plane->state->crtc_h,
-                 plane->state->crtc_x, plane->state->crtc_y,
-                 plane->state->src_w >> 16,
-                 plane->state->src_h >> 16,
-                 plane->state->src_x >> 16,
-                 plane->state->src_y >> 16);
-       virtio_gpu_cmd_set_scanout(vgdev, output->index,
-                                  bo->hw_res_handle,
-                                  plane->state->src_w >> 16,
-                                  plane->state->src_h >> 16,
-                                  plane->state->src_x >> 16,
-                                  plane->state->src_y >> 16);
+       if (plane->state->fb != old_state->fb ||
+           plane->state->src_w != old_state->src_w ||
+           plane->state->src_h != old_state->src_h ||
+           plane->state->src_x != old_state->src_x ||
+           plane->state->src_y != old_state->src_y) {
+               DRM_DEBUG("handle 0x%x, crtc %dx%d+%d+%d, src %dx%d+%d+%d\n",
+                         bo->hw_res_handle,
+                         plane->state->crtc_w, plane->state->crtc_h,
+                         plane->state->crtc_x, plane->state->crtc_y,
+                         plane->state->src_w >> 16,
+                         plane->state->src_h >> 16,
+                         plane->state->src_x >> 16,
+                         plane->state->src_y >> 16);
+               virtio_gpu_cmd_set_scanout(vgdev, output->index,
+                                          bo->hw_res_handle,
+                                          plane->state->src_w >> 16,
+                                          plane->state->src_h >> 16,
+                                          plane->state->src_x >> 16,
+                                          plane->state->src_y >> 16);
+       }
+
        virtio_gpu_cmd_resource_flush(vgdev, bo->hw_res_handle,
                                      plane->state->src_x >> 16,
                                      plane->state->src_y >> 16,
-- 
2.18.1

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

Reply via email to