I did start writing a wiki page entitled
Graphics stack almost two years ago which covers this and more, in very general terms, but it needs a lot more work. It doesn't really address Windows
per se, however.
volglizolic wrote:
Thanx to both of you!!
And what about the monitor?
What is the monitor driver about? (
https://docs.microsoft.com/en-us/windows-hardware/drivers/display/monitor-drivers)
To the best of my knowledge, the monitor driver is mostly used to ensure that the signals from the GPU will sync with what the monitor can handle correctly; it is less about driving the monitor than about giving the GPU the information it needs so it can do so.
The main things the video driver needs from the monitor driver are the vertical sync (usually in Hertz, e.g., 60Hz, 144Hz, and so forth) and horizontal sync rates, horizontal blanking sweep time (on older CRT monitors, this was how long it took the mechanism to reset the electron beam from the far right to the start of the next vertical line at the far left), vertical blanking sweep time (the time for the electron beam to reset from the bottom right to the top left of the screen), the row and column capacities at each speed and mode (e.g., 1920 x 1080), and whether a given mode was interlaced or progressive (
EDIT: interlaced, not interleaved, thanks for pointing that out Octocontrabass). The data packet usually also includes desiderata such as the manufacturer, model name and number, a UUID for the monitor type, and so forth.
Based on what has been said here before about it - comments and corrections welcome - on modern (after, say, 1992 or so) monitors, the monitor itself is also supposed to be able to give this information to the card in the form of an EDID which the card can use to look it up. This is what allows most monitors to work correctly even without a Windows driver for the monitor itself (using the 'generic svga monitor' driver, though the GPU will also pass the EDID information to the CPU so that it can report the specifics). However, the Windows drivers can give more details than the EDID can, at least in principle. In any case, the GPU firmware may not have EDID registration information for a monitor that is newer than the card itself, or the data may be incorrect (something Brendan spent weeks railing about once), so having the pseudo-driver for the monitor is still useful.
While Windows happens to use a driver for this, it is more a matter of what is more generally called 'device registration', that is to say, having the necessary information about the device. Indeed, not all OSes use drivers for the monitors in the sense that Windows does; in Linux, for example, the X.org definition files are generally used instead.
Again, if anyone has any corrections for this, feel free to speak up.