nir: Remove sRGB colorspace conversion round-trip.
authorMatt Turner <mattst88@gmail.com>
Mon, 18 May 2015 21:59:13 +0000 (14:59 -0700)
committerMatt Turner <mattst88@gmail.com>
Fri, 22 May 2015 18:26:36 +0000 (11:26 -0700)
commit5614bcc416cf2ff1d816d52198e644565ca23bcd
tree41e8a8e7e8b0981d3f44eca5f316e9bf082b7d2e
parenta21d23e191696ca130fd63617b8d177055b73dda
nir: Remove sRGB colorspace conversion round-trip.

Some shaders in Civilization V and Beyond Earth do

   pow(pow(x, 2.2), 0.454545)

which is converting to and from sRGB colorspace.

A more general rule that replaces pow(pow(a, b), c) with pow(a, b * c)
actually regresses two shaders in Sun Temple in which the result of the
inner pow is used twice, once by another pow and once by another
instruction. Also, since 2.2 * 0.454545 isn't exactly one, the more
general pattern would have still left us with a pow, and I'm 2.2 *
0.454545 percent sure that's not what they want.

instructions in affected programs:     934 -> 886 (-5.14%)
helped:                                16
src/glsl/nir/nir_opt_algebraic.py