qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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


From: Alex Bennée
Subject: Re: [PATCH v3 8/9] virtio-gpu: Initialize Venus
Date: Mon, 30 Jan 2023 15:55:21 +0000
User-agent: mu4e 1.9.18; emacs 29.0.60

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.

-- 
Alex Bennée
Virtualisation Tech Lead @ Linaro



reply via email to

[Prev in Thread] Current Thread [Next in Thread]