There is a problem with nvidia drivers and reported monitor EDID: Monitors native resolution is 1920x1080 32bpp 60Hz, but for some reason it displays only portion of entire desktop (overscan/underscan) and image is blurry so I created custom resolution of 1920x1080 32bpp 59Hz CVT-reduced-bank that works fine.

The problem is when HDMI cable is connected windows automatically chooses wrong native resolution istead custom resolution. How can I set custom resolution to be default one ? So when computer boots up with HDMI monitor connected it will default to custom resolution.

Or is there command that I can execute to switch to custom resolution instead of using nvidia control panel ? In that case is there HDMI-connected-event that i can hook somehow to execute that command ?



I have found control panel API here: http://developer.download.nvidia.com/SDK/9.5/Samples/DEMOS/common/src/NvCpl/docs/NVControlPanel_API.pdf. The following command is not working:

rundll32.exe NvCpl.dll,dtcfg setmode 2 1920 1080 32 59

This discussion reveals this approach is no longer supported :(

The solution is to make application that uses NvAPI_DISP_* functions to make appropriate changes.

- NvAPI_DISP_GetTiming() // with NV_TIMING_OVERRIDE_CVT_RB parameter set
- NvAPI_DISP_TryCustomDisplay()
- NvAPI_DISP_SaveCustomDisplay()

Only thing left is to run this program when HDMI is connected: Here (missing reputation) is how to find device class GUID for the graphic adapters. Then use RegisterDeviceNotification() function to register for getting WM_DEVICECHANGE notification.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.