[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v7 09/10] virtio-gpu: Support Venus capset
|
From: |
Antonio Caggiano |
|
Subject: |
Re: [PATCH v7 09/10] virtio-gpu: Support Venus capset |
|
Date: |
Thu, 11 Apr 2024 14:52:04 +0200 |
|
User-agent: |
Mozilla Thunderbird |
Hi Dmitry,
I have a new version of this patch which you might want to include in
this series.
Please, you can find it below.
I hope it would also solve the issue raised by Pierre-Eric in v6.
Cheers,
Antonio
---
virtio-gpu: Support Venus capset
While querying the number of capsets, map each index to the relative
capset ID, then reuse this mapping when querying for the capset info.
This is a flexible approach which allows to add support for new capsets
in the future more easily.
Then add support for the Venus capset, which enables Vulkan support through
the Venus Vulkan driver for virtio-gpu.
Signed-off-by: Antonio Caggiano <quic_acaggian@quicinc.com>
---
diff --git a/hw/display/virtio-gpu-virgl.c b/hw/display/virtio-gpu-virgl.c
index 9f34d0e661..0e9e4ebcbb 100644
--- a/hw/display/virtio-gpu-virgl.c
+++ b/hw/display/virtio-gpu-virgl.c
@@ -371,17 +371,13 @@ static void virgl_cmd_get_capset_info(VirtIOGPU *g,
{
struct virtio_gpu_get_capset_info info;
struct virtio_gpu_resp_capset_info resp;
+ VirtIOGPUGL* gl = VIRTIO_GPU_GL(g);
VIRTIO_GPU_FILL_CMD(info);
memset(&resp, 0, sizeof(resp));
- if (info.capset_index == 0) {
- resp.capset_id = VIRTIO_GPU_CAPSET_VIRGL;
- virgl_renderer_get_cap_set(resp.capset_id,
- &resp.capset_max_version,
- &resp.capset_max_size);
- } else if (info.capset_index == 1) {
- resp.capset_id = VIRTIO_GPU_CAPSET_VIRGL2;
+ if (info.capset_index < VIRTIO_GPU_MAX_CAPSETS) {
+ resp.capset_id = gl->capset_ids[info.capset_index];
virgl_renderer_get_cap_set(resp.capset_id,
&resp.capset_max_version,
&resp.capset_max_size);
@@ -658,10 +654,28 @@ int virtio_gpu_virgl_init(VirtIOGPU *g)
int virtio_gpu_virgl_get_num_capsets(VirtIOGPU *g)
{
- uint32_t capset2_max_ver, capset2_max_size;
+ uint32_t capset_max_ver, capset_max_size;
+ uint32_t capset_count = 0;
+ VirtIOGPUGL *gl = VIRTIO_GPU_GL(g);
+
+ gl->capset_ids[capset_count] = VIRTIO_GPU_CAPSET_VIRGL;
+ capset_count++;
+
virgl_renderer_get_cap_set(VIRTIO_GPU_CAPSET_VIRGL2,
- &capset2_max_ver,
- &capset2_max_size);
+ &capset_max_ver,
+ &capset_max_size);
+ if (capset_max_ver) {
+ gl->capset_ids[capset_count] = VIRTIO_GPU_CAPSET_VIRGL2;
+ capset_count++;
+ }
+
+ virgl_renderer_get_cap_set(VIRTIO_GPU_CAPSET_VENUS,
+ &capset_max_ver,
+ &capset_max_size);
+ if (capset_max_size) {
+ gl->capset_ids[capset_count] = VIRTIO_GPU_CAPSET_VENUS;
+ capset_count++;
+ }
- return capset2_max_ver ? 2 : 1;
+ return capset_count;
}
diff --git a/include/hw/virtio/virtio-gpu.h b/include/hw/virtio/virtio-gpu.h
index ed44cdad6b..c0e7cae42e 100644
--- a/include/hw/virtio/virtio-gpu.h
+++ b/include/hw/virtio/virtio-gpu.h
@@ -225,11 +225,15 @@ struct VirtIOGPUClass {
Error **errp);
};
+#define VIRTIO_GPU_MAX_CAPSETS 8
+
struct VirtIOGPUGL {
struct VirtIOGPU parent_obj;
bool renderer_inited;
bool renderer_reset;
+
+ int capset_ids[VIRTIO_GPU_MAX_CAPSETS];
};
struct VhostUserGPU {
On 11/04/2024 12:20, Dmitry Osipenko wrote:
From: Antonio Caggiano <antonio.caggiano@collabora.com>
Add support for the Venus capset, which enables Vulkan support through
the Venus Vulkan driver for virtio-gpu.
Signed-off-by: Antonio Caggiano <antonio.caggiano@collabora.com>
Signed-off-by: Huang Rui <ray.huang@amd.com>
Signed-off-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>
---
hw/display/virtio-gpu-virgl.c | 21 +++++++++++++++++----
1 file changed, 17 insertions(+), 4 deletions(-)
diff --git a/hw/display/virtio-gpu-virgl.c b/hw/display/virtio-gpu-virgl.c
index e01ab8295d4d..0d8f00c7939a 100644
--- a/hw/display/virtio-gpu-virgl.c
+++ b/hw/display/virtio-gpu-virgl.c
@@ -517,6 +517,11 @@ static void virgl_cmd_get_capset_info(VirtIOGPU *g,
virgl_renderer_get_cap_set(resp.capset_id,
&resp.capset_max_version,
&resp.capset_max_size);
+ } else if (info.capset_index == 2) {
+ resp.capset_id = VIRTIO_GPU_CAPSET_VENUS;
+ virgl_renderer_get_cap_set(resp.capset_id,
+ &resp.capset_max_version,
+ &resp.capset_max_size);
} else {
resp.capset_max_version = 0;
resp.capset_max_size = 0;
@@ -1067,10 +1072,18 @@ int virtio_gpu_virgl_init(VirtIOGPU *g)
int virtio_gpu_virgl_get_num_capsets(VirtIOGPU *g)
{
- uint32_t capset2_max_ver, capset2_max_size;
+ uint32_t capset2_max_ver, capset2_max_size, num_capsets;
+ num_capsets = 1;
+
virgl_renderer_get_cap_set(VIRTIO_GPU_CAPSET_VIRGL2,
- &capset2_max_ver,
- &capset2_max_size);
+ &capset2_max_ver,
+ &capset2_max_size);
+ num_capsets += capset2_max_ver ? 1 : 0;
+
+ virgl_renderer_get_cap_set(VIRTIO_GPU_CAPSET_VENUS,
+ &capset2_max_ver,
+ &capset2_max_size);
+ num_capsets += capset2_max_size ? 1 : 0;
- return capset2_max_ver ? 2 : 1;
+ return num_capsets;
}
- [PATCH v7 05/10] virtio-gpu: Add virgl resource management, (continued)
- [PATCH v7 05/10] virtio-gpu: Add virgl resource management, Dmitry Osipenko, 2024/04/11
- [PATCH v7 01/10] linux-headers: Update to Linux v6.9-rc3, Dmitry Osipenko, 2024/04/11
- [PATCH v7 07/10] virtio-gpu: Handle resource blob commands, Dmitry Osipenko, 2024/04/11
- Re: [PATCH v7 07/10] virtio-gpu: Handle resource blob commands, Akihiko Odaki, 2024/04/13
- Re: [PATCH v7 07/10] virtio-gpu: Handle resource blob commands, Dmitry Osipenko, 2024/04/15
- Re: [PATCH v7 07/10] virtio-gpu: Handle resource blob commands, Akihiko Odaki, 2024/04/15
- Re: [PATCH v7 07/10] virtio-gpu: Handle resource blob commands, Dmitry Osipenko, 2024/04/15
- Re: [PATCH v7 07/10] virtio-gpu: Handle resource blob commands, Akihiko Odaki, 2024/04/15
- Re: [PATCH v7 07/10] virtio-gpu: Handle resource blob commands, Dmitry Osipenko, 2024/04/18
[PATCH v7 09/10] virtio-gpu: Support Venus capset, Dmitry Osipenko, 2024/04/11
- Re: [PATCH v7 09/10] virtio-gpu: Support Venus capset,
Antonio Caggiano <=
[PATCH v7 06/10] virtio-gpu: Support blob scanout using dmabuf fd, Dmitry Osipenko, 2024/04/11
[PATCH v7 08/10] virtio-gpu: Resource UUID, Dmitry Osipenko, 2024/04/11
[PATCH v7 10/10] virtio-gpu: Initialize Venus, Dmitry Osipenko, 2024/04/11
Re: [PATCH v7 00/10] Support blob memory and venus on qemu, Huang Rui, 2024/04/12