From 11c94ace5e25a1b6d12184b1a6f54ef4dc75aa62 Mon Sep 17 00:00:00 2001 From: Rob Herring Date: Wed, 13 Jan 2016 15:52:07 -0600 Subject: drm: virtio-gpu: get the fb from the plane state for atomic updates When using the atomic API, plane->fb is not set when calling virtio_gpu_plane_atomic_update. Use plane->state->fb instead. Signed-off-by: Rob Herring Signed-off-by: Dave Airlie --- drivers/gpu/drm/virtio/virtgpu_plane.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'drivers/gpu/drm/virtio/virtgpu_plane.c') diff --git a/drivers/gpu/drm/virtio/virtgpu_plane.c b/drivers/gpu/drm/virtio/virtgpu_plane.c index 572fb351feab..cad1ca49ad31 100644 --- a/drivers/gpu/drm/virtio/virtgpu_plane.c +++ b/drivers/gpu/drm/virtio/virtgpu_plane.c @@ -68,8 +68,8 @@ static void virtio_gpu_plane_atomic_update(struct drm_plane *plane, struct virtio_gpu_object *bo; uint32_t handle; - if (plane->fb) { - vgfb = to_virtio_gpu_framebuffer(plane->fb); + if (plane->state->fb) { + vgfb = to_virtio_gpu_framebuffer(plane->state->fb); bo = gem_to_virtio_gpu_obj(vgfb->obj); handle = bo->hw_res_handle; } else { -- cgit v1.2.3 From bd17d1c77c2ae3bb988a256ea5bda6d405b62b56 Mon Sep 17 00:00:00 2001 From: Rob Herring Date: Wed, 13 Jan 2016 15:52:08 -0600 Subject: drm: virtio-gpu: ensure plane is flushed to host on atomic update This fixes drawing updates when updating planes with atomic API. Signed-off-by: Rob Herring Signed-off-by: Dave Airlie --- drivers/gpu/drm/virtio/virtgpu_plane.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'drivers/gpu/drm/virtio/virtgpu_plane.c') diff --git a/drivers/gpu/drm/virtio/virtgpu_plane.c b/drivers/gpu/drm/virtio/virtgpu_plane.c index cad1ca49ad31..519eebd6c581 100644 --- a/drivers/gpu/drm/virtio/virtgpu_plane.c +++ b/drivers/gpu/drm/virtio/virtgpu_plane.c @@ -84,6 +84,11 @@ static void virtio_gpu_plane_atomic_update(struct drm_plane *plane, plane->state->crtc_h, plane->state->crtc_x, plane->state->crtc_y); + virtio_gpu_cmd_resource_flush(vgdev, handle, + plane->state->crtc_x, + plane->state->crtc_y, + plane->state->crtc_w, + plane->state->crtc_h); } -- cgit v1.2.3 From 4109e7f7d5aeefaa1d72f9ab4c63aa5d79fc81fb Mon Sep 17 00:00:00 2001 From: Rob Herring Date: Wed, 13 Jan 2016 15:52:09 -0600 Subject: drm: virtio-gpu: transfer dumb buffers to host on plane update For dumb buffers, we need to transfer them to the host when updating a plane. Signed-off-by: Rob Herring Signed-off-by: Dave Airlie --- drivers/gpu/drm/virtio/virtgpu_plane.c | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'drivers/gpu/drm/virtio/virtgpu_plane.c') diff --git a/drivers/gpu/drm/virtio/virtgpu_plane.c b/drivers/gpu/drm/virtio/virtgpu_plane.c index 519eebd6c581..70b44a2345ab 100644 --- a/drivers/gpu/drm/virtio/virtgpu_plane.c +++ b/drivers/gpu/drm/virtio/virtgpu_plane.c @@ -72,6 +72,13 @@ static void virtio_gpu_plane_atomic_update(struct drm_plane *plane, vgfb = to_virtio_gpu_framebuffer(plane->state->fb); bo = gem_to_virtio_gpu_obj(vgfb->obj); handle = bo->hw_res_handle; + if (bo->dumb) { + virtio_gpu_cmd_transfer_to_host_2d + (vgdev, handle, 0, + cpu_to_le32(plane->state->crtc_w), + cpu_to_le32(plane->state->crtc_h), + plane->state->crtc_x, plane->state->crtc_y, NULL); + } } else { handle = 0; } -- cgit v1.2.3