サーバー対ウィンドウマネージャー対グラフィックスドライバーを表示しますか?


8

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

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

私の質問:

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

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

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

回答:


3

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

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

WaylandとMirは、単純化されたタイプのディスプレイサーバーとしてXorgを置き換えることになっています。

Unityはシェル(デスクトップ/ランチャーを提供)と合成ウィンドウマネージャーの両方を兼ね備えています。

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


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

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

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

カーネルモジュールは間違いなくカーネルの「内部」にあると見なされます。
psusi 2013

@psusi私は、OPの「内部」と「外部」を、カーネルに組み込まれているという意味と「外部」からロードされているという意味として読むことにしました。おそらく、それらはユーザー空間の一部ではないという意味で、カーネルの「内部」を意味しますよね?
ジョセフR.

はい、それが私が「内側」と「外側」を解釈する方法です。
psusi 2013
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.