
我試圖弄清楚 KDE 或 GNOME 如何決定所連接的顯示器和顯示卡可以支援哪種解析度。關於這個問題我有2個senario,我會試著根據我的理解來解釋這個過程,如果我錯了請指出:
啟動至 grub,沒有圖形驅動程式或 xserver。 grub 將顯示帶有幀緩衝區的啟動選單。此時grub會從顯示器讀取EDID並選擇適當的解析度。是對的嗎?我知道當引導到 grub 時,我們總是可以按“c”進入 grub 命令行並使用命令 videoinfo 從顯示器獲取支援的分辨率 該命令是否從顯示器 EDID 讀取? 「EFI GOP 驅動程式」是顯示卡的臨時驅動程式嗎?顯示卡在這個過程中扮演什麼角色?顯示卡是否正在協商過程中?如果是的話,grub 是如何知道顯示卡支援的解析度的?
啟動到桌面。現在我們有了xserver,我們可以使用xrandr指令來顯示顯示卡支援的解析度。但是xserver如何決定顯示器和顯示卡都支援哪個解析度呢?我們可以使用任何命令列工具來獲取顯示器支援的解析度嗎?在 senario 1 中,我可以看到命令 videoinfo 支援 1024x768,但是當我在 grub 中設定 GFXMODE=1024x768 時,grub 選單將位於螢幕的右側,而 auto 就可以了。這怎麼發生的?在場景2中,當設定某些解析度時,桌面不會位於螢幕中間。原因和情況1一樣嗎?
順便說一句,我使用的是具有 VGA 和 HDMI 介面的顯示器,我遇到的問題僅在使用 VGA 介面時發生。作業系統是 debian10,核心為 4.19。
我也嘗試使用read-edid和edid-decode來讀取EDID,但我認為輸出不夠準確,至少1920x1080不在清單中。有時,get-edid 無法從監視器讀取任何資訊。