web-dev-qa-db-ja.com

ディスプレイサーバーvs.ウィンドウマネージャーvs.グラフィックスドライバー?

Linuxのグラフィックスのさまざまな部分についての理解を整理しようとしていますが、次の各概念が果たす役割について混乱しています。

  • ディスプレイサーバー
  • ウィンドウマネージャー
  • グラフィックドライバー

私の質問:

  • グラフィックスドライバーはLinuxカーネルの内部または外部に実装されていますか?カーネルの外部にある場合、ネットワーク、ディスク、ファイルシステムがすべてカーネルの内部にあるのに、なぜそれらが除外されるのですか?
  • X Windows、Gnome、Ubuntu Unity、KDE、Mir、Waylandは、ディスプレイサーバー、ウィンドウマネージャー、グラフィックスドライバーに関して何をしていますか?

この質問の私の目標は、どのプロジェクトがLinuxグラフィックスエクスペリエンスのどの部分に貢献しているかを理解することです。

[〜#〜]更新[〜#〜]http://blog.mecheye.net/2012/06/the-linux -graphics-stack / には、探していた詳細がたくさんあります。

8
ams

「グラフィックスドライバー」という用語は、いくつかの異なるものを指すために使用されます。それらの1つはカーネルドライバーです。カーネルドライバは、ほとんどの場合、ビデオモードを設定するだけで、カードとの間でデータをやり取りしやすくなります。また、通常、ファームウェアをカードのGPUにダウンロードします。ファームウェアはGPU自体が実行するプログラムですが、残念ながらグラフィックスベンダーはバイナリBLOBとしてのみ提供しているため、ソースコードを見ることができません。

その上で、通常Xorgを実行しています。Xorgには、汎用のX11またはOpenGL描画呼び出しをカードが理解できるコマンドに変換し、それらをカードに送信して実行する独自のドライバーがあります。また、GPUが実行するコマンドとサポートしないコマンドによっては、作業自体の一部を実行する場合もあります。 OpenGL呼び出しの場合、ダイレクトレンダリングインフラストラクチャでは、許容可能なパフォーマンスを得るために、ドライバーのこの部分をXサーバーではなくクライアントアプリケーションで実際に直接実行できます。また、起動時にXorgおよびカーネルドライバーと連携して支援することにより、クライアントアプリケーションのドライバーがコマンドを直接GPUに送信できるようにします。

WaylandとMirは、簡略化されたタイプのディスプレイサーバーとしてXorgに取って代わることになっています。

Unityは、シェル(デスクトップ/ランチャーを提供)とコンポジットウィンドウマネージャーの両方を1つにまとめたものです。

GNOMEとKDEはデスクトップ環境です。それらは多くのコンポーネントで構成される大規模なプロジェクトです。それらの中核は、GNOME用のGTKとKDE用のQtであるそれぞれのアプリケーションツールキットです。これは、アプリケーションの記述に使用されるライブラリフレームワークであり、他のすべてが構築される基盤を提供します。それらが提供する基本的なサービスには、イベントとオブジェクトの処理、Windows、基本的な描画機能、I/Oなどがあります。

3
psusi
  • グラフィックドライバは、ロードする必要のあるカーネルモジュールとして実装されます。つまり、基本的には、カーネルの外側です。それらを含むカーネルを構築できるかどうかは、私よりも知識のある人が答える問題です。カーネルがnouveauドライバでビルドされていると、後で独自のNVIDIAドライバをロードするときに競合が発生するため、それらはカーネルから除外されたと思います。
  • X Windows、Wayland、Mirはディスプレイサーバーです。
  • Gnome、Ubuntu Unity、KDEはすべてデスクトップ環境であり、ウィンドウマネージャーではありません。ウィンドウマネージャーはデスクトップ環境の一部です(たとえば、Gnomeはmetacityを使用します)。そうは言っても、 awesomexmonadopenbox のようなスタンドアロンのウィンドウマネージャー(デスクトップ環境なし)を実行できます。

どのコンポーネントがどの役割を果たすかについて:

  • グラフィックドライバは、カーネルがグラフィックカードと「通信」する方法です。
  • ディスプレイサーバーは、ディスプレイのウィンドウやその他のグラフィック要素を作成および管理するサーバーです。
  • デスクトップ環境またはウィンドウマネージャーは、ディスプレイサーバーのクライアントとして機能し、ウィンドウ、パネルなどを描画/装飾する方法を指示します。
4
Joseph R.