Using NVAPI to change desktop color settings

Although the forum appears quite deserted, I’ll try anyway to get some help here ;)

I want to be able to programmatically change the desktop color channels, as is possible on the NVIDIA control panel. But I can’t find anything relating to color settings in the nvapi docs/headers, aside from HDR stuff (and I don’t have an HDR-capable screen).

So my question is, is it possible to change color settings using NVAPI (or any other NVIDIA API)? Maybe the NDA version has this capability?

greetz Markus

NDA version most definitely does have this capability. But good luck getting a reply from the “Nvidia Developer Team”… Why would these forums even exist if they’ve been abandoned, it’s kind of frustrating, especially for hobbyist developers.

Similarly, I’m looking to be able to modify [programatically] the Video color settings (specifically, to set “Full Range(0-255)” quantization as the “dynamic range” setting, rather than “Limited(16-235)”). This is settable from the Nvidia control panel, but I’d like to do it programmatically.

Perhaps I’ve just overlooked something, but I don’t see where this is settable from the public NVAPI. Is this capability restricted to the NDA version? If so, how does one go about getting in touch with Nvidia to enter the agreement to get the NDA version?

(I apologize if this is considered thread hijacking, but my question seemed similar enough that I don’t feel that it merited a separate topic.)

I think this should be possible with the normal NVAPI.

There is

NVAPI_INTERFACE NvAPI_VIO_SetConfig(NvVioHandle hVioHandle, const NVVIOCONFIG *pConfig);

and NVVIOCONFIG includes a

NvU32 enableFullColorRange; //!< Flag indicating Full Color Range

(inside the NVVIOOUTPUTCONFIG_V3 struct).

That seems to me should do the trick ;)

Not that it helps my problem ofc…


Thanks for taking the time to look at this. I also came across those functions as I was investigating this, and I became very hopeful when I discovered that same function/flag.

Unfortunately, so far as I can tell, the VIO functions seem to be related to SDI video capture devices, while the setting I’m looking for is used to control video settings for a display (NvDisplayHandle vs NvVioHandle). As I don’t have any SDI video capture devices, when I attempt to enumerate VIO devices [with NvAPI_VIO_EnumDevices()], I get a status of NVAPI_NVIDIA_DEVICE_NOT_FOUND.

The Nvidia control panel application allows me to change this setting (Video, Adjust video color settings, Select Display, “With the NVIDIA settings”, Advanced tab, “Dynamic range”), but I haven’t found a way to modify this programmatically.

I am fairly sure that most of the functions available in the free (non NDA version) are all pretty much just for retrieving information but not so much for setting information. All the usefulness is in the NDA version.

Go ahead and give it a go, but please don’t waste too much time on this, it’s a fairly stripped down version of the full NVApi NDA version.

@GravitationalAnemone: Ah damn, was too good to be true :(

I ended up using an ugly hack. I am automating the NVIDIA control panel using Python/pywinauto. Changing the settings this way works ok, and in my environment I don’t need to change the driver software often (or at all) so this is a usable workaround.
But I’d rather have a stable API to use…

Could someone from NVIDIA PLEASE respond?