Androidグラフィックアーキテクチャの1つ-概要



One Android Graphics Architecture Overview



HWC(hwcomposer)は、Androidでウィンドウ(レイヤー)を合成および表示するためのHALレイヤーモジュールです。その実装はデバイス固有であり、通常、SurfaceFlingerサービスのハードウェアサポートを提供するためにディスプレイデバイスメーカー(OEM)によって完了されます。

SurfaceFlingerは、OpenGL ESを使用して、GPUリソ​​ースを占有および消費するレイヤーを合成できます。ほとんどのGPUは、レイヤー構成用に最適化されていません。 SurfaceFlingerがGPUを介してレイヤーを合成する場合、アプリケーションはGPUを独自のレンダリングに使用できません。 HWCは、ハードウェアデバイスを使用してレイヤー合成を実行します。これにより、GPU合成のプレッシャーを軽減できます。
ディスプレイデバイスの機能は大きく異なります。 APIを直接使用して、合成用のハードウェアデバイスでサポートされているレイヤーの数、レイヤーが回転モードとブレンドモードの操作を実行できるかどうか、レイヤーの配置とハードウェア合成の制限を示すことは困難です。したがって、上記の情報を記述するHWCのプロセスは次のとおりです。



  1. SurfaceFlingerは、HWCにすべてのレイヤーの完全なリストを提供し、HWCがハードウェア機能に応じてこれらのレイヤーを処理する方法を決定できるようにします。
  2. HWCは、GPUによって合成されるか、HWCによって合成されるかにかかわらず、各レイヤーの合成方法をマークします。
  3. SurfaceFlingerは、最初にGPU合成でマークされたすべてのレイヤーを出力バッファーに合成し、次にこの出力バッファーを他のレイヤー(HWC合成でマークされたレイヤー)と一緒にHWCに渡して、HWCがの合成と表示を完了できるようにします。残りのレイヤー。

これまで、このシリーズの主な内容は大まかに説明してきました。プロセスには、ロジック全体に影響を与えないVSync、WMSなども含まれているため、次の記事で詳しく分析します。