]> xenbits.xensource.com Git - qemu-xen.git/commitdiff
ui/gtk-egl: guest fb texture needs to be regenerated when reinitializing egl
authorDongwon Kim <dongwon.kim@intel.com>
Thu, 4 Nov 2021 06:51:50 +0000 (23:51 -0700)
committerGerd Hoffmann <kraxel@redhat.com>
Fri, 5 Nov 2021 11:29:34 +0000 (12:29 +0100)
If guest fb is backed by dmabuf (blob-resource), the texture bound to the
old context needs to be recreated in case the egl is re-initialized (e.g.
new window for vc is created in case of detaching/reattaching of the tab)

v2: call egl_dmabuf_release_texutre instead of putting 0 to dmabuf->texture
    (Vivek Kasireddy)

Cc: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Dongwon Kim <dongwon.kim@intel.com>
Message-Id: <20211104065153.28897-3-dongwon.kim@intel.com>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
ui/gtk-egl.c

index 21649950983f851bd7e53301585fc3f321f9111a..f2026e4b5c9b05bb60d49072c1f589455c433977 100644 (file)
@@ -155,6 +155,10 @@ void gd_egl_refresh(DisplayChangeListener *dcl)
             surface_gl_destroy_texture(vc->gfx.gls, vc->gfx.ds);
             surface_gl_create_texture(vc->gfx.gls, vc->gfx.ds);
         }
+        if (vc->gfx.guest_fb.dmabuf) {
+            egl_dmabuf_release_texture(vc->gfx.guest_fb.dmabuf);
+            gd_egl_scanout_dmabuf(dcl, vc->gfx.guest_fb.dmabuf);
+        }
     }
 
     graphic_hw_update(dcl->con);