qemu-devel
[Top][All Lists]
Advanced

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

RE: [PATCH v1] ui/gtk-egl: Check for a valid context before making EGL c


From: Kasireddy, Vivek
Subject: RE: [PATCH v1] ui/gtk-egl: Check for a valid context before making EGL calls
Date: Mon, 7 Mar 2022 18:00:02 +0000

Hi Marc-Andre,

> 
> Hi Vivek
> 
> On Mon, Mar 7, 2022 at 8:39 AM Vivek Kasireddy
> <vivek.kasireddy@intel.com> wrote:
> >
> > Since not all listeners (i.e VirtualConsoles) of GL events have
> > a valid EGL context, make sure that there is a valid context
> > before making EGL calls.
> >
> > This fixes the following crash seen while launching the VM with
> > "-device virtio-gpu-pci,max_outputs=1,blob=true -display gtk,gl=on"
> >
> > No provider of eglCreateImageKHR found.  Requires one of:
> > EGL_KHR_image
> > EGL_KHR_image_base
> >
> > Fixes: 7cc712e9862ff ("ui: dispatch GL events to all listeners")
> 
> I am not able to reproduce on current master.
[Kasireddy, Vivek] I can still see it with current master. I think this issue
is only seen when running Qemu in an Xorg based Host environment and
cannot be reproduced in a Wayland based environment -- as Qemu UI 
uses the GLArea widget in the Wayland case where the EGL context
is managed by GTK.

> 
> Isn't it fixed with commit a9fbce5e9 ("ui/console: fix crash when
> using gl context with non-gl listeners") ?
[Kasireddy, Vivek] No, it unfortunately does not fix the issue I am seeing. In 
my case, there are three VirtualConsoles created ("parallel0", "compatmonitor0",
"virtio-gpu-pci") and all three of them seem to have a valid 
dpy_gl_scanout_dmabuf()
but only virtio-gpu-pci has a valid EGL context. 

> 
> Could you also check after "[PATCH v3 00/12] GL & D-Bus display related 
> fixes" ?
[Kasireddy, Vivek] I can check but I don't think this issue can be fixed in 
ui/console.c
as all three VirtualConsoles pass the console_has_gl() check and one of the 
only things
that distinguishes them is whether they have a valid EGL context. 

Thanks,
Vivek

> 
> thanks
> 
> >
> > Cc: Marc-André Lureau <marcandre.lureau@redhat.com>
> > Cc: Gerd Hoffmann <kraxel@redhat.com>
> > Cc: Dongwon Kim <dongwon.kim@intel.com>
> > Signed-off-by: Vivek Kasireddy <vivek.kasireddy@intel.com>
> > ---
> >  ui/gtk-egl.c | 8 ++++++++
> >  1 file changed, 8 insertions(+)
> >
> > diff --git a/ui/gtk-egl.c b/ui/gtk-egl.c
> > index e3bd4bc274..31175827d0 100644
> > --- a/ui/gtk-egl.c
> > +++ b/ui/gtk-egl.c
> > @@ -244,6 +244,10 @@ void gd_egl_scanout_dmabuf(DisplayChangeListener *dcl,
> >  #ifdef CONFIG_GBM
> >      VirtualConsole *vc = container_of(dcl, VirtualConsole, gfx.dcl);
> >
> > +    if (!vc->gfx.ectx || !vc->gfx.esurface) {
> > +        return;
> > +    }
> > +
> >      eglMakeCurrent(qemu_egl_display, vc->gfx.esurface,
> >                     vc->gfx.esurface, vc->gfx.ectx);
> >
> > @@ -269,6 +273,10 @@ void gd_egl_cursor_dmabuf(DisplayChangeListener *dcl,
> >  #ifdef CONFIG_GBM
> >      VirtualConsole *vc = container_of(dcl, VirtualConsole, gfx.dcl);
> >
> > +    if (!vc->gfx.ectx || !vc->gfx.esurface) {
> > +        return;
> > +    }
> > +
> >      if (dmabuf) {
> >          egl_dmabuf_import_texture(dmabuf);
> >          if (!dmabuf->texture) {
> > --
> > 2.35.1
> >


reply via email to

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