Draft: backend/drm: retry drm commit when async commit fails
Asynchronous commits can fail due to property changes, but only if they change in value. However, since the commit failed, the compositor will continue to retry, failing each time. Fall back to synchronous commit on async error, which should kickstart the properties changes. Typically, this is cursor plane FB_ID changes whenever the compositor or game changes the cursor image, and without this fallback, it will continue to queue the FB_ID change, breaking commits until async is disabled, such as by task switching away from the async hinted app. The existing kernel- side no-op check will not work if the initial property change never goes through. This breaks the cycle.
Signed-off-by: Christopher Snowhill kode54@gmail.com
--
Please test and make sure that tearing is still working, and that this isn't just forcing synchronized flips perpetually. Feel free to use the Arch User Repository package, wlroots-git
or wlroots-hidpi-xprop-git
, as the case may be. And combine with my labwc AUR package, labwc-wlroots-018-git
. This also removes the WLR_DRM_NO_ATOMIC
check from labwc, so you may use the allowTearing setting with atomic modesetting.