web-dev-qa-db-ja.com

DirectFBがGNU / Linuxで広く使用されていないのはなぜですか? X11には存在しない重大な制限はありますか?

私の知る限り、DirectFBは多くの種類のグラフィックカードにハードウェアアクセラレーションを提供します。さらに、X11よりも小さく、高速で、使用するメモリも少なくて済みます。では、なぜ今よりも主流ではないのでしょうか。

これが私が本当に確信していないことです:一般的なGTK +/Qtプログラムをそれに移植する必要がありますか? DirectFBサイトには、Firefoxを移植するためのプロジェクトがあります。 GTK +にDirectFBを直接使用する機能があるのに、なぜそれが必要なのですか?私が(おそらく間違って)理解している方法は、FirefoxがGTK +に出力し、GTK +がDirectFBに出力し、GTK +がハードウェアに出力するというものです。私がそれについて間違っているならば、私を訂正してください。

ありがとう、

ハッサン

22
Hassan

最新のLinuxシステムのオーバーヘッドの原因としてXについて強調している場合は、おそらく適切な場所を探していません。 Xは、現代の携帯電話よりもはるかに強力ではないコンピューター用に非常に昔に設計されました。

「トップ」を見て、メモリを使用しているXを見ると、実際のXオーバーヘッドを把握するために行うべき作業がたくさんあります。 「実際の」メモリではないメモリマップがあり、アプリに代わって割り当てられたリソース(ピクセルの大きなブロックなど)があります。結論として、上部のXに表示されるメモリは、人が考えるものではありません。

また、Xが「ネットワーク」を使用していると聞いて、これがパフォーマンスのボトルネックになると考えています。ここでの「ネットワーク」とは、ローカルUNIXドメインソケットを意味し、最新のLinuxではオーバーヘッドがごくわずかです。ネットワーク上でボトルネックになるもの、高速化するためのX拡張機能(共有メモリピックスマップ、DRIなど)があります。ボトルネックは、ローカルソケットの最小限のオーバーヘッドよりも、同じハードウェアにアクセスする複数のスレッドまたはプロセスを調整するという固有の問題に関係しているため、処理中のスレッドは必ずしもXソケットよりも高速であるとは限りません。

マルチプロセスセットアップには、クラッシュがはるかに難しいなど、多くの利点があります。 Google Chromeを参照してください。たとえば、複数のプロセスを使用してより堅牢になり、実行速度も速くなります。プロセスが少ないからといって、必ずしも最新であるとは限りません。

GTKを使用するアプリがDirectFBに透過的に移植されない理由はたくさんあります。 Firefoxの場合、1つはXを直接使用することがあるということです。また、ブラウザプラグインインターフェイスなど、ツールキットに依存しないものはXを直接使用します。たとえば、FlashプラグインはDirectFBでは機能しません。 Xを直接使用しないアプリでさえ、通常のXベースのデスクトップ環境(GNOMEなど)が存在すると想定することがよくあります。

Xの置き換えに関するもう1つの問題は、ドライバーのサポートです。どちらの優れたグラフィックカード(NVidia、ATI)にも、無料のドライバーよりも優れた機能を備えた独自のドライバーがあり、それらの独自のドライバーはXに関連付けられています。

そしてもちろん、移行パスがあります。 Xを使用しているアプリが何百もあり、Xの明確なエンドユーザーの欠点がない場合、アプリが機能しないものに切り替える人は誰もいません。ほとんどの場合、ここでの解決策は、新しいウィンドウシステムで実行されるルートレスXサーバーであるため、古いアプリは引き続き機能します。

古いものは必ずしも悪いわけではありません。 Xは賢い人々によって非常にうまく設計されており、それによってXは進化し、変化し、何年も経っても機能するようになりました。

とにかく、長い言い方をすれば、基本的にXからの切り替えは多大な労力を要し、実際に正常に機能し、「正常に機能する」ことはどの選択肢にも適用されたことはありません(少なくともほとんどのアプリを実行できるようにしたい場合)ほとんどのハードウェア)。

Xには、Waylandプロジェクトが検討しているアトミック画面の更新を実行できないなどの問題がありますが、ほとんどの問題は、ユーザーにとっては本当に表面的なもの(非アトミックな更新など)または開発者にとっては表面的なものです(古い非推奨の拡張機能など)。 Xを落として、魔法のようにもっと小さくて速いものを手に入れることができるというのは真実ではありません。これは主に、「古い」「ネットワークを使用する」は遅くて肥大化する必要があると推測している人々に基づいていますが、Xは本当に本当にくだらないハードウェア用に設計されました。私は以前、386でX(およびEmacs!)を8メガのRAMなど)で正常に実行していました。

20
Havoc P

x11は、画面に描画するための単なる方法ではありません。これは、ネットワーク対応のデスクトッププロトコルスイート全体です。 DirectFB は(私が知る限り)x11を置き換えることを意図しておらず、むしろそれと並行して実行されます。つまり、DirectFBは、基本的な入力とグラフィック出力へのアクセスを必要とするアプリケーションの軽量な「ホスト」になるよう努めています。 Xサーバー(Xのサーバーは物事を表示するものです:-)がDirectFBを使用するように記述されている可能性があります。

DirectFBのGTKはX11のGTKとは異なります

9
user166390

DirectFBは問題を解決しないため、単純です。組み込みシステムの場合は問題ありませんが、デスクトップの場合、多くを失い、実際には何も得られません。

6

DirectFB は、メモリフットプリントが小さい組み込みシステム向けに設計されました。これにより、アプリケーションは直接APIを介してビデオハードウェアと直接通信できるようになり、グラフィック操作が高速化および簡素化されます。

これは、完全なX Window Systemサーバー実装のオーバーヘッドを回避するために、ゲームや組み込みシステムの開発者によってよく使用されます。

http://elinux.org/DirectFB

4
karlphillip

X11はDirectFBよりもはるかにポータブルです。 X11アプリは、Linux、BSD、Solaris、AIX、HP-UX、MacOS X、Windows(CygwinまたはExceed経由)、およびその他の多くのプラットフォームで実行できます。 DirectFBはほとんどLinuxのみです。

2
alanc

XDirectFB の場合、DirectFBを使用するルートレスXサーバーがあります。

1
Ikem Krueger