フレームバッファを使ったカーネルモードの設定?

フレームバッファを使ったカーネルモードの設定?

KMSを使用すると、グラフィックドライバがカーネルに移動します。フレームバッファはすでにカーネルにあるので、これがフレームバッファの動作に影響を与えるとは思いません。しかし、KMSがfbを置き換え、fbを改善し、fbが必要で、fbサポートを削除する必要があることを読んでいます。間違いがありましたか?私が探している答えは、KMSとフレームバッファの関係の説明です。

私はttyで基本的な解像度を得るためにuvesafbを使用してきました。ここで私の目的は、KMSがあるシステムでこれがどのように機能するかを理解することです。また、次の内容を扱うのに役立ちます。 KMSを使用するとスクロール速度が速くなりますか? fbtermやfbidaのようなユーティリティは同じように動作しますか?より安定していますか?

ベストアンサー1

まず、基本的に2種類のクラシックフレームバッファドライバがあります。

  • 一般的なハードウェアおよびファームウェアドライバ(例:vga、vesafb / uvesafb、efifb)
  • ハードウェア関連ドライバ(例:intelfb、rivafb、atyfb)

クラシックフレームバッファドライバはすべてデフォルトモード設定をサポートしていますが、ハードウェアアクセラレーションのサポートはほとんどありません。

クラシックXデザインでは、これは実際には問題になりません。 2D アクセラレーションを得るには、X サーバーが root として実行され、ハードウェアに直接アクセスします。デフォルトでは、フレームバッファドライバを完全にバイパスします。 3D(および最新のカードの2Dサポート)の場合は、カーネルDRMドライバを使用してビデオメモリへのアクセスを調整および管理します。

この設定では、モード設定はカーネルフレームバッファドライバとユーザ空間Xサーバの2つの位置で行われる。このコードの冗長性(およびVTスイッチなどのドライバ間の断続的な競合)は理想的ではありません。

さらに、同じハードウェアの場合、カーネルにはフレームバッファドライバとDRMドライバという2つの別々のドライバがあります。ハードウェア固有のフレームバッファドライバ(intelfbなど)を使用している場合は、フレームバッファドライバまたはDRMドライバのいずれかをロードできますが、両方をロードすることはできません。

KMSはこれらの問題に対する解決策です。それ:

  • カーネルハードウェア関連のフレームバッファドライバとdrmドライバを単一のドライバにマージしました。
  • Xサーバー、Waylandコンポジター、または他のアプリケーションへのインターフェースを提供してモード設定を制御するため、ユーザースペースアプリケーションがハードウェアに直接アクセスする必要はありません。 (実際にKMSを使用すると、Xサーバーにはroot権限が必要なくなります。)

いくつかの興味深い注意:現在、KMSへの移行は実際には2004年頃に始まりました。コンソールの再設計に関するJon SmirlのEメール

より具体的な質問に答えるには:

  • 速度は通常、加速されていない一般的なドライバ(VGA、vesafbなど)の1つよりも悪くはありませんが、KMSフレームバッファのテキストコンソールは速度ではなく利便性と緊急使用のために設計されており、コンソールは完全に加速されていない一部のドライバよりも優れています。発揮します。 。たとえば、Intelカードでは、長い改行がひどいです。
  • 以前のフレームバッファインタフェースを使用するように設計されたアプリケーションは、KMS フレームバッファで引き続き実行できます。

おすすめ記事