Message ID | 20180905233901.2321-9-drawat@vmware.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | plane update with damage | expand |
On 09/06/2018 01:38 AM, Deepak Rawat wrote: > With new interface to do plane update on STDU available, use that > instead of old kms_dirty. Update the commet to sync with code. s/commet/comment/ > > Signed-off-by: Deepak Rawat <drawat@vmware.com> > --- > drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c | 38 +++++++--------------------- > 1 file changed, 9 insertions(+), 29 deletions(-) > > diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c b/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c > index 8c1ba874512a..167190b75e2f 100644 > --- a/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c > +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c > @@ -1706,14 +1706,10 @@ vmw_stdu_primary_plane_atomic_update(struct drm_plane *plane, > struct vmw_private *dev_priv; > int ret; > > - /* > - * We cannot really fail this function, so if we do, then output an > - * error and maintain consistent atomic state. > - */ > + /* If somehow gets a device error, maintain consistent atomic state */ > if (crtc && plane->state->fb) { > struct vmw_framebuffer *vfb = > vmw_framebuffer_to_vfb(plane->state->fb); > - struct drm_vmw_rect vclips; > stdu = vmw_crtc_to_stdu(crtc); > dev_priv = vmw_priv(crtc->dev); > > @@ -1721,23 +1717,17 @@ vmw_stdu_primary_plane_atomic_update(struct drm_plane *plane, > stdu->content_fb_type = vps->content_fb_type; > stdu->cpp = vps->cpp; > > - vclips.x = crtc->x; > - vclips.y = crtc->y; > - vclips.w = crtc->mode.hdisplay; > - vclips.h = crtc->mode.vdisplay; > - > ret = vmw_stdu_bind_st(dev_priv, stdu, &stdu->display_srf->res); > if (ret) > DRM_ERROR("Failed to bind surface to STDU.\n"); > > if (vfb->bo) > - ret = vmw_kms_stdu_dma(dev_priv, NULL, vfb, NULL, NULL, > - &vclips, 1, 1, true, false, > - crtc); > + ret = vmw_stdu_plane_update_bo(dev_priv, plane, > + old_state, vfb); > else > - ret = vmw_kms_stdu_surface_dirty(dev_priv, vfb, NULL, > - &vclips, NULL, 0, 0, > - 1, 1, NULL, crtc); > + ret = vmw_stdu_plane_update_surface(dev_priv, plane, > + old_state, vfb, > + NULL); > if (ret) > DRM_ERROR("Failed to update STDU.\n"); > } else { > @@ -1745,12 +1735,7 @@ vmw_stdu_primary_plane_atomic_update(struct drm_plane *plane, > stdu = vmw_crtc_to_stdu(crtc); > dev_priv = vmw_priv(crtc->dev); > > - /* > - * When disabling a plane, CRTC and FB should always be NULL > - * together, otherwise it's an error. > - * Here primary plane is being disable so blank the screen > - * target display unit, if not already done. > - */ > + /* Blank STDU when fb and crtc are NULL */ > if (!stdu->defined) > return; > > @@ -1765,20 +1750,15 @@ vmw_stdu_primary_plane_atomic_update(struct drm_plane *plane, > return; > } > > + /* In case of error vblank event is sent in 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 && (ret == 0)) { > struct vmw_fence_obj *fence = NULL; > struct drm_file *file_priv = event->base.file_priv; > > vmw_execbuf_fence_commands(NULL, dev_priv, &fence, NULL); > > - /* > - * If fence is NULL, then already sync. > - */ > + /* If fence is NULL, then already sync. */ If comment changes are not directly related to the functional changes, please use a separate patch for them. > if (fence) { > ret = vmw_event_fence_action_queue( > file_priv, fence, &event->base, Thanks, Thomas
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c b/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c index 8c1ba874512a..167190b75e2f 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c @@ -1706,14 +1706,10 @@ vmw_stdu_primary_plane_atomic_update(struct drm_plane *plane, struct vmw_private *dev_priv; int ret; - /* - * We cannot really fail this function, so if we do, then output an - * error and maintain consistent atomic state. - */ + /* If somehow gets a device error, maintain consistent atomic state */ if (crtc && plane->state->fb) { struct vmw_framebuffer *vfb = vmw_framebuffer_to_vfb(plane->state->fb); - struct drm_vmw_rect vclips; stdu = vmw_crtc_to_stdu(crtc); dev_priv = vmw_priv(crtc->dev); @@ -1721,23 +1717,17 @@ vmw_stdu_primary_plane_atomic_update(struct drm_plane *plane, stdu->content_fb_type = vps->content_fb_type; stdu->cpp = vps->cpp; - vclips.x = crtc->x; - vclips.y = crtc->y; - vclips.w = crtc->mode.hdisplay; - vclips.h = crtc->mode.vdisplay; - ret = vmw_stdu_bind_st(dev_priv, stdu, &stdu->display_srf->res); if (ret) DRM_ERROR("Failed to bind surface to STDU.\n"); if (vfb->bo) - ret = vmw_kms_stdu_dma(dev_priv, NULL, vfb, NULL, NULL, - &vclips, 1, 1, true, false, - crtc); + ret = vmw_stdu_plane_update_bo(dev_priv, plane, + old_state, vfb); else - ret = vmw_kms_stdu_surface_dirty(dev_priv, vfb, NULL, - &vclips, NULL, 0, 0, - 1, 1, NULL, crtc); + ret = vmw_stdu_plane_update_surface(dev_priv, plane, + old_state, vfb, + NULL); if (ret) DRM_ERROR("Failed to update STDU.\n"); } else { @@ -1745,12 +1735,7 @@ vmw_stdu_primary_plane_atomic_update(struct drm_plane *plane, stdu = vmw_crtc_to_stdu(crtc); dev_priv = vmw_priv(crtc->dev); - /* - * When disabling a plane, CRTC and FB should always be NULL - * together, otherwise it's an error. - * Here primary plane is being disable so blank the screen - * target display unit, if not already done. - */ + /* Blank STDU when fb and crtc are NULL */ if (!stdu->defined) return; @@ -1765,20 +1750,15 @@ vmw_stdu_primary_plane_atomic_update(struct drm_plane *plane, return; } + /* In case of error vblank event is sent in 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 && (ret == 0)) { struct vmw_fence_obj *fence = NULL; struct drm_file *file_priv = event->base.file_priv; vmw_execbuf_fence_commands(NULL, dev_priv, &fence, NULL); - /* - * If fence is NULL, then already sync. - */ + /* If fence is NULL, then already sync. */ if (fence) { ret = vmw_event_fence_action_queue( file_priv, fence, &event->base,
With new interface to do plane update on STDU available, use that instead of old kms_dirty. Update the commet to sync with code. Signed-off-by: Deepak Rawat <drawat@vmware.com> --- drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c | 38 +++++++--------------------- 1 file changed, 9 insertions(+), 29 deletions(-)