Skip to content

backends/drm: port cursors to atomic

Xaver Hugl requested to merge work/atomic-cursor into master

The cursor being set out-of-band with atomic commits creates problems because it can create false positive for atomic tests, if the cursor state gets changed in between an atomic test and its matching commit. This commit also ports the cursor to a swapchain instead of only one image. This is not strictly required but may prevent artifacts and will be needed for future optimisations.

There is one caveat to this MR: with atomic, if the driver doesn't support cursors with a linear format, then we fall back to soft cursors. I don't think that's too bad though, all current hardware uses linear for cursors AFAIK, and this problem will be solved with proper use of universal planes in the future.

It would likely be good is to put the cursor stuff from DrmCrtc back into DrmPipeline as well, but I think that should be done separately, in combination with splitting all the legacy stuff out of drm_pipeline.cpp into a separate file.

Required for !1678 (merged) to be reliable

Merge request reports