[Nexus 5 Original Android Development] rajendra82:
Gamma should not be affected by register 1. It is near the maximum brightness, and that is not the portion of the curve influenced by gamma. A few dozen pages back there was a link to a good resource about gamma, and how it is corrected. It is a power correction applied to normalized intensity (between zero and one), and every power of one is one and every power of zero is zero so a gamma correction does not change the ends of the color curve, only the middle. Changing register 10 and 11 should have an effect on gamma, as they are very close to the midpoint (which should be between 12 and 13 by my estimation). That being said, I don't think you want to only be changing one register by a lot, without also changing those next to it. This will cause colors to not be smoothly changing from one point to next.

Based on your questions, I don't think you quite yet grasp what these registers actually do, and to be honest I am not 100% sure either, but here is how I think they work. Let's say you have a color to be displayed full white (FFFFFF) for example. On an uncorrected display full white means don't apply any voltage to the LCD panel for any of the subpixels. This basically relaxes them and allows the back light to just shine through the color filters in front. Since the color of the filters is fixed, the green light in such a condition won't get any greener, the blue light won't get any bluer, and the red light won't get any redder. If we had a true professional grade display, the red filter would be the reference shade of red, the green would be the reference shade of green, and the blue would be the reference shade of blue. When you mix the three reference shades of primary colors, you get a reference neutral white with a color temperature of 6400K.

But we don't have a professional grade panel, we have a consumer grade panel. Since a 6400K white is perceived as less bright than a bluer white with a higher color temperature (which is called cooler against intuition), manufacturers have been pushing the color temperature higher and higher. This is done because when you see two similar phones, TVs, monitors, or other displays next to each other, you're more likely to buy the one that you perceive to be brighter, although the color of the one you chose is actually less accurate than the one you didn't. What that means is that the blue and green color filters in our panel, just like most consumer panels, are lighter in shade than the reference green and blue, and when showing a white, with fully relaxed subpixels, it actually lets relatively less red light, and relatively more blue and green light out than the reference shade of white requires. Since Google can't push the red light any more than maximum to neutralize the whites, because the red light is limited by the shade of the filter we have, they fixed it in software by holding the green and blue subpixels back. When the panel is told to display full white, this software layer intervenes, and doesn't let the green and blue liquid crystals fully relax. Some of the green and blue light is now blocked, and the shade of color shown to you is a neutral white, but not the most light that the display can let through. How much light for each color to hold back is what the register defines, and each register affects the value of each color at a different intensity level. This is what I mean by raw intensity. What the insanity profile attempts to do is simple. It lets all the green and blue light shine through when displaying fullbright colors and full white. Hold nothing back, boost nothing, and show what the panel can do is the name of the game here. Same thing is done for every level in between, all the way down to zero with the amount of light allowed to shine through is what the raw intensity is.

I am not sure what you mean by the color balance is good. Even with the naked eye, I can tell that the green and blue are at way higher levels than red, and looking through the filters tells the story. The fulbright green looks lighter through the filter than the fullbright yellow because more light is coming through green subpixels. On a balanced color temperature display they would look the same through the filter, and the displayed whites would be less green and blue, and more red.

White contrast is not a technical term I am familiar with. Contrast is the difference between full white and full black color. If you mean grayscale contrast, then insanity again has the most contrast in it, because when told to display close to zero, the values are 11 for register 23, corresponding to my estimate of the raw intensity at which that register comes into play and not intensity 20 like the stock profile. This is going to cause issues too, because the panel at the low end of the scale seems to block more light than the reference shade of gray at that level. This usually happens because the liquid crystals in a panel like ours don't behave linearly, and start to block too much light too soon. Google corrected this by raising the register values at the lower levels above raw intensity. This makes the panel let a little more light shine through at darker colors, This actually reduces the overall contrast, but lets you see more of the darker colors before they turn pitch black. Insanity does not drop the values below raw intensity to intentionally crush blacks, it just lets the panel crush them when it naturally would. When the colors go black, that's as low as our panel can go, because some light will always shine through.

If you actually start to calibrate and correct the issues with insanity, you would end up with stock, mag01, or something close to it.

As for the user interface to the speadsheet, I have some ideas, but before I go there, I want to add the ability to import profiles too, and then figure out the best way to ask the users what they want. I have some ideas, but nothing concrete yet.

P.S. - There is no real 24th level value, I just think it's just always meant to be zero, so it's not stored anywhere and I built my profile with that assumption. It could be that I am wrong, and register 23 is applied at level zero. It just would be very odd, if that were true though.