[RFC wayland-protocols v2 0/1] Color Management Protocol

Erwin Burema e.burema at gmail.com
Thu Mar 7 11:37:52 UTC 2019

Wed Mar 6 17:09:27 UTC 2019 Sebastian Wick :

> 2. The whole pipeline should look something like
>   [surface cs] -cs conversion-> [output cs] -tone mapping-> [output cs]
>    -degamma-> [output linear cs] -blending-> [output linear cs] -gamma->
>    [output cs].
>    Where some parts can be skipped if e.g. surface cs == output cs or
>    surface and output are SDR.

For expert/pro applications this is probably indeed the pipline
needed, the only thing that troubles me here is, is that there no
guarente that an output color space is well behaved so might still
contain some non-linearities or other issues after the degamma
process[1], so for non-expert/non-pro stuff that still cares to some
extent for color a better pipeline might be
[surface cs] -cs conversion-> [blending scene referred cs] -blending->
[blending scene referred cs] -tone mapping-> [blending output referred
cs] -cs conversion-> [output cs]
Of course since this requires two cs conversion steps this is not
ideal for anything pro but the only blending operation that is
guaranteed to be artifact free in output cs is bit blitting which is
not something we want to limit compositors to.

> ...

> 3. Do the standard color spaces actually improve anything? When the
>   compositor doesn't have to make them available to clients and they
>   can't rely on them being available, what's the point? Especially when
>   displays don't really support standard color spaces most of the time
>   (according to the EDID).

The point (to me at least) is that if a program uses one of the
default/standard color space we can mostly assume that they are not
extremely color critical and can use an intermediate blending space,
anything that renders directly to an output they are displayed on
should be considered color critical, in which case a compositor should
follow your proposed pipeline (maybe without degamma/gamma since we
should be bit blitting by then anyway). Now an alternative to this
might be to let programs set ICC profiles (RGB ones only of course) in
which case so long as it is not an output profile it should be fine to
use a blending space.

> ...

[1] If that is even possible, although if we run into that case we are
probably dealing with a cheap consumer monitor that someone has
calibrated/profiled to get the best out of it

Kind Regards,

Erwin Burema

More information about the wayland-devel mailing list