[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [RFC QEMU PATCH 10/18] virtio-gpu: Handle set scanout blob command
From: Antonio Caggiano <antonio.caggiano@xxxxxxxxxxxxx> Use mapped data pointer as data for the scanout. Signed-off-by: Antonio Caggiano <antonio.caggiano@xxxxxxxxxxxxx> --- hw/display/virtio-gpu-virgl.c | 3 +++ hw/display/virtio-gpu.c | 11 +++++++---- include/hw/virtio/virtio-gpu.h | 2 ++ 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/hw/display/virtio-gpu-virgl.c b/hw/display/virtio-gpu-virgl.c index f5ce206b93..1fe144f64d 100644 --- a/hw/display/virtio-gpu-virgl.c +++ b/hw/display/virtio-gpu-virgl.c @@ -653,6 +653,9 @@ void virtio_gpu_virgl_process_cmd(VirtIOGPU *g, case VIRTIO_GPU_CMD_RESOURCE_CREATE_BLOB: virgl_cmd_resource_create_blob(g, cmd); break; + case VIRTIO_GPU_CMD_SET_SCANOUT_BLOB: + virtio_gpu_set_scanout_blob(g, cmd); + break; case VIRTIO_GPU_CMD_RESOURCE_MAP_BLOB: virgl_cmd_resource_map_blob(g, cmd); break; diff --git a/hw/display/virtio-gpu.c b/hw/display/virtio-gpu.c index c7d1e52cb5..1e334a1e78 100644 --- a/hw/display/virtio-gpu.c +++ b/hw/display/virtio-gpu.c @@ -144,7 +144,7 @@ virtio_gpu_find_check_resource(VirtIOGPU *g, uint32_t resource_id, } if (require_backing) { - if (!res->iov || (!res->image && !res->blob)) { + if (!res->iov || (!res->image && !res->blob) || !res->mapped) { qemu_log_mask(LOG_GUEST_ERROR, "%s: no backing storage %d\n", caller, resource_id); if (error) { @@ -637,7 +637,10 @@ static void virtio_gpu_do_set_scanout(VirtIOGPU *g, } data = res->blob; - } else { + } else if (res->mapped) { + data = (uint8_t *)res->mapped; + } + else { data = (uint8_t *)pixman_image_get_data(res->image); } @@ -714,8 +717,8 @@ static void virtio_gpu_set_scanout(VirtIOGPU *g, &fb, res, &ss.r, &cmd->error); } -static void virtio_gpu_set_scanout_blob(VirtIOGPU *g, - struct virtio_gpu_ctrl_command *cmd) +void virtio_gpu_set_scanout_blob(VirtIOGPU *g, + struct virtio_gpu_ctrl_command *cmd) { struct virtio_gpu_simple_resource *res; struct virtio_gpu_framebuffer fb = { 0 }; diff --git a/include/hw/virtio/virtio-gpu.h b/include/hw/virtio/virtio-gpu.h index 0a44aea4ee..ce49cdfafb 100644 --- a/include/hw/virtio/virtio-gpu.h +++ b/include/hw/virtio/virtio-gpu.h @@ -284,6 +284,8 @@ void virtio_gpu_simple_process_cmd(VirtIOGPU *g, struct virtio_gpu_ctrl_command void virtio_gpu_update_cursor_data(VirtIOGPU *g, struct virtio_gpu_scanout *s, uint32_t resource_id); +void virtio_gpu_set_scanout_blob(VirtIOGPU *g, + struct virtio_gpu_ctrl_command *cmd); /* virtio-gpu-udmabuf.c */ bool virtio_gpu_have_udmabuf(void); -- 2.25.1
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |