aboutsummaryrefslogtreecommitdiff
path: root/hw/display/virtio-gpu-base.c
diff options
context:
space:
mode:
authorMarc-André Lureau <marcandre.lureau@redhat.com>2021-03-11 12:11:37 +0400
committerMarc-André Lureau <marcandre.lureau@redhat.com>2021-12-21 10:50:21 +0400
commitf6413cbfd0b3a3f85ebaf9fe13494af1dad916bb (patch)
tree89ce165cccf3618b10703f2b01c20047ea63b17f /hw/display/virtio-gpu-base.c
parenta9b1e471e1783a1d7ae9215f9b8adc7cdb053367 (diff)
downloadqemu-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.c5
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