]> git.proxmox.com Git - mirror_qemu.git/blobdiff - hw/display/virtio-gpu.c
virtio-gpu: delay virglrenderer reset when blocked.
[mirror_qemu.git] / hw / display / virtio-gpu.c
index 4dbf48e42482bf71a2ffae7dc2079abf1b5e63ee..fbd8d908ad322594f4a9d517509588df26cbb914 100644 (file)
@@ -1084,6 +1084,12 @@ static void virtio_gpu_gl_block(void *opaque, bool block)
     assert(g->renderer_blocked >= 0);
 
     if (g->renderer_blocked == 0) {
+#ifdef CONFIG_VIRGL
+        if (g->renderer_reset) {
+            g->renderer_reset = false;
+            virtio_gpu_virgl_reset(g);
+        }
+#endif
         virtio_gpu_process_cmdq(g);
     }
 }
@@ -1368,7 +1374,11 @@ static void virtio_gpu_reset(VirtIODevice *vdev)
 
 #ifdef CONFIG_VIRGL
     if (g->use_virgl_renderer) {
-        virtio_gpu_virgl_reset(g);
+        if (g->renderer_blocked) {
+            g->renderer_reset = true;
+        } else {
+            virtio_gpu_virgl_reset(g);
+        }
         g->use_virgl_renderer = 0;
     }
 #endif