Index: third_party/WebKit/Source/platform/graphics/paint/README.md |
diff --git a/third_party/WebKit/Source/platform/graphics/paint/README.md b/third_party/WebKit/Source/platform/graphics/paint/README.md |
index 618a5fc976f1998ab16f2eb4db73174ec2852f7a..009a7529b5869309a6780cfce57994fead84770b 100644 |
--- a/third_party/WebKit/Source/platform/graphics/paint/README.md |
+++ b/third_party/WebKit/Source/platform/graphics/paint/README.md |
@@ -134,10 +134,6 @@ emit display items to a `PaintController` (using `GraphicsContext`). |
### Standalone display items |
-#### [CachedDisplayItem](CachedDisplayItem.h) |
- |
-See [Display item caching](../../../core/paint/README.md#paint-result-caching). |
- |
#### [DrawingDisplayItem](DrawingDisplayItem.h) |
Holds an `SkPicture` which contains the Skia commands required to draw some atom |
@@ -164,14 +160,17 @@ Callers use `GraphicsContext` (via its drawing methods, and its |
a `PaintController`. |
`PaintController` is responsible for producing the paint artifact. It contains |
-the *current* paint artifact, which is always complete (i.e. it has no |
-`CachedDisplayItem` objects), and *new* display items and paint chunks, which |
+the *current* paint artifact, and *new* display items and paint chunks, which |
are added as content is painted. |
+Painters should call `PaintController::useCachedDrawingIfPossible()` or |
+`PaintController::useCachedSubsequenceIfPossible()` and if the function returns |
+`true`, existing display items that are still valid in the *current* paint artifact |
+will be reused and the painter should skip real painting of the drawing or subsequence. |
+ |
When the new display items have been populated, clients call |
-`commitNewDisplayItems`, which merges the previous artifact with the new data, |
-producing a new paint artifact, where `CachedDisplayItem` objects have been |
-replaced with the cached content from the previous artifact. |
+`commitNewDisplayItems`, which replaces the previous artifact with the new data, |
+producing a new paint artifact. |
At this point, the paint artifact is ready to be drawn or composited. |
@@ -193,11 +192,12 @@ cached drawings by calling `DisplayItemClient::setDisplayItemsCached()`. |
A display item is treated as validly cached in a paint controller if its cache |
generation matches the paint controller's cache generation. |
-`kInvalidCacheGeneration` is a special cache generation value which matches no |
-other cache generations. When a `DisplayItemClient` is invalidated, we set its |
-cache generation to `kInvalidCacheGeneration`. When a `PaintController` is |
-cleared (e.g. when the corresponding `GraphicsLayer` is fully invalidated), we |
-also set its cache generation to `kInvalidCacheGeneration`. |
+A cache generation value smaller than `kFirstValidGeneration` matches no |
+other cache generations thus is always treated as invalid. When a |
+`DisplayItemClient` is invalidated, we set its cache generation to one of |
+`PaintInvalidationReason` values which are smaller than `kFirstValidGeneration`. |
+When a `PaintController` is cleared (e.g. when the corresponding `GraphicsLayer` |
+is fully invalidated), we also invalidate its cache generation. |
For now we use a uint32_t variable to store cache generation. Assuming there is |
an animation in 60fps needing main-thread repaint, the cache generation will |