ui/gtk-egl.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-)
Commit 6f189a08c1 ("ui/gtk-egl: Check EGLSurface before doing
scanout") introduced a regression when QEMU is running with a
virtio-gpu-gl-device on a host under X11. After the guest has
initialized the virtio-gpu-gl-device, the guest screen only
shows "Display output is not active.".
Commit 6f189a08c1 moved all function calls in
gd_egl_scanout_texture() to a code path which is only called
once after gd_egl_init() succeeds in gd_egl_scanout_texture().
Move all function calls in gd_egl_scanout_texture() back to
the regular code path so they get always called if one of the
gd_egl_init() calls was successful.
Fixes: 6f189a08c1 ("ui/gtk-egl: Check EGLSurface before doing scanout")
Signed-off-by: Volker Rümelin <vr_qemu@t-online.de>
---
ui/gtk-egl.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/ui/gtk-egl.c b/ui/gtk-egl.c
index cd2f176502..3af5ac5bcf 100644
--- a/ui/gtk-egl.c
+++ b/ui/gtk-egl.c
@@ -249,14 +249,14 @@ void gd_egl_scanout_texture(DisplayChangeListener *dcl,
if (!vc->gfx.esurface) {
return;
}
+ }
- eglMakeCurrent(qemu_egl_display, vc->gfx.esurface,
- vc->gfx.esurface, vc->gfx.ectx);
+ eglMakeCurrent(qemu_egl_display, vc->gfx.esurface,
+ vc->gfx.esurface, vc->gfx.ectx);
- gtk_egl_set_scanout_mode(vc, true);
- egl_fb_setup_for_tex(&vc->gfx.guest_fb, backing_width, backing_height,
- backing_id, false);
- }
+ gtk_egl_set_scanout_mode(vc, true);
+ egl_fb_setup_for_tex(&vc->gfx.guest_fb, backing_width, backing_height,
+ backing_id, false);
}
void gd_egl_scanout_dmabuf(DisplayChangeListener *dcl,
--
2.35.3
11.11.2023 13:40, Volker Rümelin wrote: > Commit 6f189a08c1 ("ui/gtk-egl: Check EGLSurface before doing > scanout") introduced a regression when QEMU is running with a > virtio-gpu-gl-device on a host under X11. After the guest has > initialized the virtio-gpu-gl-device, the guest screen only > shows "Display output is not active.". > > Commit 6f189a08c1 moved all function calls in > gd_egl_scanout_texture() to a code path which is only called > once after gd_egl_init() succeeds in gd_egl_scanout_texture(). > Move all function calls in gd_egl_scanout_texture() back to > the regular code path so they get always called if one of the > gd_egl_init() calls was successful. > > Fixes:
Hi Volker, Thank you for finding this! On 11/11/2023 11:40, Volker Rümelin wrote: > Commit 6f189a08c1 ("ui/gtk-egl: Check EGLSurface before doing > scanout") introduced a regression when QEMU is running with a > virtio-gpu-gl-device on a host under X11. After the guest has > initialized the virtio-gpu-gl-device, the guest screen only > shows "Display output is not active.". > > Commit 6f189a08c1 moved all function calls in > gd_egl_scanout_texture() to a code path which is only called > once after gd_egl_init() succeeds in gd_egl_scanout_texture(). > Move all function calls in gd_egl_scanout_texture() back to > the regular code path so they get always called if one of the > gd_egl_init() calls was successful. > > Fixes: 6f189a08c1 ("ui/gtk-egl: Check EGLSurface before doing scanout") > Signed-off-by: Volker Rümelin <vr_qemu@t-online.de> Reviewed by: Antonio Caggiano <quic_acaggian@quicinc.com> > --- > ui/gtk-egl.c | 12 ++++++------ > 1 file changed, 6 insertions(+), 6 deletions(-) > > diff --git a/ui/gtk-egl.c b/ui/gtk-egl.c > index cd2f176502..3af5ac5bcf 100644 > --- a/ui/gtk-egl.c > +++ b/ui/gtk-egl.c > @@ -249,14 +249,14 @@ void gd_egl_scanout_texture(DisplayChangeListener *dcl, > if (!vc->gfx.esurface) { > return; > } > + } > > - eglMakeCurrent(qemu_egl_display, vc->gfx.esurface, > - vc->gfx.esurface, vc->gfx.ectx); > + eglMakeCurrent(qemu_egl_display, vc->gfx.esurface, > + vc->gfx.esurface, vc->gfx.ectx); > > - gtk_egl_set_scanout_mode(vc, true); > - egl_fb_setup_for_tex(&vc->gfx.guest_fb, backing_width, backing_height, > - backing_id, false); > - } > + gtk_egl_set_scanout_mode(vc, true); > + egl_fb_setup_for_tex(&vc->gfx.guest_fb, backing_width, backing_height, > + backing_id, false); > } > > void gd_egl_scanout_dmabuf(DisplayChangeListener *dcl,
Hi On Sat, Nov 11, 2023 at 2:40 PM Volker Rümelin <vr_qemu@t-online.de> wrote: > > Commit 6f189a08c1 ("ui/gtk-egl: Check EGLSurface before doing > scanout") introduced a regression when QEMU is running with a > virtio-gpu-gl-device on a host under X11. After the guest has > initialized the virtio-gpu-gl-device, the guest screen only > shows "Display output is not active.". > > Commit 6f189a08c1 moved all function calls in > gd_egl_scanout_texture() to a code path which is only called > once after gd_egl_init() succeeds in gd_egl_scanout_texture(). > Move all function calls in gd_egl_scanout_texture() back to > the regular code path so they get always called if one of the > gd_egl_init() calls was successful. > > Fixes: 6f189a08c1 ("ui/gtk-egl: Check EGLSurface before doing scanout") > Signed-off-by: Volker Rümelin <vr_qemu@t-online.de> Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> > --- > ui/gtk-egl.c | 12 ++++++------ > 1 file changed, 6 insertions(+), 6 deletions(-) > > diff --git a/ui/gtk-egl.c b/ui/gtk-egl.c > index cd2f176502..3af5ac5bcf 100644 > --- a/ui/gtk-egl.c > +++ b/ui/gtk-egl.c > @@ -249,14 +249,14 @@ void gd_egl_scanout_texture(DisplayChangeListener *dcl, > if (!vc->gfx.esurface) { > return; > } > + } > > - eglMakeCurrent(qemu_egl_display, vc->gfx.esurface, > - vc->gfx.esurface, vc->gfx.ectx); > + eglMakeCurrent(qemu_egl_display, vc->gfx.esurface, > + vc->gfx.esurface, vc->gfx.ectx); > > - gtk_egl_set_scanout_mode(vc, true); > - egl_fb_setup_for_tex(&vc->gfx.guest_fb, backing_width, backing_height, > - backing_id, false); > - } > + gtk_egl_set_scanout_mode(vc, true); > + egl_fb_setup_for_tex(&vc->gfx.guest_fb, backing_width, backing_height, > + backing_id, false); > } > > void gd_egl_scanout_dmabuf(DisplayChangeListener *dcl, > -- > 2.35.3 >
Am 13.11.23 um 09:26 schrieb Marc-André Lureau: > Hi > > On Sat, Nov 11, 2023 at 2:40 PM Volker Rümelin <vr_qemu@t-online.de> wrote: >> Commit 6f189a08c1 ("ui/gtk-egl: Check EGLSurface before doing >> scanout") introduced a regression when QEMU is running with a >> virtio-gpu-gl-device on a host under X11. After the guest has >> initialized the virtio-gpu-gl-device, the guest screen only >> shows "Display output is not active.". >> >> Commit 6f189a08c1 moved all function calls in >> gd_egl_scanout_texture() to a code path which is only called >> once after gd_egl_init() succeeds in gd_egl_scanout_texture(). >> Move all function calls in gd_egl_scanout_texture() back to >> the regular code path so they get always called if one of the >> gd_egl_init() calls was successful. >> >> Fixes: 6f189a08c1 ("ui/gtk-egl: Check EGLSurface before doing scanout") >> Signed-off-by: Volker Rümelin <vr_qemu@t-online.de> > Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> Hi Marc-André, as the de facto maintainer of the ui directory, could you please send a pull request for this patch for 8.2-rc3? With best regards, Volker >> --- >> ui/gtk-egl.c | 12 ++++++------ >> 1 file changed, 6 insertions(+), 6 deletions(-) >> >> diff --git a/ui/gtk-egl.c b/ui/gtk-egl.c >> index cd2f176502..3af5ac5bcf 100644 >> --- a/ui/gtk-egl.c >> +++ b/ui/gtk-egl.c >> @@ -249,14 +249,14 @@ void gd_egl_scanout_texture(DisplayChangeListener *dcl, >> if (!vc->gfx.esurface) { >> return; >> } >> + } >> >> - eglMakeCurrent(qemu_egl_display, vc->gfx.esurface, >> - vc->gfx.esurface, vc->gfx.ectx); >> + eglMakeCurrent(qemu_egl_display, vc->gfx.esurface, >> + vc->gfx.esurface, vc->gfx.ectx); >> >> - gtk_egl_set_scanout_mode(vc, true); >> - egl_fb_setup_for_tex(&vc->gfx.guest_fb, backing_width, backing_height, >> - backing_id, false); >> - } >> + gtk_egl_set_scanout_mode(vc, true); >> + egl_fb_setup_for_tex(&vc->gfx.guest_fb, backing_width, backing_height, >> + backing_id, false); >> } >> >> void gd_egl_scanout_dmabuf(DisplayChangeListener *dcl, >> -- >> 2.35.3 >>
Cc: Antonio > Commit 6f189a08c1 ("ui/gtk-egl: Check EGLSurface before doing > scanout") introduced a regression when QEMU is running with a > virtio-gpu-gl-device on a host under X11. After the guest has > initialized the virtio-gpu-gl-device, the guest screen only > shows "Display output is not active.". > > Commit 6f189a08c1 moved all function calls in > gd_egl_scanout_texture() to a code path which is only called > once after gd_egl_init() succeeds in gd_egl_scanout_texture(). > Move all function calls in gd_egl_scanout_texture() back to > the regular code path so they get always called if one of the > gd_egl_init() calls was successful. > > Fixes: 6f189a08c1 ("ui/gtk-egl: Check EGLSurface before doing scanout") > Signed-off-by: Volker Rümelin <vr_qemu@t-online.de> > --- > ui/gtk-egl.c | 12 ++++++------ > 1 file changed, 6 insertions(+), 6 deletions(-) > > diff --git a/ui/gtk-egl.c b/ui/gtk-egl.c > index cd2f176502..3af5ac5bcf 100644 > --- a/ui/gtk-egl.c > +++ b/ui/gtk-egl.c > @@ -249,14 +249,14 @@ void gd_egl_scanout_texture(DisplayChangeListener *dcl, > if (!vc->gfx.esurface) { > return; > } > + } > > - eglMakeCurrent(qemu_egl_display, vc->gfx.esurface, > - vc->gfx.esurface, vc->gfx.ectx); > + eglMakeCurrent(qemu_egl_display, vc->gfx.esurface, > + vc->gfx.esurface, vc->gfx.ectx); > > - gtk_egl_set_scanout_mode(vc, true); > - egl_fb_setup_for_tex(&vc->gfx.guest_fb, backing_width, backing_height, > - backing_id, false); > - } > + gtk_egl_set_scanout_mode(vc, true); > + egl_fb_setup_for_tex(&vc->gfx.guest_fb, backing_width, backing_height, > + backing_id, false); > } > > void gd_egl_scanout_dmabuf(DisplayChangeListener *dcl,
© 2016 - 2024 Red Hat, Inc.