diff options
| author | Vivek Kasireddy <vivek.kasireddy@intel.com> | 2021-09-14 14:18:35 -0700 |
|---|---|---|
| committer | Gerd Hoffmann <kraxel@redhat.com> | 2021-09-15 08:41:59 +0200 |
| commit | 65b847d284c1ab8a1dbd44d2b046e87e83ebb6e0 (patch) | |
| tree | 63b0281591813862f2802aa44cf4e5fda2aecc8e /ui/gtk.c | |
| parent | 121abaf3e68d620f7c4c1d16875de4a4b92fa8f8 (diff) | |
| download | focaccia-qemu-65b847d284c1ab8a1dbd44d2b046e87e83ebb6e0.tar.gz focaccia-qemu-65b847d284c1ab8a1dbd44d2b046e87e83ebb6e0.zip | |
ui: Create sync objects and fences only for blobs
Create sync objects and fences only for dmabufs that are blobs. Once a fence is created (after glFlush) and is signalled, graphic_hw_gl_flushed() will be called and virtio-gpu cmd processing will be resumed. Cc: Gerd Hoffmann <kraxel@redhat.com> Signed-off-by: Vivek Kasireddy <vivek.kasireddy@intel.com> Message-Id: <20210914211837.3229977-4-vivek.kasireddy@intel.com> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Diffstat (limited to 'ui/gtk.c')
| -rw-r--r-- | ui/gtk.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/ui/gtk.c b/ui/gtk.c index 784a2f6c74..5105c0a33f 100644 --- a/ui/gtk.c +++ b/ui/gtk.c @@ -36,6 +36,7 @@ #include "qapi/qapi-commands-machine.h" #include "qapi/qapi-commands-misc.h" #include "qemu/cutils.h" +#include "qemu/main-loop.h" #include "ui/console.h" #include "ui/gtk.h" @@ -583,6 +584,18 @@ static void gd_gl_release_dmabuf(DisplayChangeListener *dcl, #endif } +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; +} + /** DisplayState Callbacks (opengl version) **/ static const DisplayChangeListenerOps dcl_gl_area_ops = { |