[Openicc] ICC Profiles In X Specification

Hal V. Engel hvengel at astound.net
Fri Oct 5 14:10:45 PDT 2007


On Friday 05 October 2007 13:09:21 Sven Neumann wrote:
> Hi,
>
> I am having a small problem interpretating the latest version of the
> ICC Profiles In X Specification as found on:
>
>  http://burtonini.com/computing/x-icc-profiles-spec-latest.html
>
> The spec suggests that the _ICC_PROFILE atom is set on the root window
> of the default (first) screen. It also says that for root windows
> spanning more than one screen, as typical in Xinerama multihead
> configurations, an atom for each screen is added holding the appropriate
> ICC profile. This property does not have to be set on every screen. When
> this property is not set on a screen, the screen is uncalibrated, and no
> colour correction for display should be done.
>
> OK, so let's assume we have two monitors, the primary one is calibrated,
> the secondary isn't. So we have _ICC_PROFILE and _ICC_PROFILE_1 set. If
> I want to determine the settings for the primary monitor, all is fine. I
> can query for _ICC_PROFILE_1 and be done with it. Now if the window is
> on the second monitor, I would query for _ICC_PROFILE_2 which is not
> set. Now since ICC_PROFILE is set, I can't tell whether the system
> supports revision 0.2 of the spec and wants no correction for this
> monitor or if it only implements revision 0.1 and _ICC_PROFILE should be
> applied to both monitors.
>
> How am I supposed to handle this? I could assume that one profile for
> both monitors is not a good idea and don't do color correction for the
> second monitor. But then consider the case where monitor one is
> uncalibrated. Since I also want to support systems that only implement
> revision 0.1 of the spec, I need to query for _ICC_PROFILE in case that
> _ICC_PROFILE_1 is unset. Since revision 0.2 requires that this is set, I
> can't tell if the primary monitor should be color corrected or not.
>
> I am probably just missing something or are misinterpreting the spec.
> Can anyone help?
>
>
> Sven

The cases you are pointing out are actually not very likely to happen in a 
real system.  Current X11 calibration software can in most cases calibrate 
and can always profile all devices in a multi-display setup.  And users with 
the necessary equipment are generally motivated to spend the time needed to 
calibrate and profile all of the display devices on their systems.

However there are still some setups that do not correctly support calibration 
of multiple displays.  Specifically Nvidia twinview and some mergefb setups 
can not be properly calibrated since it is not possible to set the video card 
gamma tables for each display device independently.  It is however still 
possible for users to profile the uncalibrated displays in such a system but 
I suspect that most users with the ability to create custom display profiles 
will avoid using twinview and merfb setups that can not be correctly 
calibrated.  For example, I use Xinerama rather than Twinview on my nvidia 
based system.  I do lose the ability to resize and rotate my displays but I 
would much rather have my displays properly calibrated.  When randr 1.2 and 
later is fully supported by our video drivers this will no longer be an 
issue. 

I also think there is some confusion in the terminology used in the spec.  
Specifically when it says "When this property is not set on a screen, the 
screen is uncalibrated.."   Even though many display profiles contain 
calibration information in the form of VCGT data the profile technically does 
not serve any function related to calibration other than possibly containing 
the calibration data for the device as a convince for users.   In addition, 
some calibration software like ArgyllCMS has the ability to generate and 
apply calibration data that is not embedded in a profile as VCGT data.  I 
think that particular sentence in the spec needs to have "uncalibrated" 
changed to "uncharacterized" to actually be correct.   In other words, even 
if this property is set the display could still be uncalibrated even though 
it has been characterized.  The existance of the profile atom simply does not 
tell us one way or the other if the device is calibrated.

In addition is this spec even implemented yet?

Hal



More information about the openicc mailing list