Add a watchdog to the DRM backend that will recover Weston, if the DRM page flip events stop coming.
Weston relies on those events, and will normally not repaint until the previous update has been acked. However, on buggy DRM drivers, and now that we are getting closer to the universal planes and atomic mode setting and page flipping framework, it is quite likely that some drivers are sometimes buggy. Recovering from buggy drivers while still clearly signalling the failure should help developers in testing their drivers.
How to recover?
- gracefully quit Weston with an error
- fall back to immediate, timer throttled display updates (drmModeSetCrtc / drmModePageFlip without events) and hope it works
Need to take care to not cause the watchdog to trigger during e.g. VT-switched away, or during high load.
Those patches were sent to wayland-devel and now need review :
[WESTON PATCH 1/2] compositor: Return a user-defined exit code
[PATCH weston v3 2/2] compositor-drm: Watchdog timer implementation
I sent an updated and improved version of this patch to wayland-devel, rebased against master.
Please review: https://patchwork.freedesktop.org/patch/131766/
Author: Emmanuel Gil Peyrot <email@example.com>
Date: Tue Mar 7 13:27:54 2017 +0000
compositor-drm: pageflip timeout implementation