Make culling actually cull (it didn't before)
meta_shaped_texture_paint_content was being called on all windows
including those fully obscured and meant to be culled. It seems the
culling test in meta_surface_actor_paint is ineffective because we
don't actually use paint for painting. We use ClutterContent instead.
The difficulty with ClutterContent is that it gets painted before
the actor's paint vfunc, and even before pre_paint. So to actually
make culling work we need go up to the parent object (a MetaWindowActor)
and enforce the culling there. So now meta_shaped_texture_paint_content
is not called for culled windows.
Performance measurements on an i7-7700 at UHD 3840x2160:
Dragging a small terminal window over 8 maximized terminal windows:
Before: 30 FPS, 23 ms/frame
After: 60 FPS, 5 ms/frame
Maximized glxgears over 8 maximized terminal windows:
Before: 15 FPS, 50 ms/frame
After : 60 FPS, 6 ms/frame
Closes: #1295 (closed)
Also recommended: !1323 (merged)