Draft: backend/drm: Allow nonblocking backend commits
This revisits nonblocking modesets using backend-wide commits. Depends on the compositor clearing any pending page flip handlers to have any effect - https://github.com/swaywm/sway/pull/8401 for sway. Experimental.
The primary issue with nonblocking modeset commits is that drivers may need to perform global resource allocations that implicitly add additional objects to the commit without informing user-space. This means that the compositor ends up failing on EBUSY or getting spurious pageflip events for these additional CRTCs.
This is not an issue if we are committing all possible CRTCs without any pageflip already being pending.
Enable nonblock for backend wide commits when the atomic interface is in use an no pageflips were pending.
- Prior attempt: !4377 (merged)
- Revert: !4390 (merged)
- Example issue: #3745
- IRC discussion: https://oftc.irclog.whitequark.org/dri-devel/2023-10-11#1697031838-1697036920;