豆ナイトの石原さんのとこ面白そうだなぁ...

http://d.hatena.ne.jp/kinneko/20090903/p6
行きたかったけど無理だもんな。
木南さんがtsudaってくれたのをコピっておく。

オープンソースなので「誰かに最適化されている」分けではない。製品にするには、自分で最適化しなければならない場合がある
ということで、SufaceFlingerの最適化についてのお話だそうです
Androidは16bitカラーしかサポートしていない。が、SurfaceFlingerは32bit化が考慮されているので、32bit化も可能。
変更点は、FrameBufferの32bitマクロの有効化と、Surfaceバッファの32bit化。アプリの変更はしなくてもOK
でも、32bit化にしたら、性能が1/10以下に! 遺憾
性能が1/10になったときのデモ。 かなりもっさり。ballsで5.4fps、、、 なめらかにするには、30から60fpsが必要
CopybitライブラリとOpenGLのチューニングが必要。Androidは、copybitライブラリがあれば、それを使う。だが、オープンソースには入っていない。なので、自分で作るしかない?
Copybitライブラリがない場合には、2D描画でもOpenGLが使われる。なので、OpenGLをチューニングが必要。16bitのチューニングはされているのだが、その他は汎用ルーチンで処理されてしまう
Surface単位に条件モジュールを入れてあげた。チューニング後は60から70fpsまで上がった! デモがうれしそう! でも、会場の反応はちょっと寂しい…
Surfaceバッファのメモリ上限を8MB以上にする場合には、PMEMマクロで変更するのだ
次は、NativeアプリからSurfaceFlingerを利用してみる取り組み
SurfaceFlingerは、サーバークライアントの形式で通信している。メモリ自身は、共有メモリで実現されている。Nativeアプリもそれをやれば使えるはず。
shellからコマンドを実行するデモ! すごい!
でも、レイヤ管理があるので、Javaアプリとの共存には 注意が必要。レイヤは整数値で大きい方が上にくる。