Chrome Compositor Animation Architecture (cc)
Blink28615 Okt 2025

Chrome Compositor Animation Architecture (cc)

The sources provide an extensive architectural overview of the Chrome Compositor Animation (cc) subsystem, which is responsible for executing visual animations like transforms and opacity changes efficiently. This architecture relies on a dual-thread model, where the main thread prepares animation data, but the actual animation ticking, interpolation, and property updates happen on the dedicated compositor thread (impl thread) to ensure smooth, "hitch-free" rendering independent of main thread activity. Key components described include the AnimationHost, which coordinates animations on each thread, and the hierarchy of classes—Animation, KeyframeEffect, and KeyframeModel—that represent the animated properties and their curves. The sources detail the synchronization lifecycle of animations from creation on the main thread through the commit process to continuous per-frame ticking on the impl thread, while also distinguishing compositor-accelerated animations from those that must run on the main thread. Finally, the text explores performance strategies like GPU acceleration, frame rate synchronization, and support for modern features such as Scroll-Linked Animations and the Animation Worklet API.

Avsnitt(417)

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 Sep 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 Sep 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 Sep 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 Sep 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 Sep 202542min

blink::PaintArtifact

blink::PaintArtifact

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

21 Sep 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 Sep 202541min

blink::PaintController

blink::PaintController

Records drawing into a DisplayItemList, segmenting it into PaintChunks keyed by property‑tree state. (Output: a PaintArtifact.)

21 Sep 202533min

Populärt inom Teknik

uppgang-och-fall
elbilsveckan
natets-morka-sida
market-makers
bilar-med-sladd
rss-elektrikerpodden
rss-laddstationen-med-elbilen-i-sverige
rss-technokratin
har-vi-akt-till-mars-an
skogsforum-podcast
musikprodd-podden
rss-uppgang-och-fall
rss-it-sakerhetspodden
rss-digitala-influencer-podden
rss-rapporterat
rss-veckans-ai
vi-bilagares-podcast
bli-saker-podden
rss-sakerhetspodcasten
rss-fabriken-2