Re: [Gimp-developer] Why the endless background conversions between linear and regular sRGB TRC?



On 8/30/12, Jon Nordby <jononor gmail com> wrote:
> On 30 August 2012 01:01, Elle Stone <l elle stone gmail com> wrote:
>> Regarding sRGB and rendering to the screen:
>> Could you explain more about what you mean by "rendering to the screen
>> is done using sRGB"? What about the actual monitor profile?
>
> Cairo, the library used for rendering to the screen in GTK and GIMP
> expects its input as sRGB*. See app/display/gimpdisplayshell.c for
> example of how we use this library. The Babl format "cairo-ARGB32" is
> short for "R'aG'aB'aA u8": 8 bit unsigned integer gamma-corrected,
> pre-multiplied alpha. The LCMS plugin is used before this step to do
> the conversion with the actual monitor profile.

So if I understand what you are saying (I don't think I do):
First the lcms plugin converts the image to the actual monitor display profile.
Then "something" converts the image to sRGB and sends the image to Cairo?
And then Cairo sends the image to the screen?

I don't think that is what really happens. If it were happening, all
images displayed by Gimp would have a magenta color cast as displayed
on my monitor. And they don't. Perhaps Cairo just sends RGB numbers to
the screen (and doesn't care what these numbers "mean"), and Gimp is
sending the monitor profile RGB numbers to Cairo.

> * It is unclear to me how strict this expectation is as this is not
> documented anywhere in Cairo. Perhaps someone here can shed some more
> light?
>
>
> An RGB30 (10 bits per channel) image format was added in Cairo 1.12
> earlier this year. I don't know if any if the display backends used on
> Linux, Mac OSX or Windows handles this format yet. It could be the
> output it still clamped or converted to 8 bit per channel even on wide
> gamut displays. I highly suspect that would be the case on X11.

Bit depth and ICC profile color gamut are two different things. Bit
depth determines how many steps to get from min to max. For example,
8-bits gives you 255 steps to get from solid green (0,255,0) to solid
yellow (255,255,0). 10 bits gives you 1023 steps to cross the same
distance. But the "meaning" of solid green and solid yellow is
determined by where the monitor profile (or any other ICC profile)
locates solid green and solid yellow in an reference space (profile
connection space) such as XYZ or Lab space.

Kind regards,
Elle


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]