Message ID | 20211121172237.14937-1-dongwon.kim@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | ui/gtk: graphic_hw_gl_flushed after closing dmabuf->fence_fd | expand |
On 11/21/21 18:22, Dongwon Kim wrote: > The dmabuf often becomes invalid right after unblocking pipeline > and graphic_hw_gl_flushed in case a new scanout blob is submitted > because the dmabuf associated with the current guest scanout is > freed after swapping. > > So both graphic_hw_gl_block and graphic_hw_gl_flushed should be > executed after closing fence_fd for the current dmabuf. > > Cc: Gerd Hoffmann <kraxel@redhat.com> > Cc: Vivek Kasireddy <vivek.kasireddy@intel.com> If so: Fixes: 65b847d284c ("ui: Create sync objects and fences only for blobs") > Signed-off-by: Dongwon Kim <dongwon.kim@intel.com> > --- > ui/gtk.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/ui/gtk.c b/ui/gtk.c > index 7abe1a69d8..2a3a9db13f 100644 > --- a/ui/gtk.c > +++ b/ui/gtk.c > @@ -589,11 +589,11 @@ void gd_hw_gl_flushed(void *vcon) > VirtualConsole *vc = vcon; > QemuDmaBuf *dmabuf = vc->gfx.guest_fb.dmabuf; > > - graphic_hw_gl_block(vc->gfx.dcl.con, false); > - graphic_hw_gl_flushed(vc->gfx.dcl.con); > qemu_set_fd_handler(dmabuf->fence_fd, NULL, NULL, NULL); > close(dmabuf->fence_fd); > dmabuf->fence_fd = -1; > + graphic_hw_gl_block(vc->gfx.dcl.con, false); > + graphic_hw_gl_flushed(vc->gfx.dcl.con); > } > > /** DisplayState Callbacks (opengl version) **/ >
diff --git a/ui/gtk.c b/ui/gtk.c index 7abe1a69d8..2a3a9db13f 100644 --- a/ui/gtk.c +++ b/ui/gtk.c @@ -589,11 +589,11 @@ void gd_hw_gl_flushed(void *vcon) VirtualConsole *vc = vcon; QemuDmaBuf *dmabuf = vc->gfx.guest_fb.dmabuf; - graphic_hw_gl_block(vc->gfx.dcl.con, false); - graphic_hw_gl_flushed(vc->gfx.dcl.con); qemu_set_fd_handler(dmabuf->fence_fd, NULL, NULL, NULL); close(dmabuf->fence_fd); dmabuf->fence_fd = -1; + graphic_hw_gl_block(vc->gfx.dcl.con, false); + graphic_hw_gl_flushed(vc->gfx.dcl.con); } /** DisplayState Callbacks (opengl version) **/
The dmabuf often becomes invalid right after unblocking pipeline and graphic_hw_gl_flushed in case a new scanout blob is submitted because the dmabuf associated with the current guest scanout is freed after swapping. So both graphic_hw_gl_block and graphic_hw_gl_flushed should be executed after closing fence_fd for the current dmabuf. Cc: Gerd Hoffmann <kraxel@redhat.com> Cc: Vivek Kasireddy <vivek.kasireddy@intel.com> Signed-off-by: Dongwon Kim <dongwon.kim@intel.com> --- ui/gtk.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)