Commit 544c521d authored by Gerd Hoffmann's avatar Gerd Hoffmann
Browse files

drm/virtio: factor out virtio_gpu_update_dumb_bo

parent 64440ef6
Loading
Loading
Loading
Loading
+21 −15
Original line number Diff line number Diff line
@@ -102,6 +102,25 @@ static int virtio_gpu_plane_atomic_check(struct drm_plane *plane,
	return ret;
}

static void virtio_gpu_update_dumb_bo(struct virtio_gpu_device *vgdev,
				      struct virtio_gpu_object *bo,
				      struct drm_plane_state *state)
{
	struct virtio_gpu_object_array *objs;

	objs = virtio_gpu_array_alloc(1);
	if (!objs)
		return;
	virtio_gpu_array_add_obj(objs, &bo->base.base);
	virtio_gpu_cmd_transfer_to_host_2d
		(vgdev, 0,
		 state->src_w >> 16,
		 state->src_h >> 16,
		 state->src_x >> 16,
		 state->src_y >> 16,
		 objs, NULL);
}

static void virtio_gpu_primary_plane_update(struct drm_plane *plane,
					    struct drm_plane_state *old_state)
{
@@ -129,21 +148,8 @@ static void virtio_gpu_primary_plane_update(struct drm_plane *plane,

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

		objs = virtio_gpu_array_alloc(1);
		if (!objs)
			return;
		virtio_gpu_array_add_obj(objs, vgfb->base.obj[0]);
		virtio_gpu_cmd_transfer_to_host_2d
			(vgdev, 0,
			 plane->state->src_w >> 16,
			 plane->state->src_h >> 16,
			 plane->state->src_x >> 16,
			 plane->state->src_y >> 16,
			 objs, NULL);
	}
	if (bo->dumb)
		virtio_gpu_update_dumb_bo(vgdev, bo, plane->state);

	DRM_DEBUG("handle 0x%x, crtc %dx%d+%d+%d, src %dx%d+%d+%d\n",
		  bo->hw_res_handle,