Surface Flinger p 6 Surface Flinger Android Java

  • Slides: 55
Download presentation

① Surface. Flinger とは? p 6

① Surface. Flinger とは? p 6

Surface. Flingerとは? Androidアプリケーション Java. VM (Dalvik) Surface. Flinger User Kernel 描画エンジン(Open. GLなど) Linux Frame.

Surface. Flingerとは? Androidアプリケーション Java. VM (Dalvik) Surface. Flinger User Kernel 描画エンジン(Open. GLなど) Linux Frame. Buffer Videoデバイス p 8

Surface. FlingerのFrame. Buffer設定 現在の設定手順 システムの起動時に下記のようなやり取り が行われている Surface. Flinger FB情報取得 Frame. Buffer FBIOGET_VSCREENINFO FBIOPUT_VSCREENINFO 16

Surface. FlingerのFrame. Buffer設定 現在の設定手順 システムの起動時に下記のようなやり取り が行われている Surface. Flinger FB情報取得 Frame. Buffer FBIOGET_VSCREENINFO FBIOPUT_VSCREENINFO 16 bitカラー で動作する ように設定! 16 bitカラー に変更! FBIOGET_VSCREENINFO FB設定反映 の確認 p 16

Surface. FlingerのFrame. Buffer設定 つまり... Frame. Buffer を 32 bitで設定し、 Surface. FlingerがFrame. Bufferを 32 bitとして認識

Surface. FlingerのFrame. Buffer設定 つまり... Frame. Buffer を 32 bitで設定し、 Surface. FlingerがFrame. Bufferを 32 bitとして認識 できれば、実現は出来る 32 bitカラー化 (16 bitカラー以上)は p 17

Surface. FlingerのFrame. Buffer設定 Surface. Flingerで設定できる Frame. Buffreフォーマットは? PIXEL_FORMAT_RGB_565 (default) 16 bit RGB (565) フォーマット

Surface. FlingerのFrame. Buffer設定 Surface. Flingerで設定できる Frame. Buffreフォーマットは? PIXEL_FORMAT_RGB_565 (default) 16 bit RGB (565) フォーマット PIXEL_FORMAT_BGRA_8888 32 bit BGRA(8888) フォーマット PIXEL_FORMAT_ARGB_8888 32 bit ARGB(8888) フォーマット Surface. Flingerには 32 bitカラーの考慮有り p 18

Surface. FlingerのFrame. Buffer設定 32 bit化の方法 Frame. Buffer を 32 bitに設定 Surface. Flinger で Frame.

Surface. FlingerのFrame. Buffer設定 32 bit化の方法 Frame. Buffer を 32 bitに設定 Surface. Flinger で Frame. Bufferのフォーマットを PIXEL_FORMAT_BGRA_8888 として設定する Surface. Flinger FBIOGET_VSCREENINFO Frame. Buffer PIXEL_ FORMAT_ BGRA_8888 32 bitカラー で動作する ように設定! FBIOPUT_VSCREENINFO 32 bitカラー に変更! FBIOGET_VSCREENINFO p 19

アプリの生成するSurface バッファの割り当てパターンは? OPAQUE (default) 16 bit RGB(565)のバッファを確保 TRANSPARENT 16 bit RGBA(5551)のバッファを確保 TRANSLUCENT 32 bit

アプリの生成するSurface バッファの割り当てパターンは? OPAQUE (default) 16 bit RGB(565)のバッファを確保 TRANSPARENT 16 bit RGBA(5551)のバッファを確保 TRANSLUCENT 32 bit ARGB(8888)のバッファを確保 Surfaceバッファにも32 bit化の考慮有り p 22

Surface 32 bppバッファ化 アプリのSurface生成のデフォルト 設定をOPAQUE(16 bpp)から TRANSLUCENT (32 bpp) に変 更することで既存アプリのSurface も32 bit化が可能 32

Surface 32 bppバッファ化 アプリのSurface生成のデフォルト 設定をOPAQUE(16 bpp)から TRANSLUCENT (32 bpp) に変 更することで既存アプリのSurface も32 bit化が可能 32 bpp p 23

Copybitライブラリの使用 Copybit ライブラリ とは? 存在していたらCopybit エンジン呼び出し! アプリ Surface. Flinger /system/lib/hw/copybit/ ro. hardware があるか探す 描画エンジン

Copybitライブラリの使用 Copybit ライブラリ とは? 存在していたらCopybit エンジン呼び出し! アプリ Surface. Flinger /system/lib/hw/copybit/ ro. hardware があるか探す 描画エンジン Open. GL Copybit 出力 Frame. Buffer p 29

16 bppの場合は? Surface の条件毎に専用のモジュールを設 定している Surface 32 bpp(α無し) 32 bpp⇒ 16 bpp 特化関数 Surface

16 bppの場合は? Surface の条件毎に専用のモジュールを設 定している Surface 32 bpp(α無し) 32 bpp⇒ 16 bpp 特化関数 Surface 32 bpp(α有り) 32 bpp⇒ 16 bpp α有り特化関数 Surface 16 bpp⇒ 16 bpp 特化関数 Frame. Buffer 16 bit p 33