Backing store heuristics for improving windows dragging performance
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: Siarhei Siamashka <siarhei.siamashka@gmail.com>
src/backing_store_tuner.c
0 → 100644
src/backing_store_tuner.h
0 → 100644
Please register or sign in to comment