Upload HW cursor sprite on-demand
These commits work towards the end goal of only uploading HW cursors to the GPU where it'll be displayed. Not doing this causes unnecessary wake-ups on GPU's where a cursor is not shown which in the worst case will cause visible stuttering.
The series contains various related cleanups, and is split in three parts:
- Restructure MetaCursorSprite into separate types
- Let the cursor renderer be the one realizing MetaCursorSprites no matter the type
- Realize MetaCursorSprite only on the GPUs a cursor will be visible on (not including various clean ups that were done as part of the series)
This has some side effects we can't get around:
- Wayland buffers will not be released until the next
wl_surface.commit
- HW cursors are uploaded immediately before being rendered, instead of just after being created/set