Do not fallback DisplayLink screens to 1 FPS when running in primary mode
This MR is addressing issue #1028 (closed) This MR is fixing running feature originally added by commits:
- 7ade8ba1 (ms_covering_crtc: Allow calling on non modesetting Screens )
- d8e05c04. (Fall back to primary crtc for vblank for drawables on slave outputs )
Recently it was improved by a set of commits:
- 3ef9029a (Fix ms_covering_crtc() segfault with non-modesetting slave primary )
- 562c7888 (Implement ms_covering_randr_crtc() for ms_present_get_crtc()) Since the original implementation was crashing when slave output is driven by non-modesetting driver. Unfortunately that change regressed DisplayLink screens in scenario where laptop lid is closed. As it stood out quite alot of users are using that mode. The regression is caused by valid reasoning that since we are not sure if slave output is driven by modesetting driver it is better to return NULL crtc and fallback to 1FPS then crash.
This MR is improving that recent change so I believe it should cover all cases. The main fix is in first commit, the other two that are optional are just removal of in my opinion duplicated function ms_covering_xf86_crtc covered by ms_covering_randr_crtc.
I hope this is enough of description for the start, i am willing to discuss it further if needed.
MR was tested on intel only based machine and intel-nvidia machine using both xserver-xorg-video-nouveau and xserver-xorg-video-nvidia-440 DDX drivers. Tests with AMD only machine will finish next week.