summaryrefslogtreecommitdiff
path: root/hw/display
diff options
context:
space:
mode:
authorMarc-André Lureau <marcandre.lureau@redhat.com>2016-06-14 15:44:07 +0200
committerGerd Hoffmann <kraxel@redhat.com>2016-07-06 10:32:14 +0200
commitc540128f93e17141c63d41a8eb77bde80a2fc752 (patch)
tree852cc607a6c66a4889b9bdfae3b907c49331b1b1 /hw/display
parent015e02f88071cfedd6bc6f910af5a388462aec6b (diff)
downloadqemu-c540128f93e17141c63d41a8eb77bde80a2fc752.tar.gz
virgl: count the calls to gl_block
In virgl_cmd_resource_flush(), when several consoles are updated, it needs to keep blocking until all spice gl draws are done. This fixes an assert() in spice when using multiple monitors with virgl. Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Message-id: 1465911849-30423-2-git-send-email-marcandre.lureau@redhat.com Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Diffstat (limited to 'hw/display')
-rw-r--r--hw/display/virtio-gpu.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/hw/display/virtio-gpu.c b/hw/display/virtio-gpu.c
index 136c095b7d..f8b0274752 100644
--- a/hw/display/virtio-gpu.c
+++ b/hw/display/virtio-gpu.c
@@ -934,8 +934,14 @@ static void virtio_gpu_gl_block(void *opaque, bool block)
{
VirtIOGPU *g = opaque;
- g->renderer_blocked = block;
- if (!block) {
+ if (block) {
+ g->renderer_blocked++;
+ } else {
+ g->renderer_blocked--;
+ }
+ assert(g->renderer_blocked >= 0);
+
+ if (g->renderer_blocked == 0) {
virtio_gpu_process_cmdq(g);
}
}