![我的显卡、驱动程序、显示器和 xserver 如何以及何时协商出合适的分辨率?有没有办法从设备中获取支持的列表?](https://linux22.com/image/785404/%E6%88%91%E7%9A%84%E6%98%BE%E5%8D%A1%E3%80%81%E9%A9%B1%E5%8A%A8%E7%A8%8B%E5%BA%8F%E3%80%81%E6%98%BE%E7%A4%BA%E5%99%A8%E5%92%8C%20xserver%20%E5%A6%82%E4%BD%95%E4%BB%A5%E5%8F%8A%E4%BD%95%E6%97%B6%E5%8D%8F%E5%95%86%E5%87%BA%E5%90%88%E9%80%82%E7%9A%84%E5%88%86%E8%BE%A8%E7%8E%87%EF%BC%9F%E6%9C%89%E6%B2%A1%E6%9C%89%E5%8A%9E%E6%B3%95%E4%BB%8E%E8%AE%BE%E5%A4%87%E4%B8%AD%E8%8E%B7%E5%8F%96%E6%94%AF%E6%8C%81%E7%9A%84%E5%88%97%E8%A1%A8%EF%BC%9F.png)
我试图弄清楚 KDE 或 GNOME 如何确定所连接的显示器和显卡可以支持的分辨率。我对这个问题有两种理解,我将尝试根据我的理解解释这个过程,如果我错了,请指出我:
启动到 grub 时,没有图形驱动程序或 xserver。grub 将显示带有帧缓冲区的启动菜单。此时 grub 将从显示器读取 EDID 并选择适当的分辨率。对吗?我知道启动到 grub 时,我们总是可以按“c”进入 grub 命令行并使用命令 videoinfo 从显示器获取支持的分辨率。此命令是否从显示器 EDID 读取?“EFI GOP 驱动程序”是显卡的临时驱动程序吗?显卡在此过程中的作用是什么?显卡是否参与了协商过程?如果是,grub 如何知道显卡支持的分辨率?
启动到桌面。现在我们有了 xserver,我们可以使用 xrandr 命令来显示显卡支持的分辨率。但是 xserver 如何确定显示器和显卡都支持的分辨率呢?有没有命令行工具可以用来获取显示器支持的分辨率?在方案 1 中,我可以使用命令 videoinfo 看到 1024x768 支持,但是当我在 grub 中设置 GFXMODE=1024x768 时,grub 菜单将出现在屏幕的右侧,而自动设置则没问题。这是怎么发生的?在方案 2 中,当设置了某些分辨率时,桌面不会出现在屏幕的中间。原因和方案 1 中的原因一样吗?
顺便说一句,我使用的是带有 VGA 和 HDMI 接口的显示器,我遇到的问题只发生在使用 VGA 接口时。操作系统是带有内核 4.19 的 debian10。
我也尝试使用 read-edid 和 edid-decode 来读取 EDID,但我认为输出不够准确,至少 1920x1080 不在列表中。有时,get-edid 无法从显示器读取任何信息。