How does Win HDR and NVIDIA HDR work together programmatically?


I’m the author of DisplayMagician (GitHub - terrymacdonald/DisplayMagician: DisplayMagician is an open source tool for automatically configuring your displays and sound for a game or application from a single Windows Shortcut.) which is designed to change display settings, run a game, then change them back. The application works fine with NVAPI calls, but I’m having a problem when the program attempts to set the NVIDIA Colour Settings and HDR settings programmatically.

I’ve seen in the NVIDIA Control Panel help that “Beginning with Windows 10 Creator’s Update (Redstone 2), the operating system controls these colour settings. You can either use the Windows settings, or override them through the NVIDIA Control Panel by selecting the Use NVIDIA colour settings tick box.

I have a few questions about HDR because of that statement:

  • If I turn on Windows HDR, am I allowed to set NVIDIA colour settings? Is that supported?
  • If I set HDR settings using NvAPI_Disp_HdrColorControl, do I also need to set the colour with NvAPI_Disp_ColorControl too?
  • What’s the best order in which to set NvAPI_Disp_HdrColorControl and NvAPI_Disp_ColorControl? Should I do NvAPI_Disp_ColorControl first, or NvAPI_Disp_HdrColorControl first?

I’d like to hear from NVIDIA as to what I should be doing. At present, the process is a bit convoluted, like this:

  1. Turn surround on/off through NVAPI (so all the screens show up in windows),
  2. Setup windows layout/settings using Windows CCD API (so the screens are in the right places),
  3. Turn off any NVAPI color settings that set to windows control through NVAPI (so it always has NVIDIA colour settings turned off)
  4. Apply the NVIDIA HDR settings through NVAPI (so they apply properly in windows too)
  5. Apply new NVAPI color settings that are override the HDR settings through NVAPI (so they override the HDR)

Is that the correct way to do it?

Any help appreciated…this has take a couple of days out of my life so far :)


Dear @terry.macdonald

Thank you for contacting NVIDIA developer forum.
We have sent your query to the respective team for details and we will get back to you on same.

NVAPI Forum Moderator

Any response from them?

Hello @terry.macdonald

Thanks for the ping. I am reaching out to the internal team once again to check if they can fetch some bandwidth to assess this.

Thank you.
NVAPI Forum Moderator

Hello @terry.macdonald

I am reaching out to you over 1:1 message to convey some questions asked by our dev team, to better understand your query.

Thank you.
NVAPI Forum Moderator