Advancing the State of Color Management in Windows
If you’re an app developer who cares about color accuracy, this is the right place to learn about some changes we made in the Windows 11 2022 Update!
Let’s start by talking about color management – it is the technology and practice of ensuring accurate and consistent color reproduction across devices. If you’re a creative professional/enthusiast or digital content creator, it is crucial to have fully accurate and calibrated colors all the time, and for the colors in your visual content to appear consistently and at its best quality on both your own display and on your audience’s wide variety of displays.
Windows has provided color management support APIs since Windows 2000 with the Image Color Management (ICM) and later Windows Color System (WCS) APIs. However, those APIs were only helpers for apps that wished/required to do color management, while most apps and digital content simply assumed the industry standard sRGB color space and were never color managed by the OS. That was a reasonable assumption in the past as sRGB is what most displays have used, but high-quality wide gamut displays are becoming much more common!
Introducing Auto Color Management (ACM) – the power of Advanced Color on SDR (standard dynamic range) displays
The Windows 11 2022 Update supports Auto Color Management (hardware accelerated system level color management), which ensures that all colors across all Windows apps, whether or not they are color-managed, appear accurately and consistently on every supported display. With ACM, apps that don’t explicitly target a wider color gamut (or HDR) get mapped consistently into sRGB. Apps that explicitly do color management using ICM/WCS color management APIs can still target the display’s native gamut (see below for legacy ICC compatibility), and apps written to the latest advanced color APIs can mix and match wide gamut content with sRGB content.
ACM also allows new and updated apps to render more colors while preserving color accuracy, providing extra detail and fewer color artifacts for content such as gradients and shadows/dark tones. Without ACM, the DWM (Desktop Window Manager) restricted windowed apps to output content at only 8 bits per color channel, even if the display supported a higher bit depth. When ACM is enabled, the DWM performs its composition using IEEE half-precision floating point (FP16), eliminating any bottlenecks, and allowing the full precision of the display to be used. With ACM, apps can access billions of colors with 10-16 bits of precision, and even on displays that only support 8-bit precision, ACM unlocks additional quality using techniques such as dithering.
For those of you who have worked with Windows and DirectX HDR (High Dynamic Range) support, ACM may sound very familiar. Advanced Color capabilities were first introduced for HDR displays as well as support for color management (for HDR displays only) with Windows 10, version 1709 (Fall Creators Update). With the Windows 11 2022 Update, ACM brings Advanced Color to select qualifying and specially provisioned SDR displays, starting with Surface Studio 2+ and Surface Pro 9. The same Advanced Color tech stack powers both HDR and ACM, and HDR displays already have many of the color management benefits that we are introducing to SDR displays in Windows 11.
|Note: Advanced Color is an umbrella term of operating system (OS) technologies for displays with significantly higher color fidelity than standard displays. It refers to content that meets one or more of the following criteria:
For more information, see our developer docs.
To learn more about ACM, check out our updated documentation Use DirectX with Advanced Color on high/standard dynamic range displays.
Try ACM with your application
If you are an app developer and want to try out ACM with your application, these are the requirements to enable ACM:
- Windows 11, version 22H2 (10.0; Build 22621) release
- WDDM driver version 3.0 or greater
- Supported GPU:
- AMD RX 400 Series or later
- AMD Ryzen processors with Radeon Graphics
- Integrated: Intel 12th Gen (Alder Lake) or later
- Discrete: Intel DG1 or later
- NVIDIA GTX 10xx or later (Pascal+)
- There are no hard requirements on the display or connection – ACM can provide benefits even on 8-bit sRGB panels. However, we strongly recommend ACM devices to have panels with a wider-than-sRGB gamut, and optionally 10-bits per color channel or greater.
- Global registry key (for app developer use only!) – see below
To enable ACM, a global registry key can be used, which will enable ACM support for all SDR monitors all the time:
- Locate within the registry the global GraphicsDrivers regkey (HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers)
- Right click “Add” -> DWORD
- Name: EnableAcmSupportDeveloperPreview
- value: 1
- If the monitor is already plugged in, you will need to disconnect and re-connect it. In case of internal panel, restart the laptop.
- Go to Settings > Display > Advanced Display, select correct display and turn on Automatically manage color for apps
|Note: Registry key is for app developer use only.|
Display calibration and display color accuracy
Creative professionals and enthusiasts care about fully calibrated, accurate color reproduction as it helps ensure that colors are faithfully maintained and reproduced from the beginning to end of the content creation (and consumption) pipeline. Because of this, we require all devices with native ACM support to have a calibrated display. Alongside ACM, we are introducing a new hardware-accelerated display calibration pipeline that’s supported by Windows 10, version 2004 (20H1) and later.
Display color calibration is the process of ensuring that a display accurately matches its reported color space; for example, sRGB or P3-D65. Because of variations in the manufacturing process and other sources, an individual display panel might deviate from its specification. Once a display has been calibrated, your apps and content can confidently target the display’s color space without worrying about that variability or inaccuracy.
If you’re a display or PC manufacturer, or a display calibration provider who wants to better calibrate your customers’ displays, you can learn more about the hardware-accelerated display calibration pipeline on the new documentation Windows hardware display color calibration pipeline. The pipeline (which works for display whether or not ACM is enabled) provides significantly improved color accuracy over existing paths such as the GDI gamma ramp pipeline and adds support for HDR displays. Most Windows apps don’t need to do anything to benefit from the pipeline; but if you develop color-managed apps, then you might want to be aware of how this technology works.
ICC profile behavior with Advanced Color
We’ve also published a new documentation that describes the changes in ICC (International Color Consortium) profile behavior with Advanced Color. In addition, if your color-managed app needs to continue using display ICC profiles, then this topic will show how to adapt your app to incrementally leverage Advanced Color benefits.
Automatic system color management necessarily impacts the way that existing ICC profile-based apps behave, since they’re performing many actions themselves that are now handled by the OS. Windows applies the default behavior (explained in the new documentation) to ICC profile-based apps. That ensures that those apps don’t have incorrect behavior. However, without further work, they won’t get access to any of the extended color capabilities.
In particular, by default your ICC profile-based app is restricted to the sRGB gamut, even if the monitor is actually wider gamut. Windows also provides an ICC compatibility helper that can give your ICC app access to the display’s entire gamut. For more info, see the Display ICC profile compatibility helper section in this topic.
We hope you liked these updates to Advanced Color in Windows! If you’ve made it through our light reading, we’ve just updated and published new documentation that deep dives into all of this. Feel free to check it out:
- Use DirectX with Advanced Color on high/standard dynamic range displays
- Windows hardware display color calibration pipeline
- ICC profile behavior with Advanced Color