Chromium Compositor PictureLayerImpl Deep Dive
Blink28631 Loka 2025

Chromium Compositor PictureLayerImpl Deep Dive

The source provides an extensive technical overview of the cc::PictureLayerImpl class, a critical component in the rendering architecture of Chromium's compositor, responsible for processing content on the compositor thread. This class manages the complex process of tiled rasterization, breaking a layer's drawing commands (from the main thread) into Tile textures at various scales for display performance, particularly during zooming and animation. The text details the class's fields, including the PictureLayerTilingSet (which holds multiple resolution tilings), scale factors (ideal vs. raster), and invalidation tracking. Furthermore, it explains key methods like PushPropertiesTo (transferring state to the active layer) and the AppendQuads process, which converts ready tiles into draw commands for the final rendering output, while managing optimizations for animated images, solid colors, and LCD text.

Jaksot(394)

cc::LayerImpl / PictureLayerImpl

cc::LayerImpl / PictureLayerImpl

Impl‑side layer objects that reference property‑tree nodes and emit draw quads from recorded paint (tiles).

22 Syys 202550min

cc::PropertyTrees

cc::PropertyTrees

(TransformTree / ClipTree / EffectTree / ScrollTree) with nodes cc::TransformNode / ClipNode / EffectNode / ScrollNode — The impl‑side property‑tree state that positions, clips, blends, and scrolls co...

22 Syys 202534min

cc::LayerTreeHostImpl

cc::LayerTreeHostImpl

The compositor‑thread twin that owns the active/pending trees, runs impl‑side animations/scroll, and prepares draw. Implements cc::InputHandler for threaded scrolling/pinch.

22 Syys 202546min

main —> impl cc::LayerTreeHost

main —> impl cc::LayerTreeHost

Packages updated layers/property trees; kicks a commit to the compositor thread (via the proxy).

22 Syys 202536min

blink::PropertyTreeManager

blink::PropertyTreeManager

Bridges Blink’s paint property trees into cc property trees: creates/updates cc TransformNode, ClipNode, EffectNode, and ScrollNode (including inner/outer viewport scroll nodes).

22 Syys 202539min

blink::PaintArtifactCompositor

blink::PaintArtifactCompositor

Decides what needs to be composited and prepares the main‑thread representation to feed cc (layers if needed, scrollbar compositing, etc.).

22 Syys 202542min

blink::PaintArtifact

blink::PaintArtifact

The immutable package of paint chunks + display items for this frame, used to drive compositing without re‑painting.

21 Syys 202536min

blink::TransformPaintPropertyNode / ClipPaintPropertyNode / EffectPaintPropertyNode / ScrollPaintPropertyNode

blink::TransformPaintPropertyNode / ClipPaintPropertyNode / EffectPaintPropertyNode / ScrollPaintPropertyNode

The paint property trees captured during painting (transform, clip, effect/opacity, scroll offset) that define visual & coordinate‑space state.

21 Syys 202541min