Chris Mak
Veteran Member
Having done some more reading up, purely out of interest, I am starting to get an understanding of what is going on with Windows ACM. It started of with introducing system color management for HDR displays in late Windows 10 builds, and was first expanded to SDR displays in Windows 22H2.
Unlike what may be the impression, the Windows development team does actually have a very clear oversight on what is needed and where things are going. For about 20 years, Windows did not do any color management OS wide, The destop manager as well as display kernel had no system color management, the color management was done by individual apps using the provided Windows API's.
Windows advanced color management ACM is progressing towards having a system that manges colors on the destop and in the display kernel with HDR, wide gamut and high bit depth support.
There are a few key modifications that applications have to implement to make things work. For one, the display profile under ACM needs to be a valid MHC ICC profile, containing specific information:
Windows doesn't provide an API for directly controlling the new color transform pipeline at runtime. Instead, your app accesses the pipeline by writing a properly formatted International Color Consortium (ICC) color profile with extra data stored in a new "Microsoft Hardware Calibration" ("MHC2") private tag
If the calibrated profile does not meet these needs, then it will be overrided and the hardware information about your display will be used, which means you have no access to your own calibration routine. I had this issue with Eizo color navigator, where it would reurn an error: "unable to apply the ICC profile". Only the latest update from three weeks ago fixed this, providing official Windows 11 24H2 support. I assume they updated the ICC profile creation to include this MHC2 tag, although this is speculation on my part.
In any case:
Windows 10, version 2004 exposes a GPU-accelerated display color transform pipeline consisting of a linear gamma color matrix and 1DLUT. Compared to the existing gamma ramp pipeline, it offers superior accuracy, precision, and support for wide color gamut displays. In addition, it adds support for new technologies such as HDR displays that use BT.2100 signaling.
The pipeline isn't directly programmable by apps, and instead is exposed only via MHC profiles
So even if an image editing application is updated to follow the new ACM guidelines, it will still require a valid MHC display profile to work properly.
Also, with ACM enabled, apps no longer have access to the full gamut of wide gamut displays, but are clamped down to sRGB. This is because the API's used by the apps to color manage the display will manage to sRGB when ACM is active:
Because the ICC profile management APIs return sRGB when Advanced Color is active, your ICC profile-based app will color-manage to sRGB, and Windows will correctly reproduce that as sRGB on the display.
And:
When Advanced Color is active, any calls to the color profile management APIs to get the default profile for a display will return "no profile", regardless of what profiles are actually installed. By convention "no profile" should be interpreted as sRGB.
This is intentional behavior, because the application should not attempt to color manage the display. Windows though provides a compatibility helper for display ICC profiles that provides access to the display's entire gamut, which is enabled on a per app basis via the legacy color management setting. But this is only atemporary solution:
That helper is available starting with Windows 11. It doesn't provide other benefits of Advanced Color including access to higher precision/bit-depth or high dynamic range—you'll need to modify your app to be Advanced Color-aware
Until applications like Photoshop and Capture One and DxO are updated to comply with the new color managment, the compatibility helper is your best friend.
Unlike what may be the impression, the Windows development team does actually have a very clear oversight on what is needed and where things are going. For about 20 years, Windows did not do any color management OS wide, The destop manager as well as display kernel had no system color management, the color management was done by individual apps using the provided Windows API's.
Windows advanced color management ACM is progressing towards having a system that manges colors on the destop and in the display kernel with HDR, wide gamut and high bit depth support.
There are a few key modifications that applications have to implement to make things work. For one, the display profile under ACM needs to be a valid MHC ICC profile, containing specific information:
Windows doesn't provide an API for directly controlling the new color transform pipeline at runtime. Instead, your app accesses the pipeline by writing a properly formatted International Color Consortium (ICC) color profile with extra data stored in a new "Microsoft Hardware Calibration" ("MHC2") private tag
If the calibrated profile does not meet these needs, then it will be overrided and the hardware information about your display will be used, which means you have no access to your own calibration routine. I had this issue with Eizo color navigator, where it would reurn an error: "unable to apply the ICC profile". Only the latest update from three weeks ago fixed this, providing official Windows 11 24H2 support. I assume they updated the ICC profile creation to include this MHC2 tag, although this is speculation on my part.
In any case:
Windows 10, version 2004 exposes a GPU-accelerated display color transform pipeline consisting of a linear gamma color matrix and 1DLUT. Compared to the existing gamma ramp pipeline, it offers superior accuracy, precision, and support for wide color gamut displays. In addition, it adds support for new technologies such as HDR displays that use BT.2100 signaling.
The pipeline isn't directly programmable by apps, and instead is exposed only via MHC profiles
So even if an image editing application is updated to follow the new ACM guidelines, it will still require a valid MHC display profile to work properly.
Also, with ACM enabled, apps no longer have access to the full gamut of wide gamut displays, but are clamped down to sRGB. This is because the API's used by the apps to color manage the display will manage to sRGB when ACM is active:
Because the ICC profile management APIs return sRGB when Advanced Color is active, your ICC profile-based app will color-manage to sRGB, and Windows will correctly reproduce that as sRGB on the display.
And:
When Advanced Color is active, any calls to the color profile management APIs to get the default profile for a display will return "no profile", regardless of what profiles are actually installed. By convention "no profile" should be interpreted as sRGB.
This is intentional behavior, because the application should not attempt to color manage the display. Windows though provides a compatibility helper for display ICC profiles that provides access to the display's entire gamut, which is enabled on a per app basis via the legacy color management setting. But this is only atemporary solution:
That helper is available starting with Windows 11. It doesn't provide other benefits of Advanced Color including access to higher precision/bit-depth or high dynamic range—you'll need to modify your app to be Advanced Color-aware
Until applications like Photoshop and Capture One and DxO are updated to comply with the new color managment, the compatibility helper is your best friend.
Last edited:
