8

もしそうなら、なぜですか?レンダリング コマンドをグラフィックス カード ドライバにパ​​イプする以外に、X は何をしてくれますか?

X - OpenGL の関係についてはよくわかりません。インターネットで検索しましたが、簡潔な答えが見つかりませんでした。

問題がある場合は、ヘッドレス Ubuntu 13 マシンのような最小限の最新のディストリビューションを想定しています。

4

2 に答える 2

8

現在のドライバーの場合: はい。

もしそうなら、なぜですか?

X サーバーは、GPU と通信する実際のグラフィックス ドライバーのホストであるためです。現時点では、Linux GPU ドライバーは、稼働する環境を提供する X サーバーと、GPU と通信するためのカーネル インターフェイスへのチャネルを必要とします。

DRI/DRM/Gallium のフロントでは、EGL-API などを使用して、X サーバーなしで GPU を使用できるようにする新しいドライバー モデルが作成されました。ただし、現在これでサポートされている GPU はごく一部です。ほとんどの Intel と AMD。なし

X - OpenGL の関係がよくわかりません

https://stackoverflow.com/a/7967211/524368およびhttps://stackoverflow.com/a/8777891/524368にあるSOの回答で詳しく説明しました

つまり、X サーバーは GPU の「プロキシ」のように機能します。「ウィンドウを開く」や「そこに線を引く」などの X サーバー コマンドを送信します。また、「GLX」と呼ばれる X プロトコルの拡張機能があり、各 OpenGL コマンドが GLX/X オペコードのストリームに変換され、X サーバーが呼び出し元のクライアントに代わって GPU でこれらのコマンドを実行します。また、ほとんどの OpenGL/GLX 実装は、クライアント プロセスが実際に GPU と直接通信できる場合 (X サーバーと同じマシン上で実行され、カーネル API にアクセスする権限があるため)、X サーバーをバイパスするメカニズムを提供します。これはダイレクト レンダリングと呼ばれます。ただし、ウィンドウを開き、コンテキストを作成し、一般的なハウスキーピングを行うには、X サーバーが必要です。

コメントがあったので更新

また、GPU アクセラレーションなしで生活できる場合は、osmesa (オフスクリーン メサ) モードと LLVMpipe ソフトウェア ラスタライザーを使用して Mesa3D を使用できます。

于 2013-09-27T09:19:50.613 に答える
3

Linux 3.12 の場合: もうありません。

commitによると、オフスクリーン レンダリングはDRM レンダー ノードの目的です。より良い説明については、開発者のブログを参照してください。

TLDR:
レンダー ノード ( /dev/dri/renderD<num>) は、画面が接続されていない GPU として表示されます。

これを正確にどのように使用するかについては、(カーネル) 開発者は、ユーザー空間インフラストラクチャに関する非常に一般的なアドバイスしかありません。それでも、クライアントは画面上でレンダリングできなくなるため、この機能は Wayland と Mir のショー イネーブラーにほかならないものと考えるのが妥当です。

ウィキペディアのエントリには、さらにいくつかのポインターがあります。

于 2013-11-26T23:29:33.303 に答える