Draft: scene: skip rendering nodes hidden behind other nodes

Simon Ser requested to merge emersion/wlroots:scene-skip-hidden into master

If a scene-node is hidden completely behind another opaque node, no need to render it, we can skip it.

To achieve this, iterate over all the nodes from the closest to the eye to the farthest. Maintain a clip region originally set to the damage region (ie. what needs to be repainted). Iteratively subtract the opaque regions from the clip region and skip nodes which don't intersect. Once the paint list is built, iterate over it in reverse order (ie. farthest from the eye to closest) and render as usual.

Closes: #3144 (closed)

Edited by Simon Ser

Merge request reports