fbdevドライバーの削除に向けた議論
「fbdev(Linux Framebuffer Device)」は、グラフィックカード(以下GPU)の違いを吸収し、同じ手段でGPUへのアクセス方法をソフトウェアに提供する抽象レイヤーです。アプリケーションは「fbdev」を利用することで特定のGPUに依存することなく、画面の描画を行うことができます。
一般的にコンソールで利用されることが多い仕組みです。
PCに搭載されているGPUが「nVidia」でも「Radeon」でも「Intel」でも、アプリはGPUごとに描画処理を実装しなくても済む、ということになります。
fbdevドライバー
この時、GPU側の処理を担当するソフトウェアがfbdevドライバーです。fbdevドライバーはGPUごとに提供されており、予め決められたインターフェースを実装し、統一されたアクセス手段を提供します。
登場から18年
「Linux Kernel」で「fbdev」の仕組みが登場してから18年が経過しました。年数からも分かる通り、今のようなモダンなユーザーインターフェースが登場する前の仕組みです。
「fbdev」には3Dアクセラレーションを扱う仕組みがなく、3Dアクセラレーション活用した今どきのデスクトップ環境には不向きな仕組みです。
またモダンなGPUはGPU自身の仕組みが当時とは大きく変わっており、モダンなGPUの性能を引き出すには、 「fbdev」では力不足です。
一方CUI環境では、今どきのGUIのような高度な描画や管理が不要であり、「fbdev」はXサーバーと比較して軽量なため、今でもコンソールで利用されます。
fbdevからDRMへ
PCの性能が向上しGUIでも3Dアクセラレーションが利用されるようになり、その時代の変化に合わせるように「DRM(Direct Rendering Manager)」が登場しました。「DRM」はLinux Kernelのサブシステムであり、GPUにアクセスするためのインターフェース(DRM API)をアプリケーションに提供します。
「DRM」により、複数のソフトウェアが協調してGPUリソースを活用できるようになりました。
アプリケーションは「DRM API」を通じて3Dアクセラレーションによる描画を行ったり、「GPGPU」を活用できます。
「Xサーバー」や「Mir」、「Wayland」といったディスプレイサーバーでも「DRM」は利用されています。
fbdevドライバー削除提案
「fbdev」ドライバーの削除提案は数年前から何度か提案されていましたが、2016年11月23日に再度削除提案が行われました。- [RFC PATCH 0/3] staging: remove fbdev drivers
- [RFC PATCH 0/3] staging: remove fbdev drivers
- Linux Kernel Developers Discuss Dropping FBDEV Staging Drivers
fbdevフレームワークは保守のみ行われている状態であり、すべての新しいディスプレイドライバーはDRMフレームワークで作成するよう促しています。
ここ数年DRMインターフェースは改良が施され、小型デバイスでもfbdevドライバーの代わりにDRMドライバーを利用できるようヘルパーインターフェースの追加も行われています。
またDRMは、完全なfbdevエミュレーション機能の提供も提案しています。
Linux Kernel 4.10でfbdevのメンテナーがいなくなる
現在開発中の「Linux Kernel 4.10」では、「fbdev」のメンテナーがメンテナーファイルから自分を削除するように要望を出し、メンテナーが一人もいない事態になっています。もし「fbdev」の削除がうまくいけば、2017年には「fbdev」が削除され、代わりに「DRM」がその役割を担うのではないか、とのことです。