[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
> >