diff mbox series

[08/14] drm/vmwgfx: use the new interface for STDU plane update

Message ID 20180905233901.2321-9-drawat@vmware.com (mailing list archive)
State New, archived
Headers show
Series plane update with damage | expand

Commit Message

Deepak Singh Rawat Sept. 5, 2018, 11:38 p.m. UTC
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(-)

Comments

Thomas Hellstrom Sept. 10, 2018, 8:18 a.m. UTC | #1
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 mbox series

Patch

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,