[Pixman] sRGB processing for pixman

Bill Spitzak spitzak at gmail.com
Mon Jun 11 14:18:28 PDT 2012

Antti S. Lankila wrote:

> I do want to point out one advantage of using, say gamma=2.2 in lieu of 
> the actual sRGB formulas in some situations: exponentiation permits 
> separate treatment of alpha and color components. For instance
> (component * alpha)^2.2
> is just
> component^2.2 * alpha^2.2
> and this comes into play when library users read in, say, PNG, and see 
> some alpha values and prepare that texture for pixman. In the past, they 
> would have multiplied the components by alpha (I imagine), but now they 
> must only raise the alpha to 2.2 first before the texture is ready for 
> consumption by pixman. However, full sRGB formula requires:
> lin2srgb(srgb2lin(c) * a)
> which will be far more work to implement, and the results aren't going 
> to be any different in practice.

Even if you use lookup tables and implement the linear portion of sRGB, 
I think it is close enough to a gamma curve that you can pretend the 
function is communative/additive. I would simplify composite 
calculations by assuming

	srgb2lin(a*b) == srgb2lin(a)*srgb2lin(b)

even though this is not true.

More information about the Pixman mailing list