CM&HDR implementation roadmap
This is a rough plan on how the Weston implementation for color management and HDR support will be upstreamed. The upstreaming is split into two major phases:
- Features that can be implemented without any protocol extensions by assuming that client content is always standard sRGB.
- Implementing CM&HDR protocol extension and follow-up work.
There is an earlier plan at #348.
The CM&HDR protocol development is tracked at wayland-protocols!14.
This plan is likely incomplete and I try to keep it updated.
Features without explicit CM&HDR protocol:
- Output damage test. (!529 (merged))
- Prepare GL-renderer to be able to deal with dozens of GLSL shader variants and introduce a floating-point shadow framebuffer. (!132 (merged))
- Polish existing GLSL code and implement shader garbage collection. (#462 (closed), !552 (merged))
- Framework for color management modules, with a no-op module for no color management.
- Gamma-correct blending.
Color management module using LittleCMS, color transformation support in GL-renderer, using sRGB input and output profiles.
- 3D LUT for the general case.
- Special cases:
- Identity transformation.
- Parametric transformation?
- Stop KMS planes from being used with client buffers when color management is on.
- Ability to set per-output ICC profiles and use them to convert sRGB content to monitor-specific colorspace. Not just VCGT but using the actual monitor color profile.
- Compositor fallback rendering intent configuration.
- Optionally use EDID colorimetry information to manufacture a monitor color profile for an output (not HDR).
- Extract monitor HDR properties from EDID etc.
- Experimental option to set a monitor into HDR mode in DRM-backend.
- sRGB SDR to monitor HDR conversion in terms of LittleCMS operations.
- HDR brightness and black level controls.
Features with CM&HDR protocol extension:
- Basic protocol mechanisms for SDR.
- Protocol test client.
- Handle SDR client content color profiles, replacing the assumed sRGB profile.
- Handle client render intent, alpha mode, full/limited range, etc.
- SDR color management implemented without monitor profile measurement support.
- Handling client HDR content:
- Basic protocol.
Convert HDR metadata into LittleCMS operations.
- Client HDR to monitor HDR.
- Client HDR to monitor SDR.
- PQ encoded content.
- HLG encoded content.
- Offload post-blending EOTF^-1 to KMS hardware.
- Allow using KMS planes with client buffers when KMS features are sufficient.
- Support for monitor profile measurement (needs protocol).