On 12/3/23 10:22, Huang Rui wrote:
From: Antonio Caggiano <antonio.caggi...@collabora.com>
Create virgl renderer context with flags using context_id when valid.
The feature can be enabled via the context_init config option.
A warning message will be emitted and the feature will not be used
when linking with virglrenderer versions without context_init support.
Signed-off-by: Antonio Caggiano <antonio.caggi...@collabora.com>
Reviewed-by: Marc-André Lureau <marcandre.lur...@redhat.com>
---
hw/display/virtio-gpu-base.c | 3 +++
hw/display/virtio-gpu-virgl.c | 16 ++++++++++++++--
hw/display/virtio-gpu.c | 2 ++
include/hw/virtio/virtio-gpu.h | 3 +++
meson.build | 4 ++++
5 files changed, 26 insertions(+), 2 deletions(-)
diff --git a/hw/display/virtio-gpu-virgl.c b/hw/display/virtio-gpu-virgl.c
index 9b5e3dc782..41712b79ee 100644
--- a/hw/display/virtio-gpu-virgl.c
+++ b/hw/display/virtio-gpu-virgl.c
@@ -99,8 +99,20 @@ static void virgl_cmd_context_create(VirtIOGPU *g,
trace_virtio_gpu_cmd_ctx_create(cc.hdr.ctx_id,
cc.debug_name);
- virgl_renderer_context_create(cc.hdr.ctx_id, cc.nlen,
- cc.debug_name);
+ if (cc.context_init) {
+#ifdef HAVE_VIRGL_CONTEXT_INIT
+ virgl_renderer_context_create_with_flags(cc.hdr.ctx_id,
+ cc.context_init,
+ cc.nlen,
+ cc.debug_name);
+ return;
+#else
+ qemu_log_mask(LOG_UNIMP,
+ "Linked virglrenderer does not support context-init\n");
This is dubious, almost nobody will notice this log.
Can this happen? If so, this void function doesn't create any context...
+#endif
+ }
+
+ virgl_renderer_context_create(cc.hdr.ctx_id, cc.nlen, cc.debug_name);
}