[Openicc] Questions about color pickers and graphics libraries under LINUX

Hal V. Engel hvengel at astound.net
Tue Feb 12 18:18:11 PST 2008


On Tuesday 12 February 2008 12:36:41 Bob Friesenhahn wrote:
> On Tue, 12 Feb 2008, Hal V. Engel wrote:
> > big plus for the open source community and it shows that we can lead the
> > way forward.   I don't think anyone here has much influence over what
> > Microsoft or Apple will do about this issue but we can have some
> > influence over what happens in the open source world.  Now we need to
> > work with the X.Org and various window manager/desktop environment teams
> > to get this issue handled on that level.
>
> In my opinion, color management for the display should be handled by
> the X11 server, video device driver, and video card GPU.  The X11
> server should know the nature of the display.  Applications should
> indicate what color space the image data is in, with a default of
> sRGB.  The X11 server should arrange to display the image data
> correctly based on the nature of the display and capability of the
> video card. It does not make sense for applications to need to
> transform the pixel values before passing them on to X11.
>
> Consider that if color management is in X11 and the interface to the
> display is 10-16 bits, then the X11 server can reasonably directly
> manage the color even if the original image is only 8 bits.  If the
> interface to the display is 8-bit, but it is possible to upload a LUT
> into the display, then the server can improve the display by uploading
> a correction LUT. Likewise, if the video card stores its images in an
> HDR format, then LDR images can be transparently converted to HDR by
> X11 (or its subordinate device driver & video card).
>
> Bob

I think for the most part that everyone here agrees with this in principle.

Your example of 8 bit source images on a high bit depth (and perhaps wide 
gamut) display is probably the most illuminating example since most 
applications other than those that are color management aware will 
effectively be doing everything in 8 bit sRGB (IE. not specifying a color 
space).  On a wide gamut display X11 would map these sRGB colors by way of a 
color transform into a smaller gamut than the displays full gamut in order to 
correctly display the application and it's contents.  Most applications would 
work perfectly well in this scenario and would need nothing else.  For 
example,  this would handle the browser example that Chris brought up very 
nicely.

The simple case of CM dumb applications being color managed as sRGB to the 
display color space should not be overly difficult to implement.  Although I 
don't think it would be trivial either.  But when you start adding things 
like applications being able to specify the color space and rendering intents 
for specific content (IE. specific parts of the display area to color manage 
differently) things become more difficult.  Not imposable mind you just more 
difficult.

As a starting point X11 needs to manage the video card LUT.  We can currently 
specify a per display ICC profile atom that X11 can track after this has been 
set after start up.  But this needs to be persistant so that X11 
automatically retains this information when it is restarted.   That is as a 
user I should be able to set this someplace and X11 should retain and use 
this information until it has been changed by the user.

In addition X11 should to be extended to have LUT loader functionality or at 
least to allow users to specify a LUT loader that X11 calls at start up or 
when ever the ICC profile atom is changed so that it not only keeps track of 
the profiles that have been setup but also automatically loads the video card 
LUTs when needed.  I would like to see this support both normal video card 
gamma tags in profiles and ArgyllCMS style calibration files.

As a user I would be happy with some new options in the xorg.conf file where I 
could specify the above items.   I also should add that this functionality 
would be fairly simple to implement and could conceiveably be in version 1.5 
or 1.6 of the X11 server.

On the other hand unlike the LUTs in video cards which are volatile the LUTs 
in LCD monitors appear to be persistant (if I am wrong about this please 
correct me).  So I don't think X11 has a role in this area since I think this 
should be handled by the monitor calibration software.  Unless you are also 
proposing that X11 should have monitor calibration functionality.   But I 
don't think this is what you had in mind.

What I am getting at is that X11 needs to work into being fully color managed 
in a systematic way by first supporting full management of the video card 
LUTs (this would actaully be a step up from what current versions of Windows 
Vista do in this area) and then later on putting in place basic sRGB to 
display color management with an opt out option for applications that are CM 
aware.  This would make X11 more advanced in this area than any other 
windowing system in existance.   Later still X11 could add hooks for CM aware 
applications to have control over content color space and rendering intent 
but with X11 handling the content to display color transformation functions.

Of course there are other CM related things that need work in X11 as well.  
For example we have had exchanges on this list as well as the xorg list about 
XV by passing the video card LUTs.  This and anything like this will need to 
be fixed at some point.

Hal


More information about the openicc mailing list