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>
This commit is contained in:
		
							parent
							
								
									015e02f880
								
							
						
					
					
						commit
						c540128f93
					
				@ -934,8 +934,14 @@ static void virtio_gpu_gl_block(void *opaque, bool block)
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    VirtIOGPU *g = opaque;
 | 
					    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);
 | 
					        virtio_gpu_process_cmdq(g);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -107,7 +107,7 @@ typedef struct VirtIOGPU {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    bool use_virgl_renderer;
 | 
					    bool use_virgl_renderer;
 | 
				
			||||||
    bool renderer_inited;
 | 
					    bool renderer_inited;
 | 
				
			||||||
    bool renderer_blocked;
 | 
					    int renderer_blocked;
 | 
				
			||||||
    QEMUTimer *fence_poll;
 | 
					    QEMUTimer *fence_poll;
 | 
				
			||||||
    QEMUTimer *print_stats;
 | 
					    QEMUTimer *print_stats;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user