Chromium Compositor Picture Layer Deep Dive
Blink28631 Okt 2025

Chromium Compositor Picture Layer Deep Dive

This source provides an extensive, practitioner-focused examination of the Chromium Compositor's PictureLayerImpl class and its associated tiling stack, which manages the rasterization and drawing of complex layer content originating from Skia recordings. The document systematically walks through the class's responsibilities, detailing how it handles tiling management, decides the raster scale and translation for content fidelity (including special rules for LCD text), and participates in the overall rendering pipeline by emitting draw quads. A major focus is placed on the difference between ideal scales (geometric target) and raster scales (policy choice driven by stability heuristics like pinch/animation) and the critical invariants, such as ensuring only one high-resolution tiling exists at the chosen raster scale. The text also includes practical tips for modifying the code, emphasizing stability and adherence to complex constraints like hardware-mandated maximum contents scale caps for masks.


Episoder(465)

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 Okt 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 Okt 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 Okt 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 Okt 202535min

blink::LocalFrameView

blink::LocalFrameView

orchestrates style → layout → pre‑paint/paint for a frame. This is the workhorse that actually runs lifecycle phases. On a frame tick from WebFrameWidgetImpl, it goes through style recalc, layout (Lay...

9 Okt 202544min

blink::LocalFrame

blink::LocalFrame

the document host and local‑root boundary.
The local frame owns the Document and its LocalFrameView. The local root frame coordinates lifecycle for its subtree (including OOPIF boundaries handled late...

9 Okt 202532min

blink::Page

blink::Page

the page container and animation clock keeper. Page holds frame trees and the PageAnimator that services script‑driven animations on each tick. It’s the top‑level context for the document/view that We...

9 Okt 202534min

blink::WebFrameWidgetImpl

blink::WebFrameWidgetImpl

renderer‑main entry to Blink’s lifecycle. This is where a compositor BeginFrame (coming in via content/public and mojo plumbing) first turns into Blink work on the renderer main thread. It receives th...

9 Okt 202532min

Populært innen Teknologi

lydartikler-fra-aftenposten
romkapsel
tomprat-med-gunnar-tjomlid
teknisk-sett
energi-og-klima
nasjonal-sikkerhetsmyndighet-nsm
shifter
smart-forklart
rss-ki-praten
rss-impressions-2
pedagogisk-intelligens
elektropodden
rss-ai-forklart
rss-polypod
hans-petter-og-co
rss-alt-vi-kan
rss-for-alarmen-gar
rss-anleggspraten
rss-teknologioptimistene-energibransjens-it-podcast
rss-alt-som-gar-pa-strom