backend-drm: move mode parsing to frontend and add fallback mode
This is a continuation of !1254 (closed), but as the implementation has completely changed, I decided to open a new merge request and close the old one.
The merge request moves the parsing of an output mode from the drm-backend to the frontend and introduces a new struct for representing modelines. This struct drm_modeline
is a significant part of the API, and especially I'd like to get feedback on that struct if I am missing anything important there.
In the end, the new API is used to implement the same fallback-mode
functionality in the weston.ini
that I proposed in !1254 (closed) to handle outputs with broken or invalid EDID.
Furthermore, the new API may be used to present a list of detected modes (including the modeline) to the user. This would allow adding a UI for selecting a mode at runtime in the future.