[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