我的显卡、驱动程序、显示器和 xserver 如何以及何时协商出合适的分辨率?有没有办法从设备中获取支持的列表?

我的显卡、驱动程序、显示器和 xserver 如何以及何时协商出合适的分辨率?有没有办法从设备中获取支持的列表?

我试图弄清楚 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 无法从显示器读取任何信息。

相关内容