[PATCH 08/14] drm/vmwgfx: use the new interface for STDU plane update
Thomas Hellstrom
thellstrom at vmware.com
Mon Sep 10 08:18:56 UTC 2018
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 at 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
More information about the dri-devel
mailing list