[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: |
Huang Rui |
Subject: |
[RFC QEMU PATCH 10/18] virtio-gpu: Handle set scanout blob command |
Date: |
Sun, 12 Mar 2023 17:22:36 +0800 |
From: Antonio Caggiano <antonio.caggiano@collabora.com>
Use mapped data pointer as data for the scanout.
Signed-off-by: Antonio Caggiano <antonio.caggiano@collabora.com>
---
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
- [RFC QEMU PATCH 05/18] virtio-gpu: Unrealize, (continued)
[RFC QEMU PATCH 09/18] meson: Enable virglrenderer unstable APIs, Huang Rui, 2023/03/12
[RFC QEMU PATCH 10/18] virtio-gpu: Handle set scanout blob command,
Huang Rui <=
[RFC QEMU PATCH 11/18] virtio-gpu: make blob scanout use dmabuf fd, Huang Rui, 2023/03/12
[RFC QEMU PATCH 12/18] softmmu: Fix the size to map cache with xen for host virtual address, Huang Rui, 2023/03/12
[RFC QEMU PATCH 13/18] hw/i386/xen/xen-hvm: Introduce xen_ram_block_check function, Huang Rui, 2023/03/12
[RFC QEMU PATCH 14/18] softmmu: Add ram block check to map the xen ram memory, Huang Rui, 2023/03/12
[RFC QEMU PATCH 16/18] virtio-gpu: fix hw-display-virtio-gpu.so undefined symbol virtio_gpu_virgl_resource_unmap, Huang Rui, 2023/03/12
[RFC QEMU PATCH 17/18] virtio-gpu: Add video hardware accelerate support for virgl, Huang Rui, 2023/03/12
[RFC QEMU PATCH 18/18] xen: translate irq of host pci device to gsi, Huang Rui, 2023/03/12
[RFC QEMU PATCH 15/18] softmmu: Enable qemu ram allocation with fd for Xen, Huang Rui, 2023/03/12