Introduce wlr_raster
Incorporates some ideas from: #3450
This PR is a big step forward in terms of multigpu as we are removing assumptions about what renderers might be used. For now, multigpu is handled completely by the backend in which case wlr_raster
leaves that all alone. Future plans will lift responsibility away from backends for multigpu and allow for different renderers to run on different outputs so that we can stop doing the worst possible thing: Funneling everything through an arbitrary GPU for compositing then blitting every frame for other outputs.
This PR makes no breaking changes. Compositors that continue to pass a renderer into wlr_compositor can continue to use wlr_client_buffer until its removal. This PR introduces a new abstraction called wlr_raster
that creates an interface wlr_raster_from_surface
that can be called on a wlr_compositor without a renderer.
This replaces a hack for wlr_scene partial texture upload.