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 |
||
---|---|---|
.. | ||
plugins | ||
tidy | ||
compositor-private.h | ||
compositor.c | ||
mutter-module.c | ||
mutter-module.h | ||
mutter-plugin-manager.c | ||
mutter-plugin-manager.h | ||
mutter-plugin.c | ||
mutter-shaped-texture.c | ||
mutter-shaped-texture.h | ||
mutter-window-group.c | ||
mutter-window-group.h | ||
mutter-window-private.h | ||
mutter-window.c | ||
README | ||
shadow.c | ||
shadow.h |
Intro ===== Fix me. Env Vars ======== MUTTER_DISABLE_MIPMAPS - set to disable use of mipmaped windows.