blink::PaintController
Blink28610 Loka 2025

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 keyed by the current property‑tree state). It also handles reuse of cached items to avoid repaint when nothing visually changed. Output is an immutable PaintArtifact. (Chromium Git Repositories)

Key fields

  • PaintArtifact* new_paint_artifact_ — being built for this frame;

  • PaintArtifact* old_paint_artifact_ — previous frame for cache matching;

  • PaintChunker paint_chunker_ — forms chunk boundaries based on property state;

  • PaintControllerPersistentData* persistent_data_ — holds prior artifact & subsequences. (Chromium Git Repositories)

Most important methods

  • UpdateCurrentPaintChunkProperties(const PropertyTreeStateOrAlias&) — starts/updates the current chunk when property state changes. (Chromium Git Repositories)

  • template <class T> CreateAndAppend(...) — appends a display item (records drawing op + metadata). (Chromium Git Repositories)

  • bool UseCachedItemIfPossible(...) — reuses prior items to skip repaints. (Chromium Git Repositories)

  • void BeginFrame(const void* frame) / FrameFirstPaint EndFrame(const void* frame) — delimit a painting pass for metrics + cache book‑keeping. (Chromium Git Repositories)

  • (Internals also maintain id→index maps to support O(1)/linear cache lookups.) (Chromium Git Repositories)

Hands off to: the PaintArtifact it produces.


Jaksot(391)

Blink's Rendering Engine: A Forest of Trees

Blink's Rendering Engine: A Forest of Trees

The provided source details the intricate rendering pipeline of Google Chrome's Blink engine, explaining how web content transforms from HTML/CSS into on-screen pixels. It outlines a sequence of speci...

6 Syys 202540min

Blink's StyleEngine: Chromium CSS Deep Dive

Blink's StyleEngine: Chromium CSS Deep Dive

The provided document details Blink's StyleEngine, a crucial component within Chromium's rendering engine responsible for managing all CSS styles for a web document. It orchestrates style data and ope...

5 Syys 202555min

Deep Dive: The CSS Flexbox Layout Model

Deep Dive: The CSS Flexbox Layout Model

This source offers a comprehensive technical lecture on the CSS Flexbox Layout Model, beginning with an overview of traditional CSS layout methods like block, inline, table, positioned, and float layo...

5 Syys 20251h 2min

Fixing Chrome Bug 40786326: A Developer Walkthrough

Fixing Chrome Bug 40786326: A Developer Walkthrough

This resource provides a thorough guide to resolving Chrome Bug 40786326, which involves an inside marker trailing margin overshoot. The explanation will begin with the process of test creation, detai...

5 Syys 202541min

Flexible Grid Systems: CSS Grid and Beyond

Flexible Grid Systems: CSS Grid and Beyond

This source provides an extensive overview of CSS Grid Layout, a powerful two-dimensional system for web design. It details Grid's specifications and capabilities, explaining how tracks are sized, ite...

5 Syys 202551min

Blink's LayoutNG: Fragment Tree Generation Deep Dive

Blink's LayoutNG: Fragment Tree Generation Deep Dive

This lecture outline provides an in-depth overview of LayoutNG's fragment tree generation within Blink, Google Chrome's rendering engine. It highlights the transition from the legacy layout system, wh...

5 Syys 20251h 2min

Blink's Layer Tree: Architecture, Rendering, and Performance

Blink's Layer Tree: Architecture, Rendering, and Performance

The provided text offers an in-depth look into Blink's layer tree, a crucial component in Chromium's rendering engine responsible for transforming web pages into pixels. It explains the architecture o...

5 Syys 20251h 2min

Blink's Rendering: Fragment Tree to Layer Tree Conversion

Blink's Rendering: Fragment Tree to Layer Tree Conversion

The provided text details Blink's rendering pipeline, specifically focusing on the conversion of the Fragment Tree to the Layer Tree within Chromium's RenderingNG architecture. It explains how layout ...

5 Syys 202528min