*nix システムにGPUがあるか欺くドライバーの作成

*nix システムにGPUがあるか欺くドライバーの作成

私は*nixベースのシステム用の「エミュレートされたGPUドライバ」を書くことに情熱を注いでいます。つまり、デバッグメッセージとともにX API呼び出しに応答するドライバ(明らかにXサーバーの後ろ)を作成したいと思います。

つまり、*nixシステムが実際のGPUを持つようにだましたいのです。これにより、コンソールベースのシステムでGUIアクセラレーションパッケージ用のテストベッドを作成できます。

これで、*nixコンソールベースのシステムでGUIアクセラレーションパッケージを実行すると、実際のGPU(または私の意見ではより良いGPUドライバ)が不足して終了します。

だから私は知りたいです:

  • 可能ですか? (*nixをだまして実際のGPUを持つようにGPUドライバを作成)
  • コーディングを開始する前にどのリソースをお勧めしますか?
  • オンラインに似たプロジェクトがありますか?

PS:私は経験豊富なANSI-Cプログラマですが、* nixには実際のカーネル/ドライバ開発に関する手がかりがありません(USBドライバ開発に関するいくつかのチュートリアルを読んでください)。したがって、これらの分野についていくつかの質問があります。リソースは次のとおりです。どうもありがとうございました。よろしくお願いします。

答え1

お客様の要件を考慮すると、ドライバーを直接作成する必要はありません。あなたは使用することができますLLVMパイプライン、あなたの要件を満たしていると思います。特に「本物のドライバー」だ。一部単語の意味であり、X11を実行するために必要ではありません。

llvmpipe は OpenGL シェーダを即座に CPU の機械語に変換して実行し、解釈する仮想 GPU を生成します。それは部分を使用しますLLVMこれを可能にするインフラです。

しかしそれはおそらく実際に起こるのは、llvmpipeがそれを呼び出すバイナリによってリンクされているため、あなたの要件を満たしています。つまり、これはカーネルで実行される実際のリアルタイムドライバではありません。代わりにlibGL.soOpenGLシェーダを解釈する代替手段を作成します。

ソースコードで3Dグラフィックスアクセラレータをコンパイルできない場合は、llvmpipeを使用して良い効果が得られない可能性があります。 (しかし、これは自分のプログラムをデバッグするのに役立つことを望んでいるので問題ではありません。)

質問に必要な内容に関する追加情報を提供できます。具体的には:コードをデバッグする理由運転席側から?必要なデバッグコードをプログラム自体(またはプログラム自体)に入れることができないのはなぜですか?呼び出しが失敗すると、XライブラリとOpenGLライブラリの両方がエラーの原因に関する情報を提供します。デバッグを容易にするためにプログラムがこの情報(およびカーネルメッセージ)を使用できないのはなぜですか?カーネルに実装されている仮想ドライバを使用してドライバ側で取得するデバッグ情報が、実際のシステムで実際に何が起こっているのかと一致すると予想されるのはなぜですか?さらに重要なのは、プログラムが低レベルの問題を生成する場合、その問題が実際の世界で実行されているときに他のGPUとドライバでも同じであると仮定するのはなぜですか?あなたはこれらの質問に対する完璧な答えを得ることができます(しかも何か落ちたかもしれませんが)こう説明すると、質問への回答が簡単になりそうです。

(しかし、llvmpipeの興味深いアプリケーションは、3Dアクセラレーションバージョンでのみ書かれたGUIを有効にしますが、3Dアクセラレーションを持たないコンピュータでもまだ実行されているということです。理論的には、3Dアクセラレーションが利用できない状況で役に立ちます。シェルの実行、実際に機能するにはいくつかの開発タスクが必要になるかもしれませんが、GNOMEシェルは自動的に実装されない可能性があるいくつかの構成関連の前提を持っていると思います。いくつかのパフォーマンスの問題。 UnityはUbuntu 12.10の実際の作業例です。単一バージョン別々の「Unity 2D」実装ではなく、llvmpipeの上で実行できます。 )

関連情報