Remove "Linear light" vs "Perceptual gamma" options from "Image/Precision" choices
Currently in the "Image/Precision" dialog and also in the "Create a New Image" dialog the user has the option to encode images using "Linear light" vs "Perceptual gamma".
This option used to affect painting and layer blend modes, but now these blend modes are controlled independently from whatever the user chooses in the "Image/Precision" dialog.
Currently this option doesn't seem to have much use:
-
If the user chooses linear precision for an 8-bit image, they get posterized shadows.
-
If the user chooses linear precision for soft proofing using LCMS, they get highly misleading out of gamut indicators.
-
If the user chooses linear precision when exporting an image to disk as a jpeg or as any file format at 8-bit precision, they get posterized shadows.
-
Apparently there is a performance penalty for choosing anything other than 32f linear precision (assuming the user has enough RAM to handle high bit depth editing) as this is the precision used internally for most operations.
One actually meaningful use of this linear vs perceptual (vs non-linear when the babl space invasion is complete) precision choice has to do with displaying channel values using the color picking tools: Currently if you choose "Linear light", then linear gamma channel values are displayed in the "pixel" values when using the the Color Picker Tool, Sample Points, and Pointer dialogs. If you choose "Perceptual gamma", then perceptually uniform (sRGB) channel values are displayed instead. This choice could be accomplished using a switch in the relevant dialogs and tool options, instead of requiring a change in the encoding of the layer stack whenever a different encoding is desired for the Color Picking tools.
Another meaningful use is when exporting an image to disk. But the encoding/color space of a "to be exported" image really should be handled in the export dialogs instead of requiring the user to change the encoding of the entire layer stack just to export an image. As an aside, the bit depth also should be in the export dialog, instead of requiring the user to change the precision eg from 32f linear to 8i perceptual, just to export an 8-bit png or tiff.
Most internal processing is done at 32-bit linear precision. Many operations have "per operation" options for switching between linear and perceptual. There just doesn't seem to be much point in leaving the choice between linear and perceptual for the entire layer stack up to the user to make.
Finally, having these two image stack encoding options means twice as much work to test to see how any give code change is actually working, and perhaps twice as much work to change things that currently are broken, such as these open bug reports: