For historical reasons these were stored in sRGB space, which caused all
kinds of complexity.
* For image painting, it now properly uses the byte buffer colorspace
instead of assuming sRGB or display colorspace. This can be more expensive,
so there is a fast path for sRGB buffers (and for fixed brush colors).
* Lots of code was changed to remove conversion when painting float images
or vertex colors, and added when painting byte images.
* For non-color data, there is now no colorspace conversion between the brush
color and image pixels, and #143642 was basically reverted because of that.
Compatibility notes:
* Backwards compatibility is not perfect, as we can not determine if the
brush has non-color data in isolation. We always convert sRGB to linear,
and existing brushes configured with non-color data need to be manually
fixed.
* There is forward compatibility, the old sRGB value is still stored next
to the scene linear value.
Pull Request: https://projects.blender.org/blender/blender/pulls/144400