There have been innumerable posts on SevenForums about things like 59Hz refresh rates and 1080p 16:9 HDTVs that display only 1024x768 when connected with DVI or HDMI. After a ton of research and development I think I've got a working solution for virtually all of these issues.
Starting with Vista, Microsoft has required graphics vendors to read and respect monitor capability information from the display itself if they wanted to pass Windows Hardware Quality Labs (WHQL) certification. This display capability data is encapsulated in an EDID. Few HDTV manufacturers sought WHQL and it's unclear whether Microsoft tests display EDIDs from monitor manufacturers as a WHQL requirement. Please let me know if you have a WHQL display that seems to have a bad EDID.
As a result, many DVI/HDMI connected HDTVs and some monitors are locked into displaying only those resolutions and refresh rates that are specified in the EDID. No graphics adapter or driver is supposed to allow configurations not listed in the EDID at least as a default. Newer ATI drivers allow for a small number of HD resolutions to be forced but it's been hit or miss for the users I've surveyed and nVidia's offerings don't seem to be a 100% solution either.
The natural solution would appear to be changing the EDID information in the display. Rarely, this is possible with Powestrip if the display stores the EDID in a flash memory but more commonly the EDID is stored in an EPROM that can only be updated with specialized hardware. I've talked with several display vendors during the development of this tutorial and none of them consider a bad EDID grounds for warranty service. So if next to no displays support updating the EDID through software and the manufacturer won't fix the hardware, what are we left to do? Break out the toolkit and warm up the soldering iron?
While that's well within my capabilities it seems to put some end-users off a bit, although I really can't understand why -- I love the smell of solder in the morning! But there has to be a better way right? Again, Microsoft has a solution if you really dig for it and do your homework: How to Use an INF to Override the Monitor EDID While it's not intended for end users, what really fun stuff is? The challenge was to develop a method accessible to a greater audience -- to improve on the solution that Microsoft provides that's intended for hardware manufacturers and make it work for us.
Custom Resolution Utility (CRU)
Custom Resolution Utility (CRU) allows custom resolutions to be defined for both AMD/ATI and NVIDIA GPUs by creating EDID overrides directly in the registry without having to deal with inf files.
[...]
Requirements:
Windows Vista or later
AMD/ATI or NVIDIA GPU
Intel's graphics driver does not support EDID overrides
Laptops with switchable graphics are not supported
Note for NVIDIA users: GeForce Experience is known to cause issues with EDID overrides such as resolutions being listed in the NVIDIA control panel but not in the Windows screen resolution settings. Either uninstall "NVIDIA GeForce Experience" through the Windows control panel, or install the NVIDIA driver without GeForce Experience by using the custom install option.
Quick start:
Choose a display from the drop-down list.
"(active)" means the display is connected and the configuration is active.
"*" means changes were saved and an override is in effect.
Edit the configuration as desired.
The first detailed resolution is considered the preferred or native resolution. To make games use a higher refresh rate, define it as the first detailed resolution.
At least one detailed resolution should be defined. All other resolutions can be removed if they are not needed.
NVIDIA users must either uncheck "Include extension block" or import a custom extension block for custom resolutions to work.
Repeat steps 1-2 for other displays if required.
The "Copy" and "Paste" buttons can be used to copy all the resolutions from one display to another.
Click "OK" to save the changes.
Reboot.
To reset a display back to the default configuration, delete the display and reboot. To reset all displays, run reset-all.exe and reboot. This can be done in safe mode if necessary.
Notes:
This program adds monitor resolutions, not scaled resolutions. Lower resolutions will be scaled up if GPU scaling is enabled, but higher resolutions won't be scaled down by the GPU. Higher resolutions will only work if the monitor can handle them.
Timing modes for detailed resolutions:
"Manual" allows the timing parameters to be set manually. The dialog will always open in this mode.
"Automatic - LCD standard" (formerly "Automatic - Best for LCD") uses timing parameters commonly used with LCD monitors and HDTVs.
"Automatic - LCD reduced" adjusts the timing parameters for certain resolutions to reduce the pixel clock. This may help when trying higher refresh rates.