Skip to content
  • Alon Levy's avatar
    81fb6f15
    qxl: make qxl_render_update async · 81fb6f15
    Alon Levy authored
    
    
    RHBZ# 747011
    
    Removes the last user of QXL_SYNC when using update drivers that use the
    _ASYNC io ports.
    
    The last user is qxl_render_update, it is called both by qxl_hw_update
    which is the vga_hw_update_ptr passed to graphic_console_init, and by
    qxl_hw_screen_dump.
    
    At the same time the QXLRect area being passed to the red_worker thread
    is passed as a copy, as part of the QXLCookie.
    
    The implementation uses interface_update_area_complete with a bh to make
    sure dpy_update and qxl_flip are called from the io thread, otherwise
    the vga->ds->surface.data can change under our feet.
    
    With this patch sdl+spice works fine. But spice by itself doesn't
    produce the expected screendumps unless repeated a few times, due to
    ppm_save being called before update_area (rendering done in spice server
    thread) having a chance to complete. Fixed by next patch, but see commit
    message for problem introduced by it.
    
    Signed-off-by: default avatarAlon Levy <alevy@redhat.com>
    Signed-off-by: default avatarGerd Hoffmann <kraxel@redhat.com>
    81fb6f15
    qxl: make qxl_render_update async
    Alon Levy authored
    
    
    RHBZ# 747011
    
    Removes the last user of QXL_SYNC when using update drivers that use the
    _ASYNC io ports.
    
    The last user is qxl_render_update, it is called both by qxl_hw_update
    which is the vga_hw_update_ptr passed to graphic_console_init, and by
    qxl_hw_screen_dump.
    
    At the same time the QXLRect area being passed to the red_worker thread
    is passed as a copy, as part of the QXLCookie.
    
    The implementation uses interface_update_area_complete with a bh to make
    sure dpy_update and qxl_flip are called from the io thread, otherwise
    the vga->ds->surface.data can change under our feet.
    
    With this patch sdl+spice works fine. But spice by itself doesn't
    produce the expected screendumps unless repeated a few times, due to
    ppm_save being called before update_area (rendering done in spice server
    thread) having a chance to complete. Fixed by next patch, but see commit
    message for problem introduced by it.
    
    Signed-off-by: default avatarAlon Levy <alevy@redhat.com>
    Signed-off-by: default avatarGerd Hoffmann <kraxel@redhat.com>
Loading