diff mbox series

[3/3] package/qemu: add virglrenderer support

Message ID 20250618-virglrenderer-upstream-v1-3-57525ac8406e@gmail.com
State Superseded, archived
Headers show
Series package/virglrenderer: new package | expand

Commit Message

Joseph Kogut June 19, 2025, 12:59 a.m. UTC
Add optional virglrenderer support.

This feature isn't very useful with opengl disabled, so enable that
too.

https://www.qemu.org/docs/master/system/devices/virtio-gpu.html#virtio-gpu-virglrenderer

Signed-off-by: Joseph Kogut <joseph.kogut@gmail.com>
---
 package/qemu/Config.in | 12 ++++++++++++
 package/qemu/qemu.mk   |  8 +++++++-
 2 files changed, 19 insertions(+), 1 deletion(-)

Comments

Romain Naour July 6, 2025, 11:41 a.m. UTC | #1
Hello Joseph, All,

Le 19/06/2025 à 02:59, Joseph Kogut a écrit :
> Add optional virglrenderer support.
> 
> This feature isn't very useful with opengl disabled, so enable that
> too.
> 
> https://www.qemu.org/docs/master/system/devices/virtio-gpu.html#virtio-gpu-virglrenderer

Is host-qemu package could use virglrenderer (host-virglrenderer)?
(probably not due to host-mesa)

> 
> Signed-off-by: Joseph Kogut <joseph.kogut@gmail.com>
> ---
>  package/qemu/Config.in | 12 ++++++++++++
>  package/qemu/qemu.mk   |  8 +++++++-
>  2 files changed, 19 insertions(+), 1 deletion(-)
> 
> diff --git a/package/qemu/Config.in b/package/qemu/Config.in
> index 2d15ab1ea9c7889939e3fa4c532f3403c26edaed..334f1dcf5f68a2b3c5e72b4e67e68f94ac665e33 100644
> --- a/package/qemu/Config.in
> +++ b/package/qemu/Config.in
> @@ -100,6 +100,18 @@ config BR2_PACKAGE_QEMU_SDL
>  	  Say 'y' to enable the SDL frontend, that is, a graphical
>  	  window presenting the VM's display.
>  
> +comment "OpenGL and virglrenderer need an OpenGL and/or OpenGL EGL backend"
> +	depends on !(BR2_PACKAGE_HAS_LIBEGL || BR2_PACKAGE_HASLIBGL)

s/BR2_PACKAGE_HASLIBGL/BR2_PACKAGE_HAS_LIBGL/

> +
> +config BR2_PACKAGE_QEMU_VIRGLRENDERER
> +	bool "Enable virglrenderer"
> +	depends on BR2_PACKAGE_HAS_LIBEGL || BR2_PACKAGE_HAS_LIBGL # virglrenderer
> +	select BR2_PACKAGE_VIRGLRENDERER
> +	help
> +	  Say 'y' to enable virglrenderer, enabling GL and
> +	  Vulkan passthrough from the host to the guest
> +	  through virtio-gpu.
> +
>  config BR2_PACKAGE_QEMU_FDT
>  	bool "Enable FDT"
>  	select BR2_PACKAGE_DTC
> diff --git a/package/qemu/qemu.mk b/package/qemu/qemu.mk
> index fdc8591e546ab6b96fdb02b3742b75f587be239f..4221e027c07924f681359179692743420ffaa38e 100644
> --- a/package/qemu/qemu.mk
> +++ b/package/qemu/qemu.mk
> @@ -261,6 +261,13 @@ else
>  QEMU_OPTS += --disable-usb-redir
>  endif
>  
> +ifeq ($(BR2_PACKAGE_QEMU_VIRGLRENDERER),y)
> +QEMU_OPTS += --enable-virglrenderer --enable-opengl

I'm wondering (I would prefer) if we need a separate option to enable opengl
support in Qemu.

Best regards,
Romain


> +QEMU_DEPENDENCIES += virglrenderer libepoxy
> +else
> +QEMU_OPTS += --disable-virglrenderer --disable-opengl
> +endif
> +
>  ifeq ($(BR2_STATIC_LIBS),y)
>  QEMU_OPTS += --static
>  endif
> @@ -310,7 +317,6 @@ define QEMU_CONFIGURE_CMDS
>  			--disable-membarrier \
>  			--disable-mpath \
>  			--disable-netmap \
> -			--disable-opengl \
>  			--disable-oss \
>  			--disable-pa \
>  			--disable-plugins \
Joseph Kogut July 18, 2025, 7:03 p.m. UTC | #2
Hello Romain,

On Sun, Jul 6, 2025 at 4:41 AM Romain Naour <romain.naour@smile.fr> wrote:
>
> Hello Joseph, All,
>
> Le 19/06/2025 à 02:59, Joseph Kogut a écrit :
> > Add optional virglrenderer support.
> >
> > This feature isn't very useful with opengl disabled, so enable that
> > too.
> >
> > https://www.qemu.org/docs/master/system/devices/virtio-gpu.html#virtio-gpu-virglrenderer
>
> Is host-qemu package could use virglrenderer (host-virglrenderer)?
> (probably not due to host-mesa)
>

I think I looked into this when developing this patch series, and
while it's technically feasible (and useful for testing!), there were
blockers. It's something that could be explored in later patches. As
you mention, we'd have to have libgl on the host, libepoxy, libegl,
etc.

> >
> > Signed-off-by: Joseph Kogut <joseph.kogut@gmail.com>
> > ---
> >  package/qemu/Config.in | 12 ++++++++++++
> >  package/qemu/qemu.mk   |  8 +++++++-
> >  2 files changed, 19 insertions(+), 1 deletion(-)
> >
> > diff --git a/package/qemu/Config.in b/package/qemu/Config.in
> > index 2d15ab1ea9c7889939e3fa4c532f3403c26edaed..334f1dcf5f68a2b3c5e72b4e67e68f94ac665e33 100644
> > --- a/package/qemu/Config.in
> > +++ b/package/qemu/Config.in
> > @@ -100,6 +100,18 @@ config BR2_PACKAGE_QEMU_SDL
> >         Say 'y' to enable the SDL frontend, that is, a graphical
> >         window presenting the VM's display.
> >
> > +comment "OpenGL and virglrenderer need an OpenGL and/or OpenGL EGL backend"
> > +     depends on !(BR2_PACKAGE_HAS_LIBEGL || BR2_PACKAGE_HASLIBGL)
>
> s/BR2_PACKAGE_HASLIBGL/BR2_PACKAGE_HAS_LIBGL/
>

Thanks, I'll fix this.

> > +
> > +config BR2_PACKAGE_QEMU_VIRGLRENDERER
> > +     bool "Enable virglrenderer"
> > +     depends on BR2_PACKAGE_HAS_LIBEGL || BR2_PACKAGE_HAS_LIBGL # virglrenderer
> > +     select BR2_PACKAGE_VIRGLRENDERER
> > +     help
> > +       Say 'y' to enable virglrenderer, enabling GL and
> > +       Vulkan passthrough from the host to the guest
> > +       through virtio-gpu.
> > +
> >  config BR2_PACKAGE_QEMU_FDT
> >       bool "Enable FDT"
> >       select BR2_PACKAGE_DTC
> > diff --git a/package/qemu/qemu.mk b/package/qemu/qemu.mk
> > index fdc8591e546ab6b96fdb02b3742b75f587be239f..4221e027c07924f681359179692743420ffaa38e 100644
> > --- a/package/qemu/qemu.mk
> > +++ b/package/qemu/qemu.mk
> > @@ -261,6 +261,13 @@ else
> >  QEMU_OPTS += --disable-usb-redir
> >  endif
> >
> > +ifeq ($(BR2_PACKAGE_QEMU_VIRGLRENDERER),y)
> > +QEMU_OPTS += --enable-virglrenderer --enable-opengl
>
> I'm wondering (I would prefer) if we need a separate option to enable opengl
> support in Qemu.
>

I think this makes sense. The virglrenderer config could just select this.

Best,
Joseph
diff mbox series

Patch

diff --git a/package/qemu/Config.in b/package/qemu/Config.in
index 2d15ab1ea9c7889939e3fa4c532f3403c26edaed..334f1dcf5f68a2b3c5e72b4e67e68f94ac665e33 100644
--- a/package/qemu/Config.in
+++ b/package/qemu/Config.in
@@ -100,6 +100,18 @@  config BR2_PACKAGE_QEMU_SDL
 	  Say 'y' to enable the SDL frontend, that is, a graphical
 	  window presenting the VM's display.
 
+comment "OpenGL and virglrenderer need an OpenGL and/or OpenGL EGL backend"
+	depends on !(BR2_PACKAGE_HAS_LIBEGL || BR2_PACKAGE_HASLIBGL)
+
+config BR2_PACKAGE_QEMU_VIRGLRENDERER
+	bool "Enable virglrenderer"
+	depends on BR2_PACKAGE_HAS_LIBEGL || BR2_PACKAGE_HAS_LIBGL # virglrenderer
+	select BR2_PACKAGE_VIRGLRENDERER
+	help
+	  Say 'y' to enable virglrenderer, enabling GL and
+	  Vulkan passthrough from the host to the guest
+	  through virtio-gpu.
+
 config BR2_PACKAGE_QEMU_FDT
 	bool "Enable FDT"
 	select BR2_PACKAGE_DTC
diff --git a/package/qemu/qemu.mk b/package/qemu/qemu.mk
index fdc8591e546ab6b96fdb02b3742b75f587be239f..4221e027c07924f681359179692743420ffaa38e 100644
--- a/package/qemu/qemu.mk
+++ b/package/qemu/qemu.mk
@@ -261,6 +261,13 @@  else
 QEMU_OPTS += --disable-usb-redir
 endif
 
+ifeq ($(BR2_PACKAGE_QEMU_VIRGLRENDERER),y)
+QEMU_OPTS += --enable-virglrenderer --enable-opengl
+QEMU_DEPENDENCIES += virglrenderer libepoxy
+else
+QEMU_OPTS += --disable-virglrenderer --disable-opengl
+endif
+
 ifeq ($(BR2_STATIC_LIBS),y)
 QEMU_OPTS += --static
 endif
@@ -310,7 +317,6 @@  define QEMU_CONFIGURE_CMDS
 			--disable-membarrier \
 			--disable-mpath \
 			--disable-netmap \
-			--disable-opengl \
 			--disable-oss \
 			--disable-pa \
 			--disable-plugins \