以下のメモは概要把握としては間違っていないようには心がけたつもりですが、
間違っている可能性が大いにありますので、鵜呑みにしないようご注意ください。
DRI, DRM, KMS の目的
昔は Xサーバーが描画を一手に引き受けていたため、描画に関するコードが X依存になってしまっていた。OpenGL など最近のグラフィックスを描画使用したいケースで問題になってしまう。また Xorg の設計が古くて現状耐えられない状況にきていたりもするようで。
LibDRM
DRMカーネルモジュールはユーザー空間に危険な(不安定な)APIを公開しているので、
アプリが直接この DRMのモジュールを使うべきではない。その代わりに libDRM が提供されているので、アプリはこちらを使用する。この libDRM は Xからも使用される。
DRM (DRMcore)
カーネルモジュールです。これはすべてのカードに適用されるモジュールです。
このモジュールがロードされるとカード固有の DRM ヘルパモジュールが動きだして、
機能ポインタのセットを含めた状態でシステムに登録される。
これにより /dev/dri/card0 などのデバイスファイルが作成・登録される
KMS (Kernel Mode Setting)
ユーザースペースではなくカーネル空間側でディスプレイの解像度・色深度を設定するモジュールです。他の利点としてシステムは素早くグラフィックスの機能を使用可能になったり、ちらつきの問題改善などがあるらしい。
DRM/KMS
これらをまとめて DRM/KMS という表記をしている模様。つまり KMS をサポートしたドライバがあるなら libDRM を直接叩いて描画コードを作れば、X11(Xorg) なしでも画面描画が可能になりそうな感じです。Xサーバーの実装さえ、この libDRM 経由っぽいですし。
コメント
[…] すらりん日記 – DRM/KMS についてメモ https://blog.techlab-xe.net/archives/4291 […]