https://www.chromium.org/developers/design-documents/aura/graphics-architecture
外観
Auraウインドウは対応する合成機レイヤを持つ。レイヤツリーは大体ウインドウツリーに対応する。ビューもレイヤをサポートするから、1つのAuraウインドウはビューによって作成されたネストされたレイヤを持つ。
レイヤがテクスチャを持つ場合、合成機により描画される。AuraはChromium合成機(CC)の利用へと遷移する。CCを書いているときはそれはWebKitの一部だったが、それを抜き出してChromiumのライブラリにする試みもある。
合成機は2つのレイヤツリーをもつ、1つはUIスレッドにあり、オプリョンのもう1つは合成機スレッドにある。これにより、アニメーションのパフォーマンスが上がり、スクロールの反応も良くなる。詳しくはCCドキュメントを参照。CCライブラリはコマンドバッファ経由でGPUプロセスと会話し、最終的なレンダリングを行う。
Pre-Layer Tree Unification World
以前の2つのレイヤツリーは1つはUI用でもう1つはレンダープロセスのコンテント用でる。レンダラプロセスは直接WebLayerをつかい、一方UIはそれをui/compositorのui::Layerでラップして、Auraやビューの追加機能に役立つ機能を提供する。
CCが抽出されてスタンドアロンなライブラリになれば、ui::LayerはCCLayer''に置き換わる。
ペイントスケジュール/ドローフロー
ここでのドキュメントとソースことではペイントとドローの参照がある。ペイントはほとんどの場合Viewsシステムよって実行され、ウインドウのコンテントを更新する。これは典型的にはSkiaキャンバスのコンテントを更新するソフトウェアオペレーションである。ドローは合成機によってレイヤのテクスチャを描画するオペレーションである。
描画は2つのソースからトリガされる。1つはRootWindowHostが所有しているネイティブウインドウによって(WM_PAINTやExpose)。またはScheduleDraw()をコールすることによって。後者の場合はタスクがポストされその中でDraw()が呼ばれる。
Layer also supports a method SchedulePaint(), which is exposed through Window and also NativeWidgetAura and used by Views when some sub-region of the layer is to be marked invalid. The layer stores the current invalid rect which is a union of all invalid rects specified since the last validation.
When the compositor draws, it performs a depth-first walk of the layer tree, and if any of the layers it encounters has an invalid rectangle, it is asked to repaint its contents. The compositor does this via WebKit::WebContentLayerClient, implemented by ui::Layer. The layer asks its delegate to repaint via a call of OnPaintLayer() which takes a Skia canvas sized to the invalid rect. In Aura, the delegate is the Window, and the Window asks its delegate to repaint. In production this is often a NativeWidgetAura, a Views type. As mentioned earlier, Views can also have layers directly, and as such a View can also be a layer's delegate.
Once the draw is complete the invalid region is validated so no further paint notifications are sent until explicitly requested by a subsequent invalidation.