Deprecate and remove cms-static and cms-colord Weston plugins
Weston (not libweston) has two legacy color management related plugins: cms-static and cms-colord.
These two plugins are for supporting the X11 style of color management: the job of the display server is to program the gamma LUT into hardware, and all actual color processing happens in applications (if at all). cms-static loads the ICC file named in weston.ini
and cms-colord finds an ICC file through colord D-Bus API. They both extract only the VCGT tag from the profile, and tell libweston to load that table into hardware.
This mode of operation is incompatible with the new Wayland color management being planned in wayland-protocols!14. In the new design, a Wayland compositor loads the output ICC profile and is also responsible for the actual color processing which depends on what Wayland clients say about how they use color (Wayland clients still have the option to do the color processing themselves, too). The VCGT tag, when it exists, is still used by the compositor, but the compositor also does more.
The incompatibility arises from implementation details. Libweston's new color manager, color-lcms, already supports loading ICC files for outputs. The color manager architecture defines APIs for how hardware color pipeline is programmed through KMS. The new API conflicts with the old set_gamma API. The old API needs to be removed, which will break cms-static and cms-colord.
One option would be to change cms-static and cms-colord to use the color manager API to load the ICC files they discover. However, this will likely be a change in behavior because as said, in the new design the compositor does more than just VCGT. That could be seen as a breaking change too. Furthermore, color-lcms has higher requirements (OpenGL features and renderer performance) than the old set_gamma.
When color-lcms is in use, a compatible way of loading ICC files through weston.ini
is already implemented. Furthermore it is unclear what role colord will have in the new color management architecture, so fetching monitor ICC profiles from colord may not be useful.
Therefore I propose to deprecate right now, and immediately after the release of libweston 11 to remove cms-static and cms-colord plugins. This allows to garbage-collect the old set_gamma API.
My assumption is that these two plugins have no users, and the deprecation process is the way to find out if that's true.
If these plugins have users who cannot migrate to the new color management design e.g. due to performance reasons or because the new color management architecture is not fully implemented yet, I believe it would be possible to find a way to keep these plugins working as long as color-lcms is not in use.