[1] mentions that Windows 10 introduced "advanced color" mode to DWM/DXGI/Windows.UI.Composition.
However it lacks detailed information.
[1] https://docs.microsoft.com/en-us/windows/win32/direct3darticles/high-dynamic-range
I am asking for desktop media (image/video) applications, and would like to know how things works first.
Assumes colorspace aware processing is done, the question is how to setup output and maybe apply final conversion+transfer function.
Since "advanced color" only cares for HDR, both with and without "advanced color" have to be considered.
1. Color profiles in Windows.
- 1-A. How to query the color profile of a display monitor?
I saw APIs in icm.h, but they looks verbose and confusing. I would appreciate some explanation or examples. - 1-B. How to map GPUs/display monitors between DXGI/VK and those ids used by icm.h?
- 1-C. How to temporarily remove/change color profile of a display monitor?
2. About IDXGISwapChain3::SetColorSpace1(DXGI_COLOR_SPACE_TYPE), which seems to be the only API in DXGI to control output color:
- 2-A. What actually does this API do?
Does it mean "reinterpret as this colorspace", or "convert from this colorspace" by DWM or driver? - 2-B. If it means "convert", how to query "native" support?
- 2-C. What does DXGI_COLOR_SPACE_TYPE enum values means? The enum names are difficult to understand.
- 2-D. What is DXGI_COLOR_SPACE_TYPE::DXGI_COLOR_SPACE_CUSTOM? Is it possible to config a custom color space?
3. What is the best practice for handling output?
- 3-A. Without "advanced color", is it better to apply custom gamma/transfer function than use DXGI gamma control?
- 3-B. With "advanced color", is it better to apply color profile+transfer function than rely on DWM or driver?
4. VK, GL or vendor specific on Windows.
- 4-A. Is there any standard way for set output or use DWM/driver transform in VK/GL?
- 4-B. In case of fullscreen exclusive mode, is it possible to set output or use DWM/driver transform via vendor-specific APIs?
5. What about Linux?
- 5-A. Beginning question: what is the most common used API for Linux games or heavy graphics applications?
- 5-B. How does current Linux color management works?
- 5-C. Are HDR on Linux ready, WIP or without a standard design?