EDID Data

Discussion in 'Windows Vista Drivers' started by maria, Oct 20, 2005.

  1. maria

    maria Guest

    Hi,

    I have some problems with EDID data

    1.When does windows (2000 and XP) read the EDID data from the monitor?
    I know that they are read more then once, but not why.
    2. Is it possible, to force window to read the data again?

    Thanks
    Maria
     
    maria, Oct 20, 2005
    #1
    1. Advertisements

  2. 1.When does windows (2000 and XP) read the EDID data from the monitor?
    The videocard miniport (.SYS) must have the routines which do this accessing
    the hardware. They are called by VideoPrt as a result of PnP enumeration.

    The PnP ID for a monitor is created inside VideoPrt from EDID, and I think that
    this PnP ID is the only Windows-provided way to access the EDID.
     
    Maxim S. Shatskih, Oct 20, 2005
    #2
    1. Advertisements

  3. maria

    Taran Guest

    I believe Windows reads the EDID data during start-up, assuming the monitor
    is plugged in and turned on at the time (otherwise you get default config
    information) and saves them in the registry. I am afraid I do not know
    enough to go into further detail. I am also just recently looking into this.
    I wish I could answer that question, as I am trying to write a simple
    program to read the EDID from a monitor. I am currently using a combination
    of the following calls listed below, but the last two are giving me compile
    issues related to the required headers/libraries. I am not even certain yet
    that they can be accessed by a user-mode program

    SetupDiGetDeviceRegistryProperty (to get the PDO)
    IoGetDeviceObjectPointer
    VideoPortGetAssociatedDeviceExtension
    VideoPortDDCMonitorHelper

    I am not very proficient with accessing device drivers. Anyone know if
    there is an easier way to do this?

    - Taran
     
    Taran, Oct 20, 2005
    #3
  4. maria

    Calvin Guan Guest

    Inline.

    --
    Calvin Guan (Windows DDK MVP)
    NetXtreme Longhorn Miniport Prime
    Broadcom Corp. www.broadcom.com

    Windows can read edid data any many times as it wants or as many times as
    the miniport wants to invalidate the child state.
    That won't work. Here's why:
    1) video miniport stack is open exclusively, GDI owns it.
    IoGetDeviceObjectPointer will fail.
    2) You can not call IoGetDeviceObjectPointer,
    VideoPortGetAssociatedDeviceExtension, VideoPortDDCMonitorHelper from user
    mode
    3) VideoPortXxx functions require a hwDevExt. You don't have it if you're
    not the miniport.
    4) miniport may not expose I2C services to video port so
    VideoPortDDCMonitorHelper would fail.
    this may help.

    http://groups.google.ca/group/micro...9f8587dd?tvc=1&q=EDID+Calvin#ff78458e9f8587dd

    Video chip vendor usually has public API for accessing EDID. It's the most
    reliable way to access EDID or DDC info from user mode. Talk to the
    Developer relation folks of these vendors (not that many nowadays:)).
     
    Calvin Guan, Oct 20, 2005
    #4
  5. maria

    Tim Guest

    This can't be very often because changing the monitor does not change
    the monitor listed in the display properties. The list of possible
    modes does not change either until the next reboot.

    The EDID is transmitted all the time by most monitors, so there is no
    excuse for the video hardware, the drivers and Windows not to notice
    any changes.

    Tim.
     
    Tim, Oct 21, 2005
    #5
  6. This can't be very often because changing the monitor does not change
    Try doing "Scan For Hardware Changes". The issue can be only due to videocard
    hardware being unable to report monitor plug/unplug to the software.
     
    Maxim S. Shatskih, Oct 21, 2005
    #6
  7. maria

    Tim Guest

    Scanning found nothing new. My Intel 82865G Graphics Controller didn't
    notice, and the "Plug & Play" monitor driver did not pickup the new
    EDID.

    XP was open to having a new monitor driver forced on it (Monitor
    properites, Update Driver...") without a reboot, and this did then
    adjust the maximum resolution to match the monitor.

    Tim.
     
    Tim, Oct 21, 2005
    #7
  8. maria

    Calvin Guan Guest

    because changing the monitor does not change
    This depends on how the miniport handles it child state. It also depends on
    if is a hotplug monitor.

    Simple and cheap implementation can always ignore the change of monitor.
    Believe it or not, dynamic mode+multi-mon+multi desktop are VERY complicate.
    One reason is 2K/XP's GDI doesn't sync with the PNP system well.
    EDID doesn't transmit on its own.
    What video card are you using?
     
    Calvin Guan, Oct 21, 2005
    #8
  9. maria

    Calvin Guan Guest

    This is definitely a bug or limitation in their miniport design.
     
    Calvin Guan, Oct 21, 2005
    #9
  10. maria

    Tim Guest

    Indeed the spec seems to suggest the PC should send certain pulses
    before the monitor is supposed to start clocking the data back down the
    cable on every VSync, but empirical evidence shows a Dell 1701FP
    transmits using DDC1 from power on until asked to switch to DDC2. This
    was shown using an oscilloscope on the line.
    Yes.

    Specifically an ATI Radion X300, and an Intel 82865G in two different
    PCs running XP SP2.

    I guess what I am asking for is sensible hot plugging of monitors. The
    resolution does not need to go up, but it would be nice if the
    resolution and frequency could come down if a different monitor is
    detected that can't display with the previous monitor's settings.

    Tim.
     
    Tim, Oct 24, 2005
    #10
  11. I guess what I am asking for is sensible hot plugging of monitors.

    Is it a real-world demand? In fact, most Windows machines work with "Default
    Monitor" installed :)
     
    Maxim S. Shatskih, Oct 24, 2005
    #11
  12. maria

    Calvin Guan Guest

    Tim,

    If it's an ATI card, I'd suggest using their control panel applet to manage
    monitors. Even the entry level Radeon like X300 should have handled it well.

    Like I said, GDI and pnp manager don't sync well in 2k/xp. Display modes and
    desktop(as opposed to monitor) are maintained by GDI. GDI decides when to
    query mode list from miniport driver. OTOH, monitors are managed by PNP
    manager. When miniport senses a new monitor, GDI will NOT update the mode
    list, nor does it change the current mode even the newly plugged in can't
    take it. IMHO, it's a limitation in the older OS design. I would expect it
    gets better in LH with the LDDM model. It seems that MSFT got some idea from
    vendor's inventions and built them into the new OS.

    Also note that only monitors with DVI interface (most likely a DFP) can
    generate hotplug events since there's a pin defined for that purpose. Analog
    monitor will/can NOT generate hotplug event. Such monitor may have EDID
    though. If that was the case, you still have a chance to lose the screen
    since miniport is not likely polling the interface. Polling for monitor is
    very expensive.

    good luck,
     
    Calvin Guan, Oct 24, 2005
    #12
  13. maria

    Tim Guest

    Interesting - I don't appear to have an ATI branded control panel
    applet. Normally ATI would be all over the display settings like a
    rash.
    We can hope.
    Most analog monitors drive ID2 low on the 15 pin connector, so the
    video card can detect the presence, or lack, of a monitor. Some laptops
    do this to switch the display.

    Tim.
     
    Tim, Oct 25, 2005
    #13
  14. maria

    Calvin Guan Guest

    Redeon driver does that. It's called "load detection", the last measure to
    detect a monitor. The problem with this approach is the impedance varies
    from monitor to monitor. It's not very reliable.
     
    Calvin Guan, Oct 25, 2005
    #14
    1. Advertisements

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.