Teams‎ > ‎

Paint Team (paint-dev)

The paint team has been subsumed into the new rendering core team. Please see the rendering core page for details about ongoing paint and canvas work.

This page is preserved for posterity and will no longer be updated.
This is the home page for the Chromium Paint team (or just Paint team, or paint-dev).


The Paint team's responsibility is to own and evolve:
  • the paint invalidation, raster invalidation, paint, 2D canvas and SVG code in Blink;
  • the interface between Blink and the Chrome Compositor ("cc") (Blink Compositing);
  • and integration between that interface with the mechanics of cc and Skia.
See below for details on what these bullets mean.


The Paint Invalidation code in Blink is in charge of marking which elements in the LayoutObject tree need Paint. The relevant code is scattered across the various classes in core/layout. For more information, see the Paint Invalidation section of core/paint/

The Raster Invalidation code in blink is in charge of marking which cc::Layers need to be re-rastered to reflect changes in painted output. For more information, see the Raster Invalidation section of platform/graphics/paint/

The Paint code in Blink is in charge of mapping from a description of the style and layout of a tree of LayoutObjects to a display list of low-level graphics commands suitable for giving to a rasterization library such as Skia, and making decisions for compositing in cc. The relevant code is in core/paint.

The Canvas code in Blink is sprinkled throughout the pipeline all the way from the HTMLCanvasElement to its implementation in each phase of the pipeline.

The SVG code in Blink is in core/svg as well as the SVG-named files in core/layout and core/paint.

The interface between Blink and cc is the data structure used to pass the output of Blink to cc for compositing and rasterization onto the screen. It includes various interfaces in core/paint/compositing and platform/graphics/compositing.

The integration with cc means most of the "main-thread" cc code, such as the code in building property trees, the code used to communicate with Blink to fetch the painted output, and the implementation of the recording and raster interfaces to composite and draw that painted output. The code is in various places in src/cc/.

The integration with Skia means collaboration with Skia engineers to improve interfaces for clarity, proper pipeline layering and performance, plus some implementation. The code is in src/third_party/skia/.


The primary activity of the Paint team at present is Slimming Paint.


Markdown documentation: