With new interface to do plane update on SOU available, use that instead
of old kms_dirty. Updated the comments to sync with code.

Signed-off-by: Deepak Rawat <dra...@vmware.com>
---
 drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c | 38 +++++++---------------------
 1 file changed, 9 insertions(+), 29 deletions(-)

diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c 
b/drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c
index a68a2c8dab47..290d550d1b77 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c
@@ -830,52 +830,32 @@ vmw_sou_primary_plane_atomic_update(struct drm_plane 
*plane,
        struct vmw_fence_obj *fence = NULL;
        int ret;
 
+        /* If somehow gets a device error maintain consistent atomic state */
        if (crtc && plane->state->fb) {
                struct vmw_private *dev_priv = vmw_priv(crtc->dev);
                struct vmw_framebuffer *vfb =
                        vmw_framebuffer_to_vfb(plane->state->fb);
-               struct drm_vmw_rect vclips;
-
-               vclips.x = crtc->x;
-               vclips.y = crtc->y;
-               vclips.w = crtc->mode.hdisplay;
-               vclips.h = crtc->mode.vdisplay;
 
                if (vfb->bo)
-                       ret = vmw_kms_sou_do_bo_dirty(dev_priv, vfb, NULL,
-                                                     &vclips, 1, 1, true,
-                                                     &fence, crtc);
+                       ret = vmw_sou_plane_update_bo(dev_priv, plane,
+                                                     old_state, vfb, &fence);
                else
-                       ret = vmw_kms_sou_do_surface_dirty(dev_priv, vfb, NULL,
-                                                          &vclips, NULL, 0, 0,
-                                                          1, 1, &fence, crtc);
-
-               /*
-                * We cannot really fail this function, so if we do, then output
-                * an error and maintain consistent atomic state.
-                */
+                       ret = vmw_sou_plane_update_surface(dev_priv, plane,
+                                                          old_state, vfb,
+                                                          &fence);
                if (ret != 0)
                        DRM_ERROR("Failed to update screen.\n");
        } else {
-               /*
-                * When disabling a plane, CRTC and FB should always be NULL
-                * together, otherwise it's an error.
-                * Here primary plane is being disable so should really blank
-                * the screen object display unit, if not already done.
-                */
+               /* Do nothing when fb and crtc is NULL (blank crtc) */
                return;
        }
 
+       /* For error case vblank event is sent from vmw_du_crtc_atomic_flush */
        event = crtc->state->event;
-       /*
-        * In case of failure and other cases, vblank event will be sent in
-        * vmw_du_crtc_atomic_flush.
-        */
        if (event && fence) {
                struct drm_file *file_priv = event->base.file_priv;
 
-               ret = vmw_event_fence_action_queue(file_priv,
-                                                  fence,
+               ret = vmw_event_fence_action_queue(file_priv, fence,
                                                   &event->base,
                                                   &event->event.vbl.tv_sec,
                                                   &event->event.vbl.tv_usec,
-- 
2.17.1

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

Reply via email to