Linuxのビデオモードを低レベルの方法で設定するにはどうすればよいですか?私が知る限り、ユーザー空間の最下層は、DRM経由でKMSを要求することです。これは正しいです?もしそうなら、どのようにしてモード切り替えと関連する「ビデオメモリ」へのアクセスを実現できますか?
Linuxのビデオモードを低レベルの方法で設定するにはどうすればよいですか?私が知る限り、ユーザー空間の最下層は、DRM経由でKMSを要求することです。これは正しいです?もしそうなら、どのようにしてモード切り替えと関連する「ビデオメモリ」へのアクセスを実現できますか?
回答:
KMS—カーネルモード設定は、聞いたことがない人のために—カーネルモードのビデオドライバーによって可能になりました。これらのカーネルモードビデオドライバーは、フレームバッファーディスプレイを構成します。これは、デフォルトでは、接続されているモニターのネイティブ解像度です。複数のモニターが接続されている場合、各モニターはネイティブの解像度を取得し、仮想コンソールは両方のモニターの最小の幅と高さに制限されます。
KMSを使用するとフレームバッファーが生成されるため、フレームバッファー構成アイテムが機能するはずです。KMSドライバーがないため、現在使用しているシステムでこれを確認できません。しかし、私は後でKMSを使用するシステムにいるので、お知らせします。
詳細については、フレームバッファのvideo =起動パラメータを使用してモードを設定することに関するカーネルのドキュメントを参照してください。
あなたが何を求めているのか本当に理解しているかはわかりませんが、そうでなければ、答えやすい方法でそれを言い表すでしょう。...しかし、あなたの質問に答えることで、最善を尽くします。
モードを設定し、「ビデオメモリ」をサンクしたいですか?古いdosモードX日のように?? これが必要な場合は、フレームバッファを使用してプログラミングする必要があります。そうは言っても、DirectFBを使用する方がはるかに良いでしょう。DirectFBは、フレームバッファ上にある非常に薄いレイヤーのようなもので、高速化されています。その低いレベル、そして正直なところ、アプリケーションを書きたいと思うほど合理的に低いレベルです。モードを設定し、より低レベルのスタイルで制御することができます。直接の直接スタイルコントロールが必要な場合は、Framebufferをrawで記述する必要があります。基本的には、ビデオRAMをmmapします。フレームバッファのパフォーマンスが悪いと感じる場合は、ストレスが足りません。DirectFBをチェックしてください。誰かがKMSドライバーをロードしている場合、そのフレームバッファーはKMS / libdrmを介して設定されます。
libdrmに関しては、カーネルDRMを操作するためのユーザー空間libです。これはフレームバッファではなく、アプリケーションAPIではなく、システムデバイスライブラリです。新しいデバイスドライバーを作成する場合は、libdrmが絶対的な方法です。たとえば、libdrm-radeon。LinuxはDOSではありません。ハードウェアと直接通信する唯一の方法は、カーネルを経由することです。通常のアプリケーションはすべて、コードをハードウェアに直接送信することはありません。lib/ API / callでサンクアウトする必要があります。FBUIなど、学術的/実験的な目的でカーネル内アプローチを採用しているプロジェクトがあります。
私はあなたがコメントしたり、質問を更新したりしなければならない場合でも、少なくともあなたを正しい方向に向けることができたと思います。私はこの質問をその発案以来続けてきました。それは少なくとも2マイグレーション前のことであり、答えに近いものではありません。これ以上の情報がなければ、これ以上言えることはありません。