diff mbox series

[v3,8/9] virtio-gpu: Initialize Venus

Message ID 20220926142422.22325-9-antonio.caggiano@collabora.com
State New
Headers show
Series virtio-gpu: Support Venus Vulkan driver | expand

Commit Message

Antonio Caggiano Sept. 26, 2022, 2:24 p.m. UTC
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(-)

Comments

Alex Bennée Jan. 30, 2023, 3:55 p.m. UTC | #1
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 mbox series

Patch

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;