Check https://github.com/dantmnf/MHC2 for another approach that works with all recent GPUs from different vendors and integrates well with Windows color management.
This tool uses poorly documented AMD APIs, to convert color space before sending them to a display that effectively implements color-managed output (e.g. clamp content to sRGB), based on the chromaticities and transfer characteristics provided.
AMD control panel also provides a "Color Temperature Control" switch to convert colors to color space defined in EDID, but it is not possible to convert colors to custom color spaces (e.g. from measured ICC profile).
- From ledoge/novideo_srgb:
- Since the color space conversion is done on the GPU side, the ICC profile must not be selected/loaded in Windows or any other application. If you want, you can do another profiling run on top of the active calibration and then use this profile in applications that support color management to achieve even better color accuracy.
- To achieve optimal results, consider creating a custom testchart in DisplayCAL with a high number of neutral (grayscale) patches. With those, a grayscale calibration (setting "Tone curve" to anything other than "As measured") should be unnecessary and might even be detrimental to the accuracy. The number of colored patches should not matter much. Additionally, configuring DisplayCAL to generate a "Curves + matrix" profile with "Black point compensation" disabled may also result in better accuracy than with an XYZ LUT profile.
- Only
vcgt
(if present),chrm
(if present),rXYZ
,gXYZ
,bXYZ
,rTRC
,gTRC
,bTRC
,wtpt
in ICC profile are used. - You can generate an ICC profile from EDID in DisplayCAL by selecting "Create profile from extended display identification data..." in "File" menu.
-
Specify white point coordinate rather than using driver-defined ones from drop-down list.
-
Simply apply it again.
-
Ask AMD why they don't validate input from unprivileged userspace API. ¯\_(ツ)_/¯
-
¯\_(ツ)_/¯
-
It is managed by Windows for proper hardware multi-layer composition.
- The usage / effect of "Apply degamma instead" switch in "Edit Transfer" window is to be determined.
- Custom transfer is not peserved across reboots.
Despite targeting the good old .NET Framework, you need .NET Core SDK to build this tool.
This tool uses Little CMS for ICC reading, run littlecms/download.bat
to prepare Little CMS source, and it will be picked up by the solution file.
- ledoge/novideo_srgb: for NVIDIA GPUs.
- ledoge/dwm_lut: for any GPU on Windows 10+.
- Intel GPU Control Library: (API only) hardware matrix-LUT or 3DLUT on Intel GPUs.
- Microsoft Hardware Color v2: used in some recent Windows devices with built-in wide gamut display. Currently no public way to use it with homemade calibration (coming soon™).