グラフィック カード、ドライバー、モニター、xserver はいつ、どのように適切な解像度をネゴシエートしましたか? デバイスからサポートされているリストを取得する方法はありますか?

グラフィック カード、ドライバー、モニター、xserver はいつ、どのように適切な解像度をネゴシエートしましたか? デバイスからサポートされているリストを取得する方法はありますか?

KDE または GNOME が、接続されたモニターとグラフィック カードでサポートできる解像度をどのように決定するかを知りたいと思っていました。この質問には 2 つのシナリオがあります。私の理解に基づいてプロセスを説明してみます。間違っている場合はご指摘ください。

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 インターフェースを使用しているときにのみ発生しました。OS はカーネル 4.19 の debian10 でした。

また、read-edid と edid-decode を使用して EDID を読み取ろうとしましたが、出力が十分に正確ではないようです。少なくとも 1920x1080 はリストにありませんでした。get-edid では、モニターから情報を読み取れないことがあります。

関連情報