Commit 64440ef6 authored by Gerd Hoffmann's avatar Gerd Hoffmann
Browse files

drm/virtio: Simplify virtio_gpu_primary_plane_update workflow.



Return early for the no framebuffer (or disabled output) case.
Results in a simpler code flow for the remaining cases.
No functional change.

Signed-off-by: default avatarGerd Hoffmann <kraxel@redhat.com>
Reviewed-by: default avatarGurchetan Singh <gurchetansingh@chromium.org>
Link: http://patchwork.freedesktop.org/patch/msgid/20191023062539.11728-3-kraxel@redhat.com
parent 1dc34852
Loading
Loading
Loading
Loading
+34 −30
Original line number Diff line number Diff line
@@ -110,7 +110,6 @@ static void virtio_gpu_primary_plane_update(struct drm_plane *plane,
	struct virtio_gpu_output *output = NULL;
	struct virtio_gpu_framebuffer *vgfb;
	struct virtio_gpu_object *bo;
	uint32_t handle;

	if (plane->state->crtc)
		output = drm_crtc_to_virtio_gpu_output(plane->state->crtc);
@@ -119,10 +118,17 @@ static void virtio_gpu_primary_plane_update(struct drm_plane *plane,
	if (WARN_ON(!output))
		return;

	if (plane->state->fb && output->enabled) {
	if (!plane->state->fb || !output->enabled) {
		DRM_DEBUG("nofb\n");
		virtio_gpu_cmd_set_scanout(vgdev, output->index, 0,
					   plane->state->src_w >> 16,
					   plane->state->src_h >> 16,
					   0, 0);
		return;
	}

	vgfb = to_virtio_gpu_framebuffer(plane->state->fb);
	bo = gem_to_virtio_gpu_obj(vgfb->base.obj[0]);
		handle = bo->hw_res_handle;
	if (bo->dumb) {
		struct virtio_gpu_object_array *objs;

@@ -138,24 +144,22 @@ static void virtio_gpu_primary_plane_update(struct drm_plane *plane,
			 plane->state->src_y >> 16,
			 objs, NULL);
	}
	} else {
		handle = 0;
	}

	DRM_DEBUG("handle 0x%x, crtc %dx%d+%d+%d, src %dx%d+%d+%d\n", handle,
	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, handle,
	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 (handle)
		virtio_gpu_cmd_resource_flush(vgdev, handle,
	virtio_gpu_cmd_resource_flush(vgdev, bo->hw_res_handle,
				      plane->state->src_x >> 16,
				      plane->state->src_y >> 16,
				      plane->state->src_w >> 16,