diff options
author | Marc-André Lureau <marcandre.lureau@redhat.com> | 2021-03-11 12:11:37 +0400 |
---|---|---|
committer | Marc-André Lureau <marcandre.lureau@redhat.com> | 2021-12-21 10:50:21 +0400 |
commit | f6413cbfd0b3a3f85ebaf9fe13494af1dad916bb (patch) | |
tree | 89ce165cccf3618b10703f2b01c20047ea63b17f /hw/display/virtio-gpu-base.c | |
parent | a9b1e471e1783a1d7ae9215f9b8adc7cdb053367 (diff) | |
download | qemu-f6413cbfd0b3a3f85ebaf9fe13494af1dad916bb.zip qemu-f6413cbfd0b3a3f85ebaf9fe13494af1dad916bb.tar.gz qemu-f6413cbfd0b3a3f85ebaf9fe13494af1dad916bb.tar.bz2 |
ui: simplify gl unblock & flush
GraphicHw.gl_flushed was introduced to notify the
device (vhost-user-gpu) that the GL resources (the display scanout) are
no longer needed.
It was decoupled from QEMU own gl-blocking mechanism, but that
difference isn't helping. Instead, we can reuse QEMU gl-blocking and
notify virtio_gpu_gl_flushed() when unblocking (to unlock
vhost-user-gpu).
An extra block/unblock is added arount dpy_gl_update() so existing
backends that don't block will have the flush event handled. It will
also help when there are no backends associated.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Acked-by: Gerd Hoffmann <kraxel@redhat.com>
Diffstat (limited to 'hw/display/virtio-gpu-base.c')
-rw-r--r-- | hw/display/virtio-gpu-base.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/hw/display/virtio-gpu-base.c b/hw/display/virtio-gpu-base.c index c8da480..fff0fb4 100644 --- a/hw/display/virtio-gpu-base.c +++ b/hw/display/virtio-gpu-base.c @@ -117,6 +117,10 @@ virtio_gpu_gl_block(void *opaque, bool block) g->renderer_blocked--; } assert(g->renderer_blocked >= 0); + + if (!block && g->renderer_blocked == 0) { + virtio_gpu_gl_flushed(g); + } } static int @@ -143,7 +147,6 @@ static const GraphicHwOps virtio_gpu_ops = { .text_update = virtio_gpu_text_update, .ui_info = virtio_gpu_ui_info, .gl_block = virtio_gpu_gl_block, - .gl_flushed = virtio_gpu_gl_flushed, }; bool |