Optimise plane-suitability calculation in DRM backend
At the moment, for every view, we spend a great deal of time building and sorting a per-plane list, then filtering it, then for every plane doing suitability checks to make sure we can place it.
A lot of this can be cached and coalesced, so we can spend less time doing pointless individual tests. As a result, it makes the code slightly easier to follow.
Part of the goal of this reorganisation is to spread paint nodes wider, so we can reuse + cache + cull them.
Edited by Daniel Stone