I was trying to figure out how KDE or GNOME decides which resolution could be supported by the monitor and graphic card connected.
I have 2 senario about this question, I will try to explain the process based on my understanding, please point me out if I'm wrong:
boot to grub, there is no graphic driver or xserver. grub will show boot menu with framebuffer. at this time grub will read EDID from the monitor and choose a proper resolution. Is that right?
I know when boot to grub, we can always press "c" to enter grub command line and get supported resolution from monitor with command videoinfo Does this command read from monitor EDID? Is the "EFI GOP driver" a temperary driver for the graphic card? what is the graphic card's role in this process? Was the graphic card in the nogotiation process? If yes, how did grub get to know the supported resolution for the graphic card?
boot to the desktop. Now we have xserver, and we can use xrandr command to show the supported resolution for the video card. but how does xserver decide which is the resolution supported both by monitor and the video card? Is there any command line tool we can use to get the supported resolution for the monitor?
In senario 1, I can see 1024x768 is supported with command videoinfo but when I set GFXMODE=1024x768 in grub, the grub menu will be on the right side of the screen, while auto will be fine. How did this happen? In senario 2, desktop will not in the middle of the screen when some of the resolution was set. Is the reason the same as that in senario 1?
by the way, I was using a monitor with VGA and HDMI interface, issues I met only happened when using VGA interface. The OS was debian10 with kernel 4.19.
I also tried use read-edid and edid-decode to read EDID, but I don't think the output is accurate enough, at least 1920x1080 was not in the list. Sometimes, get-edid will fail to read any info from the monitor.