Implement scaled/transformed hardware cursors

Merged Robert Mader requested to merge rmader/mutter:hardware-cursors into master

This series implements the ability to scale and transform cursor images with cairo, allowing us to use hardware cursors on monitors that are rotated or fractionally scaled, reducing repaints of the shell.

We now only fall back to the software/gl cursor if the cursor is visible on multiple monitors with different scales/transforms (so usually only for a few frames when the cursor is moving over the boundary of two monitors).

Tested in a two-monitor setup using various combinations of scales/transforms, with and without scale-monitor-framebuffer, using CLUTTER_SHOW_FPS=1

Required for !344 (merged)

Edited by Robert Mader

Merge request reports