• Siarhei Siamashka's avatar
    Backing store heuristics for improving windows dragging performance · f5501ff1
    Siarhei Siamashka authored
    
    
    This patch implements a heuristics, which enables backing store for some
    windows. When backing store is enabled for a window, the window gets a
    backing pixmap (via automatic redirection provided by composite extension).
    It acts a bit similar to ShadowFB, but for individual windows.
    
    The advantage of backing store is that we can avoid "expose event -> redraw"
    animated trail in the exposed area when dragging another window on top of it.
    Dragging windows becomes much smoother and faster.
    
    But the disadvantage of backing store is the same as for ShadowFB. That's a
    loss of precious RAM, extra buffer copy when somebody tries to update window
    content, potentially skip of some frames on fast animation (they just do
    not reach screen). Also hardware accelerated scrolling does not currently
    work for the windows with backing store enabled.
    
    We try to make the best use of backing store by enabling backing store for
    all the windows that are direct children of root, except the one which has
    keyboard focus (either directly or via one of its children). In practice this
    heuristics seems to provide nearly perfect results:
     1) dragging windows is fast and smooth.
     2) the top level window with the keyboard focus (typically the application
        that a user is working with) is G2D accelerated and does not suffer from
        any intermediate buffer copy overhead.
    Signed-off-by: default avatarSiarhei Siamashka <siarhei.siamashka@gmail.com>
    f5501ff1
fbdev.c 37.1 KB