DirectFBメモなど
SqueakのDirectFB版ディスプレイドライバのバグが取れたので、DirectFBのメモをとっておく。
DirectFB
DirectFBはframebufferを使ったグラフィックスライブラリで、X WindowのXLibに相当するようなものらしい。特徴として次のようなものがある。
- 極力ハードウェアアクセラレータを使う
- (X Windowのような)ネットワークを介さないので、軽い
- グラフィックスライブラリではあるが、一般的な図形描画はあまり得意ではない。
- サポートするグラフィックスチップはそれほど多くない(http://www.directfb.org/index.php?path=Main%2FSupport%2FGraphicsを参照)
- ハードウェアアクセラレータが使えない場合でもMMXなどを使ったソフトウェアアクセラレータが動く
- ハードウェアアクセラレータが使える場合framebufferは初期化や情報取得だけで、描画はハードウェアを使う
- X Windowに比べメモリ使用量/フットプリントが小さい
backendとしてSDL,Gtk+,VNC,X11があるらしい。
上記の理由から主に組込み向けとWindowなどで透過モードが扱えるので一部マニアにも受けているかも。でどうしてこのDirectFBでSqueakと思ったのはマイPCではX Windowがすごく重かったのでDirectFBを使えばいいと思ったのだが、VIAチップは癖があってハードウェアアクセラレーションがうまく動かず、マッタリとなるんで、最近はあまりいじってないです。ただもう少し描画が速ければ、重いX WindowよりDirectFBで動かしていることでしょう。
Squeakディスプレイドライバ
XLibがわかる人はplatforms/unix/vm-display-X11/sqUnixX11.cが参考になる。テンプレートとしてvm-display-customがあるのでそれも参考になる。基本的にはイベントのSqueakイベントへの変換と描画部分(display_ioShowDisplay関数)がキモですね。DirectFBのイベントはまだよくわかっていなかったりする。ちなみにDirectFB版ディスプレイドライバはSqueak3.3時代には作られて公開されていますが、現状のSqueakやDirectFBのバージョンと大きく違うのでそのまま動かない可能性があります。わたしの場合、DirectFBの勉強を兼ねて、ほとんどScratchからソースを書きました。
現状はDirectFB-1.0.0-rc2, Squeak-3.9-8で動作確認