日本Androidの会10月定例に行ってきた
海外のAndroid状況
Androidの画面描画機構をチューニングする!
SurfaceFlingerとは
- 画面アプリソフトウェアの中心
android app |
|
Dalvik(JVM) |
|
SurfaceFlinger |
|
描画エンジン(OpenGL等) |
|
Kernel FlameBuffer |
- 各アプリケーションに対し描画領域を割り当てる
SurfaceFlingerチューニング
- 色深度
- Androidは16bitカラーのみをサポート
- 昨今は計帯電はをはじめ32bitカラーが要求されることが多いがその要求にこたえることができない
- 16bit -> 32bit化させる
- SurfaceFlinger -> FrameBufferの設定を修正する
- FBIOGET_VSCRIININFOでFrameBufferから画面情報を取得
- FBIOPUT_VSCRIININFOでFrameBufferを16bitに設定している<=ここを設定(PIXEL_FORMAT_BGRA_8888)
- 描画速度の問題
- 32bitカラー化により描画性能が1/10に下がってしまった
- 描画速度の改善
- 1アプリケーションあたりのメモリ
- 描画領域は最大で8MB
- テレビのFullHDだと軽く超えてしまう
- 起動してもメモリ確保ができずに起動失敗
- 描画領域バッファを8MB以上にする
- 描画領域は最大で8MB
NativeApplicationでの問題
- C/C++で記述したLinuxNativeアプリケーションのこと