Message ID | 20220926142422.22325-9-antonio.caggiano@collabora.com |
---|---|
State | New |
Headers | show |
Series | virtio-gpu: Support Venus Vulkan driver | expand |
Antonio Caggiano <antonio.caggiano@collabora.com> writes: > Request Venus when initializing VirGL. > > Signed-off-by: Antonio Caggiano <antonio.caggiano@collabora.com> > --- > hw/display/virtio-gpu-virgl.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/hw/display/virtio-gpu-virgl.c b/hw/display/virtio-gpu-virgl.c > index 16f600adbb..0f17bdddd0 100644 > --- a/hw/display/virtio-gpu-virgl.c > +++ b/hw/display/virtio-gpu-virgl.c > @@ -806,7 +806,7 @@ int virtio_gpu_virgl_init(VirtIOGPU *g) > { > int ret; > > - ret = virgl_renderer_init(g, 0, &virtio_gpu_3d_cbs); > + ret = virgl_renderer_init(g, VIRGL_RENDERER_VENUS, &virtio_gpu_3d_cbs); > if (ret != 0) { > error_report("virgl could not be initialized: %d", ret); > return ret; We need to probe for Venus support in virgl in configure: irtio-gpu-virgl.c.o -c ../../hw/display/virtio-gpu-virgl.c ../../hw/display/virtio-gpu-virgl.c: In function ‘virtio_gpu_virgl_init’: ../../hw/display/virtio-gpu-virgl.c:820:34: error: ‘VIRGL_RENDERER_VENUS’ undeclared (first use in this function); did you mean ‘VIRGL_RENDERER_USE_EGL’? 820 | ret = virgl_renderer_init(g, VIRGL_RENDERER_VENUS, &virtio_gpu_3d_cbs); | ^~~~~~~~~~~~~~~~~~~~ | VIRGL_RENDERER_USE_EGL ../../hw/display/virtio-gpu-virgl.c:820:34: note: each undeclared identifier is reported only once for each function it appears in While I fixed the callback with: modified hw/display/virtio-gpu-virgl.c @@ -744,10 +744,12 @@ static int virgl_make_context_current(void *opaque, int scanout_idx, qctx); } +#if VIRGL_RENDERER_CALLBACKS_VERSION >= 4 static void *virgl_get_egl_display(void *opaque) { return eglGetCurrentDisplay(); } +#endif static struct virgl_renderer_callbacks virtio_gpu_3d_cbs = { .version = 4, @@ -755,7 +757,9 @@ static struct virgl_renderer_callbacks virtio_gpu_3d_cbs = { .create_gl_context = virgl_create_context, .destroy_gl_context = virgl_destroy_context, .make_current = virgl_make_context_current, +#if VIRGL_RENDERER_CALLBACKS_VERSION >= 4 .get_egl_display = virgl_get_egl_display, +#endif }; static void virtio_gpu_print_stats(void *opaque) I suspect we shouldn't unconditionally enable VENUS here. This sounds like it needs a configuration knob on the device, i.e.: -device virtio-gpu-pci,renderer=venus where the default is EGL.
diff --git a/hw/display/virtio-gpu-virgl.c b/hw/display/virtio-gpu-virgl.c index 16f600adbb..0f17bdddd0 100644 --- a/hw/display/virtio-gpu-virgl.c +++ b/hw/display/virtio-gpu-virgl.c @@ -806,7 +806,7 @@ int virtio_gpu_virgl_init(VirtIOGPU *g) { int ret; - ret = virgl_renderer_init(g, 0, &virtio_gpu_3d_cbs); + ret = virgl_renderer_init(g, VIRGL_RENDERER_VENUS, &virtio_gpu_3d_cbs); if (ret != 0) { error_report("virgl could not be initialized: %d", ret); return ret;
Request Venus when initializing VirGL. Signed-off-by: Antonio Caggiano <antonio.caggiano@collabora.com> --- hw/display/virtio-gpu-virgl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)