cc::TransformTree
Blink2861 Marras 2025

cc::TransformTree

source provides a highly detailed technical overview of the Transform Property Tree within the Chromium compositor, which is a core component of the RenderingNG architecture responsible for all coordinate transformations and geometric calculations. This structure uses TransformNode entries to represent individual coordinate spaces, enabling the efficient computation and caching of transforms such as to_parent (local transform to the parent) and to_screen (global transform to the root viewport). Critically, the TransformTree handles complex visual features like CSS transforms, scrolling (treating offsets as translation matrices), 3D contexts and flattening, and pixel snapping to ensure visual precision, all while propagating animation status and damage tracking to minimize recalculations and allow off-main-thread updates.


Jaksot(397)

blink::PaintController

blink::PaintController

builds the display list + paint chunks and manages caching. As painters call into GraphicsContext, they also drive a PaintController which groups drawing into display items and paint chunks (each keye...

10 Loka 202529min

blink::GraphicsContext

blink::GraphicsContext

immediate drawing API that records to a display list. Painters for layout objects use GraphicsContext to “draw”—but in modern Blink those calls get recorded into a display list (PaintRecord) backed by...

10 Loka 202544min

blink::TransformPaintPropertyNode / ClipPaintPropertyNode / EffectPaintPropertyNode / ScrollPaintPropertyNode

blink::TransformPaintPropertyNode / ClipPaintPropertyNode / EffectPaintPropertyNode / ScrollPaintPropertyNode

These are the nodes within those four trees. Every piece of painted content (a “paint chunk”) is associated with a tuple of (Transform, Clip, Effect, Scroll) nodes—its PropertyTreeState. This precisel...

10 Loka 202533min

blink::PaintPropertyTreeBuilder

blink::PaintPropertyTreeBuilder

builds/updates paint property trees.Consumes the layout/fragment data and produces the four paint property trees (Transform, Clip, Effect, Scroll) for the current frame. These trees encode coordinate ...

10 Loka 202547min

blink::PrePaintTreeWalk

blink::PrePaintTreeWalk

cross‑frame pre‑paint traversal. Runs in the InPrePaint lifecycle phase. Walks the entire layout tree starting at the root LocalFrameView, updating paint invalidation state and computing the context n...

10 Loka 202531min

blink::NGPhysicalFragment and friends

blink::NGPhysicalFragment and friends

Layout takes the styled DOM and produces a fragment tree of positioned boxes. In modern Blink this is LayoutNG; the core artifact is NGPhysicalFragment, which stores geometry and is used downstream fo...

10 Loka 202537min

blink::StyleEngine

blink::StyleEngine

style invalidation & resolution (recalc). 
Given DOM/style changes since the last frame, StyleEngine computes updated ComputedStyles, manages active stylesheets/media query state, and marks the right ...

10 Loka 202534min

blink::Document & blink::DocumentLifecycle

blink::Document & blink::DocumentLifecycle

states that gate phases. The document owns the DOM and keeps a DocumentLifecycle state machine that ensures we do things in phase order (style before layout, pre‑paint before paint, etc.). Lifecycle t...

10 Loka 202535min