[Openicc] ICC Profiles In X Specification

Kai-Uwe Behrmann ku.b at gmx.de
Fri Oct 5 13:58:59 PDT 2007


Am 05.10.07, 22:09 +0200 schrieb Sven Neumann:

> 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

The spec says nothing about a default screen.

> spanning more than one screen, as typical in Xinerama multihead

Sorry. This is easily getting difficult. A root window may span miltiple 
monitors and contain a number of Xinerama screens, which are quite 
different handled than traditional screens. A screen has one root window 
associated. Thus a screen can contain multiple Xinerama screens but not 
the other way around.

> 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.

... or correcting to sRGB would be more appropriate for non sRGB images in 
a application.
 
> 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

You wite here about a Xinerama setup with one screen and one root 
window on it, spanning two monitors and running Xinerama on it to 
distinguish the two monitors.

No. Then _ICC_PROFILE contains the monitor 0 profile and _ICC_PROFILE_1 is 
not set. The spec says the _ICC_PROFILE name is followed by a underscore 
and the Xinerama screen number for Xinerama screens starting with 
Xinerama screen number one. This implies Xinerama screen number zero has 
no underscore and 0, thus performing compatibility with revision 0.1 of 
the spec for single monitor setups.

I am afraid the spec is not clear about the term screen versus Xinerama 
screen.

> 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.

Well, this ambiguity is handled by the spec revision 0.2. Multi monitor 
setups where not an issue at all in revision 0.1. So there is no question 
about to support v0.1 for multi monitor setups. It would not solve such a 
ambiguity.

> 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.

It would be interessting to know whether systems support the 
_ICC_PROFILE(_x) atom.
We had no discussion here on list about monitor calibration dialogs, 
scripts and the like in reality, except about the Oyranos project.
New implementations should avoid using spec revision 0.1 at all.
 
> I am probably just missing something or are misinterpreting the spec.
> Can anyone help?

Possibly the specification can include a _ICC_IN_X_VERSION atom to avoid 
such things in the future.

Thanks for bringing this up.


kind regards
Kai-Uwe Behrmann
--
developing for colour management 
www.behrmann.name + www.oyranos.org + www.cinepaint.org



More information about the openicc mailing list