It sounded so simple!
I have a Sony STR DH800 AV receiver, which does HDMI switching - I figured, great, I'll plug my laptop, xbox, etc into the back, then go HDMI->DVI into my monitor, less cables, less fuss!
But no, no, nothing is ever simple when the letters 'HD' are involved - the following buggerance factors apply:
The receiver expects people to only use it with TV's and DVD players, and so exclusively (and forcefully) supports only 'TV' style resolutions, 480p, 720i/p, 1080i/p.
Though allegedly only 'passing' through the video data unchanged, it fails to pass back the EDID data from the screen.
My monitor is a 20" 1680x1050 panel, so the only 'HD' formats it supports are lousy 480p and 720p. Come on TV world, 720p is not high definition, I had a bigger screen resolution on my PC 10+ years ago.
My laptop's GFX card (GeForce 9300m) does something stupid with the EDID information that means it only thinks I'm allowed to use 480p. (The Xbox 360 for comparison quite happily bangs out 720p).
Luckily, after much searching on the net, I have found a solution to 'buggerance factor 4', which makes the setup at least partially useful. It turns out that it is possible to create a monitor.inf file that can tells Windows, and the display driver to explicitly override the EDID information detected from the display device (Thank you Microsoft!). You can grab my version for the Sony DH800 here:
This basically forces the driver to expose all the resolutions as supported by the AV Receiver - I tried a hybrid version using the EDID from the monitor, but it turns out the receiver just cannot transmit 1680x1050, which is a shame, as it means I can plug my laptop into my bigger monitor but only have a lower resolution than the laptop.
You can find out more information from the original post on the AVS Forums: