Wikipediaのこの画像は、いわゆる「Linuxグラフィックスタック」を示しています。
私は新しいラップトップを購入しましたが、GPU専用のデバイスドライバがないとしましょう。だから、ある日、まともな開発者が素晴らしいフリードライバーを作るまで、グラフィック品質は良くありませんでした。そして、Linuxディストリビューションを更新すると、グラフィックの品質が本当に素晴らしいと完璧になったことがわかりました。私の質問:更新によってグラフィックスタックがどのように変更されましたか?具体的には、新しいグラフィックドライバがユーザースペースでのみ実行されるのか、少なくとも一部がカーネルスペースで実行されているのかを知りたいです。しかし、私は非常に高度なLinuxユーザーではありません。この点に注意してください。 :)
答え1
このグラフでは、イメージスタックは実際には変更されません(したがって抽象レベルで)。ほとんどのプログラムは違いを感じません(ただし、たとえば1秒あたりのフレームを測定する場合)。
しかし、読んでいるファイルはほとんど変わりませんでした。
最初の変更はLinuxカーネルまたはより良いカーネルモジュールです。新しいグラフィックカードには新しいドライバが必要な場合があります。注:多くのドライバが非常に一般的であるため、既存のシリーズの新しいGPUを使用している場合、ほとんどの機能は正常に動作しますが、可能性を最大限に活用できない可能性があります。または、最終的に未知のカードを許可するには、いくつかのブートパラメータ(またはより良い:モジュールパラメータ)を入力する必要があります。カーネルは主に権限とリソースを処理するため、核兵器ビデオカードを使用してください。
他の変更は上の図のようにユーザースペースにあります:libGL(レンダリング、計算)とは異なる部分(カラー管理、画面管理、GPUの計算など)を処理する他のドライバがあるかもしれません。プログラムをインストールすると、パッケージマネージャはGPUを使用することを実行する(または利用可能なGPUがないことを知らせる)汎用ドライバをインストールします。ここで、主なタスクはすでに完了しています(またはよりよく委任されています)。プログラムは次のように伝えます。そのような効果が必要であり、ライブラリはCPUでそのタスクを実行するか、GPUに委任またはブレンドします(分離して複数のタスクを送信します)。 GPUへ)。繰り返しますが、新しいGPUシリーズを使用しない場合は、一部の機能が認識され使用されます。可能性を最大限に活用することはありませんが、CPUの負荷をある程度削減します。
GPUの違いを過大評価しないでください。ほとんどのアーキテクチャは変更されていません。ベンチマークには多くの改善がありますが、アーキテクチャは同じです。いくつかの最適化、新しいコア、より多くのメモリなどがあり、これは以前のドライバで認識される可能性があります。新しい機能(光線追跡、3Dシャドウなど)があるかもしれませんが、この場合、これらの機能を使用するプログラム(およびそれを実装するライブラリ/ドライバ)があるまで、新しいドライバはあまり役に立ちません。
したがって、Ubuntu(および他のディストリビューション)では、最初からいくつかのサポートを受けることができます(非常に基本的、新しい種類のVESAとも呼ばれ、高度ですが完全に最適化されていません)(他のメーカーと比較して、一部のメーカーはLinuxでより積極的です)。完全なサポート(ドライバー)を入手するには時間がかかります(新しいアーキテクチャの場合はより多くの時間、適切な文書がない場合はより多くの時間、「Apple Silicon」のGPUを参照)。そして、プログラムやゲーム(およびライブラリ)の完全なサポートを受けるにはもっと時間がかかります。