83f8bfd2ca
When we are painting a stack of 5-10 maximized windows, the standard bottom-to-top method of drawing every actor results in a tremendous amount of overdraw and can easily max out the available memory bandwidth on a low-end* graphics chipset. It's even worse if window textures are being accessed over the AGP bus. When we have opaque windows, we can go ahead and compute visibility ourselves (in classic X-server fashion) and use that information to restrict drawing obscured actors. * Add MutterWindowGroup - a ClutterGroup subclass with logic for figuring out obscured regions. * Add mutter_window_get_obscured_region() to get the region obscured by that window. * Add mutter_shaped_texture_set_clip_region() to hint a clip region to the painting code; this is set based on the computed visible region of MutterWindowGroup. * Add tidy_texture_frame_set_needs_paint() to hint that the paint can be skipped entirely; this is used when we detect that the window shadow is entirely obscured. http://bugzilla.gnome.org/show_bug.cgi?id=587344 |
||
---|---|---|
.. | ||
compositor | ||
core | ||
include | ||
tools | ||
ui | ||
wm-tester | ||
.cvsignore | ||
default_icon.png | ||
libmutter-private.pc.in | ||
Makefile.am | ||
mutter-enum-types.c.in | ||
mutter-enum-types.h.in | ||
mutter-marshal.list | ||
mutter-plugins.pc.in | ||
mutter-wm.desktop.in | ||
mutter.desktop.in | ||
mutter.schemas.in | ||
run-mutter.sh | ||
stock_delete.png | ||
stock_maximize.png | ||
stock_minimize.png |