views:

1681

answers:

2

I'm working on a video display device that uses custom timings for resolutions at848x480 and 800x480 that do not conform to any VESA standard. The device has an EDID that specifies these timings.

I would like to know the process that Windows XP uses to determine the resolution to display at, and how it presents the user with a list of choices. This seems highly dependent on the video card manufacturer and driver.

I have observed wildly different behaviors on different systems:

  • It seems that vanilla Windows XP does not query the EDID except at boot time, however laptops and custom video drivers sometimes seem to query the EDID at will (plug in a computer with no reboot, hit presentation mode, and the device name shows up)
  • Some PCs seem to have no trouble generating 848x480 or 800x480, but some just seem to ignore the detailed timings and fall back to a VESA 640x480. If you specify a custom timing mode, what is the chance that any given video driver/card will be able to generate the proper VGA signal?
  • Often times, the EDID information will be transmitted to the system, but if you open the Windows display properties, and select the device in the settings tab, the slider of available modes does not show either 848x480 or 800x480. It usually just shows 640x480 among a list of other standard modes (but not the custom modes supplied).
  • If this happens, then you can often get the device to display at 848x480 or 800x480 by selecting it in the list of all modes under display properties -> settings -> advanced -> adapter -> list all modes. When you select this, it switches to the proper resolution.
  • However, if you go back in to display properties -> settings, you will see the mode you selected in the slider, but the slider only has the one resolution. It should (at least) also show 640x480. Is this just a fact of life when dealing with Windows XP and non-standard video timings? It would be great to know exactly how Windows populates that slider.

I would greatly appreciate any resources that discuss the details associated with all of this. I know that this is not strictly speaking a programming question, but it is closely related to a programming problem that I am having, and I am having trouble finding any information on this subject.

+2  A: 

Ah, I feel your pain. Been there before. Are you writing the display driver as well? The display driver can also trim modes, but generally this will only be if there's some reason it cannot physically handle it. Additionally, many display drivers will add a certain list of default modes (like 640x480), regardless of what was in the EDID.

I know that Windows does some checks against the monitor range limits specified in the EDID. And they aren't intuitive checks either, so you might play with that. Also, the refresh rate factors into Windows trimming logic as well.

Regarding when EDID is read, I typically see the EDID get read the 2nd time you open display properties after booting up, and each time thereafter.

A: 

I'm working on a similar problem. A first step would be to set the desired resolution(s) as the detailed timings in the EDID.

That is, instead of Standard Timings. If you've got the EDID spec, that's detailed in section 3.10. According to the spec, the first Detailed Timing is going to be the highest priority resolution, followed by the second detailed timing, the Standard Timings, and then the Established Timings.

Further, you should try leaving all other timings and resolutions unsupported.

jerwood
Yes- I should have stated that I did all that when creating the EDID. It has exactly the resolutions that I want, in the order I want as specified in 3.10.I've come to the conclusion that in Win XP and Vista, EDID/DDC support is totally dependent on the video driver. In other words, display device manufacturers are totally at the whim of the driver vendors for supporting non-standard timings. Different vendors provide varying degrees of compliance (some good, others poor). Unfortunately, there was no one source for this information. I had to infer and scrape it together from many places.
Bobby Moretti
Well, I guess we're all in the same bad position on this. So much for "standards".
jerwood