Chromium Code Reviews
DescriptionImplement incremental paint property tree rebuilding
This patch implements incremental paint property tree rebuilding based
on an invalidation scheme similar to paint invalidation. When property-
affecting values change we set FrameView/LayoutObject as needing a property
tree update. At the moment all property node updates force the entire property
subtree to be rebuilt, but TODOs have been added to add more granular
updates.
When no property invalidation occurs we still need to walk the property
trees update the builder context, but we can re-use existing nodes
instead of reconstructing them.
An underinvalidation checking mechanism has been added for debug
builds to catch cases where we miss a call to set an object as
needing a property tree update.
Design doc:
https://docs.google.com/document/d/1_GkBfvameyhnLV7ODIRsOoTedQEG5liAcHwAxmwS-Vk/view
Performance results on blink_perf.Paint[1]:
color-changes.html: 0%
large-table-background-change-with-invisible-collapsed-borders.html: -15.92%
large-table-background-change-with-visible-collapsed-borders.html: -9.37%
large-table-collapsed-border-change.html: -5.42%
large-table-collapsed-border-change-with-backgrounds.html: 0%
large-table-collapsed-border-change-with-text.html: -4.56%
large-table-repaint.html: 0%
paint-offset-changes.html: -2.68%
transform-changes.html: -7.40%
[1] tools/perf/run_benchmark blink_perf.paint --browser=content-shell-release --pageset-repeat=5 --extra-browser-args=--enable-slimming-paint-v2
BUG=645667
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2
Committed: https://crrev.com/1f505949fff2006a80f3883f129c580cf423c67c
Cr-Commit-Position: refs/heads/master@{#431732}
Patch Set 1 #
Total comments: 4
Patch Set 2 : Suppress main thread scrolling invalidation failures #Messages
Total messages: 19 (8 generated)
|