modesetting is done on first run with mode=current
Hi,
Some betas ago, Weston started to do modesetting (ie: blanking the screen to do a full modeset) even with mode=current
in weston.ini
.
That's because there's this general misconception that setting max_bpc
does not need a full modeset, but it does, so setting max_bpc has propagated from WLRoots to Weston (or is it the opposite?) and is now being done unconditionally in Weston, too.
As a temporal fix for my own builds, removing this call prevents modesetting (screen blanking on Weston's first launch after a reboot):
https://gitlab.freedesktop.org/wayland/weston/-/blob/main/libweston/backend-drm/kms.c#L994
TAKE INTO ACCOUNT that, once set, max_bpc on a connector is kept between Wayland compositor runs, so a reboot is needed to see the unnecessary screen blanking and again to see it solved.
In a nutshell: max_bpc
should NOT be set if mode=current
, because mode=current
assumes no modesetting will be done and setting max_bpc
requires a full modeset.
Just in case: tested on VC4 and AMDGPU, and both DRM kernel drivers require a full modeset for setting max_bpc
, so this is not happening on some exotic kernel driver.
Thanks