Hi,
Assuming the image was mastered on a native sRGB 2.2 transfer function display without
ICC based management.
then I would assume that the image is tagged with a profile that reflects the creation display response.
Q1) Is the essence of the transform within an ICC based CMS to take the encoded image
buffer to display linear via an inversion of the transfer function in I.profile, and
then roll the results through the D.profile transfer function? IE: In an ICC CMS, the
ground truth is essentially the display linear inversion of the encoded input buffer?
This depends on the intent, but for Relative Colorimetric yes.
Q2) Given that default installations of Windows 10 and macOS have the canonized sRGB
OETF present for the default display component of their installations, including the
DCI-P3 ICM on macOS (as of last inspection), the only correct way to render a bitwise
1:1 with input image (as outlined above, mastered on an idealized 2.2 display outside
of ICC based CMS) and display would be to tag / embed the image with an sRGB OETF
version of the profile? I: Input to display ends up a no-op.
Maybe. Ideally there should be a way for software to set the frame buffer contents without color management getting in the way (for calibration and profiling), and for Linux and MSWindows there is. For later versions of OS X, you have to use the “null profile trick” you outline above to be able to do this on all displays (i.e. primary and secondary displays). But if you are worried about getting native display behavior you also have to take care of the display per channel lookup tables (VideoLUTs) too.
[ And note that OETF and EOTF come loaded with other aspects - encoding and decoding may have different curves, to allow for viewing condition differences. ]
Q3) Given a *profiled* display on either Windows 10 or macOS, where the results in
2018 essentially will deliver a pure power function profile at 2.2 on typical
hardware, the sole method to receive
I’m not sure what you mean by that. On MSWin it’s up to the application to manage the color, the OS just provides the mechanisms. On OS X the OS manages the color, and you just get to set the source profile & intent. There is no pure power function in general as the display profile encodes whatever response the display has got - the most direct means of setting a color managed display color is as a device independent CIE/PCS etc. value, since this is the input to the display profile when driving the
display.
a bitwise precise version at the display would be
to tag the input image with a pure 2.2 power function as transfer? IE: The sRGB OETF
scenario above would result in the image being display linearized via the inverted
OETF, then nonlinearly adapted to the 2.2 profile.
See above. Either don’t apply color management (Linux, MSWindows), or use the null transform trick (OS X). For the latter the simplest thing is to retrieve the displays current profile and tag the pixel values you are setting with it. (This is what the current ArgyllCMS code does.) You certainly wouldn’t be making assumptions about the characteristics of the display profile.
Q4) Given the above logic is loosely accurate, has the whole purpose of the linear toe
to correct low level power function DAC inaccuracies been subverted via incorrect
tagging or vendor side implementation?
Sorry, I’m not sure what you are talking about. A displays response can be encoded in many different ways. Splitting into per channel transfer curves and some multi-dimensional representation is common, because it’s efficient. For an accurate profile those curves are what they are - they depend on the displays measured response.
Calibration curves (typically VideoLUT curves) serve a slightly different purpose. In the case of a color managed display they can serve the purpose of setting a white point (which ICC profiles don’t manage well due to the issues with display Absolute Colorimetric that have already been explored, as well as typical workflows being relative colorimetric), setting a brightness, setting a black point and/or improving the behavior of the display so that the profile can be more accurate without taking lots of measurements and needing a large complicated profile.
In the case of non-color managed applications, as well as setting a white point they set neutrality and transfer curves, allowing a measure of control over the color appearance of these non-managed applications.
Cheers, Graeme Gill.