backends/drm: split commits for the cursor and primary planes
Instead of adding primary plane and cursor information to every single commit, with this MR there are cursor-only and primary-plane-only commits that are added to the commit list separately. When the commit thread picks a commit to present, it first moves all commits that are ready for committing to the front and merges all commits that can be merged. This way, even if the primary plane is not done rendering yet, cursor updates can still be done. This is also written in a generic way, so if we add overlay plane commits later that will also work without additional changes.
This is a recording of what happens with this MR and compositor-killer:
The cursor stays smooth, despite the rest of the screen being updated at only 3-4 fps.
cc #174 #124 (closed). Next goal after this: ensure that the compositor killer can't slow down KWin this much in the first place.