
Linuxで低レベルの方法でビデオモードを設定するには?私が知っている限り、最低レベルのユーザースペースはDRMを介してKMSを要求することです。そうですか?それでは、どのようにモード切り替えを実装し、関連する「ビデオメモリ」にアクセスしますか?
答え1
KMS(聞いたことのない人のためのカーネルモード設定)は、カーネルモードビデオドライバを介して実装されます。これらのカーネルモードビデオドライバは、デフォルトで接続されているモニタの基本解像度であるフレームバッファディスプレイを構成します。複数のモニタが接続されている場合、各モニタはデフォルトの解像度を持ち、仮想コンソールは両方のモニタの最小幅と高さに制限されます。
KMSを使用するとフレームバッファが生成されるため、フレームバッファ構成項目はしなければならない働くKMSドライバがないため、現在使用しているシステムではこれを確認できません。しかし、後でKMSを使用してシステムに入る予定で、お知らせします。
バラよりvideo = フレームバッファ起動パラメータ設定モードの使用に関するカーネルドキュメントより多くの情報を知りたいです。
答え2
私はあなたが実際にあなたが求めているものが何であるかを知っているかどうかはわかりません。それとも答えられる方法でそれを表現します。 ...しかし、あなたの質問に答えます。
モードを設定して「ビデオメモリ」を解放しますか?昔のDOSモードXデイズみたいですか?これが必要な場合は、フレームバッファを使用してプログラムする必要があります。もしそうなら、DirectFBを使う方が良いでしょう。 DirectFBは、加速機能を備えたフレームバッファの上にある非常に薄い層と同じです。正直に言うと、アプリケーションを合理的に書く必要があるほど低いレベルです。モードを設定し、より低いレベルで制御できます。直接スタイル制御が必要な場合は、基本的に一部のビデオメモリをマッピングするネイティブフレームバッファを作成する必要があります。 Framebufferのパフォーマンスが悪いと思われる場合は、DirectFBを確認してください。誰かがKMSドライバをロードした場合、そのフレームバッファはKMS / libdrmを介して設定されます。
libdrmはカーネルDRMを使用するためのユーザー空間ライブラリです。これはフレームバッファでも、アプリケーションAPIでもなく、システムデバイスライブラリです。新しいデバイスドライバを生成するには、libdrmは絶対的な選択です。たとえば、libdrm-radeonです。 LinuxはDOSではなく、ハードウェアと直接通信する唯一の方法はカーネルを介することです。すべての汎用アプリケーションはコードをハードウェアに直接送信するわけではないため、一部のlib / API /呼び出しから削除する必要があります。一部のプロジェクトでは、FBUIなどの学術/実験目的のためにカーネル内のアプローチを採用しています。
少なくとも正しい方向を教えてください。そうでない場合は、コメントを残して質問を更新する必要があります。私は少なくとも2回の移行前にこの問題を要求してから追跡を続けてきましたが、より詳細な回答は得られませんでした。追加情報がなければ、実際に言うことはありません。