Display colorsync profile remains unapplied?

Chris Murphy lists at colorremedies.com
Tue Mar 20 22:37:23 PDT 2007


On Mar 21, 2007, at 12:48 AM, Christopher Hunt wrote:


> It is my application which is heavily OpenGL based using Cocoa as a  
> shell (NSOpenGLView). No specific colour profile management going  
> on within the app.

OK well you don't get color management for free with the OS. If  
you're using Quartz, you have to specify a source profile for the  
data to display, and most vendors use (incorrectly) the current  
display profile, which then causes a null transform to occur and no  
color management. If you're using only OpenGL, I'm not sure if OpenGL  
is even remotely aware of what ICC profiles are. If it is, you  
probably have to explicitly tell it what color space to use as source  
(something other than the display profile) and as destination  
(display profile).

So it's virtually certain that the display profile is not affecting  
anything in your application. Any change you see on screen is  
strictly due to the Display Manager seeing the vcgt tag in the  
various display profiles you pick, and are applying the curve in that  
tag to the the LUT in the video cards. Unless there's some bug  
somewhere, the two LUTs in the card for the display is set the same  
since you have set the same profile for both displays. And so chances  
are the two displays just behave differently.

You either need to compel the two devices to behave the same somehow,  
or use an application such as the Default Calibrator to make tone  
adjustments (per channel perhaps) to make the two LUTs different and  
thereby compel two different displays to behave closer to each other.  
Ultimately, if their RGB primaries are simply different, tone  
correction won't be enough, you'll have to do color space transforms.  
To do that, you need to know the primaries for the two displays and  
the tone response for each channel for each display - i.e. build an  
ICC display profile for each display based off actual display  
behavior. That's easy enough to do. Getting OpenGL to use them may  
not be.

Now, you could cheat a little and tell your app to use no  
transformation for display 1; but to use display profile 1 as source  
and display profile 2 as destination for display 2 (transformation).  
Ideally you'd plot the gamut of both displays and find the one that's  
the lowest common denominator and make that the display that gets no  
transform since the display with the larger gamut can more  
effectively simulate the display with smaller gamut.


Chris Murphy
Color Remedies (TM)
New York, NY
----------------------------------------------------------------------
Co-author "Real World Color Management, 2nd Ed"




More information about the MacOSX-admin mailing list