Partial raster invalidation is needed to invalidate selection, part of canvas etc. For now, SPv2 just does full paint invalidation (if we are doing it correctly).
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/bc49021b12f8c83ebfab26d374f164b9452b7b09 commit bc49021b12f8c83ebfab26d374f164b9452b7b09 Author: Xianzhu Wang <wangxianzhu@chromium.org> Date: Wed Sep 13 05:24:14 2017 Invalidate partial rectangle during paint invalidation Record partial invalidation rectangle in LayoutObject:: InvalidatePaintRectangle(). During paint invalidation, get the rect and invalidate it. This CL is for SPv1, and prepares for SPv2 partial raster invalidation. Bug: 732612 Cq-Include-Trybots: master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 Change-Id: I65b96e47fa105258e6f677e2923c361585ecfbda Reviewed-on: https://chromium-review.googlesource.com/663977 Reviewed-by: Chris Harrelson <chrishtr@chromium.org> Commit-Queue: Xianzhu Wang <wangxianzhu@chromium.org> Cr-Commit-Position: refs/heads/master@{#501548} [modify] https://crrev.com/bc49021b12f8c83ebfab26d374f164b9452b7b09/third_party/WebKit/Source/core/exported/WebPluginContainerImpl.cpp [modify] https://crrev.com/bc49021b12f8c83ebfab26d374f164b9452b7b09/third_party/WebKit/Source/core/exported/WebPluginContainerImpl.h [modify] https://crrev.com/bc49021b12f8c83ebfab26d374f164b9452b7b09/third_party/WebKit/Source/core/layout/LayoutObject.cpp [modify] https://crrev.com/bc49021b12f8c83ebfab26d374f164b9452b7b09/third_party/WebKit/Source/core/layout/LayoutObject.h [modify] https://crrev.com/bc49021b12f8c83ebfab26d374f164b9452b7b09/third_party/WebKit/Source/core/paint/HTMLCanvasPaintInvalidator.cpp [modify] https://crrev.com/bc49021b12f8c83ebfab26d374f164b9452b7b09/third_party/WebKit/Source/core/paint/ObjectPaintInvalidator.cpp [modify] https://crrev.com/bc49021b12f8c83ebfab26d374f164b9452b7b09/third_party/WebKit/Source/core/paint/ObjectPaintInvalidator.h [modify] https://crrev.com/bc49021b12f8c83ebfab26d374f164b9452b7b09/third_party/WebKit/Source/core/paint/PaintInvalidator.cpp [modify] https://crrev.com/bc49021b12f8c83ebfab26d374f164b9452b7b09/third_party/WebKit/Source/core/paint/RarePaintData.h
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/e6c43e952806dc1dfa59380d7445f67dbd139587 commit e6c43e952806dc1dfa59380d7445f67dbd139587 Author: Kunihiko Sakamoto <ksakamoto@chromium.org> Date: Wed Sep 13 07:00:18 2017 Revert "Invalidate partial rectangle during paint invalidation" This reverts commit bc49021b12f8c83ebfab26d374f164b9452b7b09. Reason for revert: Caused SEGV in browser_tests and webkit_layout_tests. https://uberchromegw.corp.google.com/i/chromium.chromiumos/builders/Linux%20ChromiumOS%20Tests%20%281%29/builds/44465 https://uberchromegw.corp.google.com/i/chromium.mac/builders/Mac10.12%20Tests/builds/5207 https://uberchromegw.corp.google.com/i/chromium.webkit/builders/WebKit%20Linux%20Trusty/builds/32519 Original change's description: > Invalidate partial rectangle during paint invalidation > > Record partial invalidation rectangle in LayoutObject:: > InvalidatePaintRectangle(). During paint invalidation, get the rect and > invalidate it. > > This CL is for SPv1, and prepares for SPv2 partial raster invalidation. > > Bug: 732612 > Cq-Include-Trybots: master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 > Change-Id: I65b96e47fa105258e6f677e2923c361585ecfbda > Reviewed-on: https://chromium-review.googlesource.com/663977 > Reviewed-by: Chris Harrelson <chrishtr@chromium.org> > Commit-Queue: Xianzhu Wang <wangxianzhu@chromium.org> > Cr-Commit-Position: refs/heads/master@{#501548} TBR=wangxianzhu@chromium.org,chrishtr@chromium.org Change-Id: I53140c2754ca3cf9cc29cf15f2284dc4fa39a14e No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: 732612 Cq-Include-Trybots: master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 Reviewed-on: https://chromium-review.googlesource.com/664321 Reviewed-by: Kunihiko Sakamoto <ksakamoto@chromium.org> Commit-Queue: Kunihiko Sakamoto <ksakamoto@chromium.org> Cr-Commit-Position: refs/heads/master@{#501560} [modify] https://crrev.com/e6c43e952806dc1dfa59380d7445f67dbd139587/third_party/WebKit/Source/core/exported/WebPluginContainerImpl.cpp [modify] https://crrev.com/e6c43e952806dc1dfa59380d7445f67dbd139587/third_party/WebKit/Source/core/exported/WebPluginContainerImpl.h [modify] https://crrev.com/e6c43e952806dc1dfa59380d7445f67dbd139587/third_party/WebKit/Source/core/layout/LayoutObject.cpp [modify] https://crrev.com/e6c43e952806dc1dfa59380d7445f67dbd139587/third_party/WebKit/Source/core/layout/LayoutObject.h [modify] https://crrev.com/e6c43e952806dc1dfa59380d7445f67dbd139587/third_party/WebKit/Source/core/paint/HTMLCanvasPaintInvalidator.cpp [modify] https://crrev.com/e6c43e952806dc1dfa59380d7445f67dbd139587/third_party/WebKit/Source/core/paint/ObjectPaintInvalidator.cpp [modify] https://crrev.com/e6c43e952806dc1dfa59380d7445f67dbd139587/third_party/WebKit/Source/core/paint/ObjectPaintInvalidator.h [modify] https://crrev.com/e6c43e952806dc1dfa59380d7445f67dbd139587/third_party/WebKit/Source/core/paint/PaintInvalidator.cpp [modify] https://crrev.com/e6c43e952806dc1dfa59380d7445f67dbd139587/third_party/WebKit/Source/core/paint/RarePaintData.h
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/028f963b42a147c8affd442432e13c9c5ef5d11a commit 028f963b42a147c8affd442432e13c9c5ef5d11a Author: Xianzhu Wang <wangxianzhu@chromium.org> Date: Wed Sep 13 21:46:01 2017 Reland "Invalidate partial rectangle during paint invalidation" This reverts commit e6c43e952806dc1dfa59380d7445f67dbd139587. Fixed the original bug by calling SetMayNeedInvalidation() instead of SetMayNeedPaintInvalidationWithoutGeometryChange() in LayoutObject:: InvalidatePaintRectangle(). Also removed unnecessary DisablePaintInvalidationStateAsserts for InvalidatePaintRectangle() which now doesn't immediately invalidate. Original change's description: > Revert "Invalidate partial rectangle during paint invalidation" > > This reverts commit bc49021b12f8c83ebfab26d374f164b9452b7b09. > > Reason for revert: Caused SEGV in browser_tests and webkit_layout_tests. > > https://uberchromegw.corp.google.com/i/chromium.chromiumos/builders/Linux%20ChromiumOS%20Tests%20%281%29/builds/44465 > https://uberchromegw.corp.google.com/i/chromium.mac/builders/Mac10.12%20Tests/builds/5207 > https://uberchromegw.corp.google.com/i/chromium.webkit/builders/WebKit%20Linux%20Trusty/builds/32519 > > > Original change's description: > > Invalidate partial rectangle during paint invalidation > > > > Record partial invalidation rectangle in LayoutObject:: > > InvalidatePaintRectangle(). During paint invalidation, get the rect and > > invalidate it. > > > > This CL is for SPv1, and prepares for SPv2 partial raster invalidation. > > > > Bug: 732612 > > Cq-Include-Trybots: master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 > > Change-Id: I65b96e47fa105258e6f677e2923c361585ecfbda > > Reviewed-on: https://chromium-review.googlesource.com/663977 > > Reviewed-by: Chris Harrelson <chrishtr@chromium.org> > > Commit-Queue: Xianzhu Wang <wangxianzhu@chromium.org> > > Cr-Commit-Position: refs/heads/master@{#501548} > > TBR=wangxianzhu@chromium.org,chrishtr@chromium.org > > Change-Id: I53140c2754ca3cf9cc29cf15f2284dc4fa39a14e > No-Presubmit: true > No-Tree-Checks: true > No-Try: true > Bug: 732612 > Cq-Include-Trybots: master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 > Reviewed-on: https://chromium-review.googlesource.com/664321 > Reviewed-by: Kunihiko Sakamoto <ksakamoto@chromium.org> > Commit-Queue: Kunihiko Sakamoto <ksakamoto@chromium.org> > Cr-Commit-Position: refs/heads/master@{#501560} Change-Id: Id70bba820dc832c59c4704e41edd16e680542894 Bug: 732612 , 457415 , 764676 Cq-Include-Trybots: master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 Reviewed-on: https://chromium-review.googlesource.com/664821 Reviewed-by: Chris Harrelson <chrishtr@chromium.org> Commit-Queue: Xianzhu Wang <wangxianzhu@chromium.org> Cr-Commit-Position: refs/heads/master@{#501762} [modify] https://crrev.com/028f963b42a147c8affd442432e13c9c5ef5d11a/third_party/WebKit/Source/core/exported/WebPluginContainerImpl.cpp [modify] https://crrev.com/028f963b42a147c8affd442432e13c9c5ef5d11a/third_party/WebKit/Source/core/exported/WebPluginContainerImpl.h [modify] https://crrev.com/028f963b42a147c8affd442432e13c9c5ef5d11a/third_party/WebKit/Source/core/frame/LocalFrameView.cpp [modify] https://crrev.com/028f963b42a147c8affd442432e13c9c5ef5d11a/third_party/WebKit/Source/core/layout/LayoutObject.cpp [modify] https://crrev.com/028f963b42a147c8affd442432e13c9c5ef5d11a/third_party/WebKit/Source/core/layout/LayoutObject.h [modify] https://crrev.com/028f963b42a147c8affd442432e13c9c5ef5d11a/third_party/WebKit/Source/core/paint/HTMLCanvasPaintInvalidator.cpp [modify] https://crrev.com/028f963b42a147c8affd442432e13c9c5ef5d11a/third_party/WebKit/Source/core/paint/ObjectPaintInvalidator.cpp [modify] https://crrev.com/028f963b42a147c8affd442432e13c9c5ef5d11a/third_party/WebKit/Source/core/paint/ObjectPaintInvalidator.h [modify] https://crrev.com/028f963b42a147c8affd442432e13c9c5ef5d11a/third_party/WebKit/Source/core/paint/ObjectPaintInvalidatorTest.cpp [modify] https://crrev.com/028f963b42a147c8affd442432e13c9c5ef5d11a/third_party/WebKit/Source/core/paint/PaintInvalidator.cpp [modify] https://crrev.com/028f963b42a147c8affd442432e13c9c5ef5d11a/third_party/WebKit/Source/core/paint/RarePaintData.h [modify] https://crrev.com/028f963b42a147c8affd442432e13c9c5ef5d11a/third_party/WebKit/Source/core/paint/compositing/PaintLayerCompositor.cpp
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/c319ba9ce483450f40b92b3385bd2230ae98744f commit c319ba9ce483450f40b92b3385bd2230ae98744f Author: Xianzhu Wang <wangxianzhu@chromium.org> Date: Fri Sep 29 23:09:08 2017 [SPv2] Partial raster invalidation Save partial invalidation in LayoutObject::PartialInvalidationRect() and issue raster invalidation in PaintController. Bug: 732612 Cq-Include-Trybots: master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 Change-Id: I9a8f01c0f00b18106371750c7c9c9a8667a4af5b Reviewed-on: https://chromium-review.googlesource.com/689964 Reviewed-by: Chris Harrelson <chrishtr@chromium.org> Commit-Queue: Xianzhu Wang <wangxianzhu@chromium.org> Cr-Commit-Position: refs/heads/master@{#505464} [modify] https://crrev.com/c319ba9ce483450f40b92b3385bd2230ae98744f/third_party/WebKit/LayoutTests/FlagExpectations/enable-slimming-paint-v2 [modify] https://crrev.com/c319ba9ce483450f40b92b3385bd2230ae98744f/third_party/WebKit/Source/core/layout/LayoutObject.cpp [modify] https://crrev.com/c319ba9ce483450f40b92b3385bd2230ae98744f/third_party/WebKit/Source/core/layout/LayoutObject.h [modify] https://crrev.com/c319ba9ce483450f40b92b3385bd2230ae98744f/third_party/WebKit/Source/core/paint/ObjectPaintInvalidator.cpp [modify] https://crrev.com/c319ba9ce483450f40b92b3385bd2230ae98744f/third_party/WebKit/Source/platform/graphics/paint/DisplayItemClient.h [modify] https://crrev.com/c319ba9ce483450f40b92b3385bd2230ae98744f/third_party/WebKit/Source/platform/graphics/paint/PaintController.cpp [modify] https://crrev.com/c319ba9ce483450f40b92b3385bd2230ae98744f/third_party/WebKit/Source/platform/graphics/paint/PaintControllerTest.cpp [modify] https://crrev.com/c319ba9ce483450f40b92b3385bd2230ae98744f/third_party/WebKit/Source/platform/testing/FakeDisplayItemClient.h
Still need work for partial invalidation of selections for SPv175+.
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/2aaf92ed9d97986aa7ff66076d8b56fd5adf6272 commit 2aaf92ed9d97986aa7ff66076d8b56fd5adf6272 Author: Xianzhu Wang <wangxianzhu@chromium.org> Date: Tue Dec 12 16:59:25 2017 [SPv175+] Support partial invalidation for selections Bug: 732612 Cq-Include-Trybots: master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 Change-Id: I685af535011500633865953799a6c4ae128ab5e8 Reviewed-on: https://chromium-review.googlesource.com/820043 Reviewed-by: Chris Harrelson <chrishtr@chromium.org> Commit-Queue: Xianzhu Wang <wangxianzhu@chromium.org> Cr-Commit-Position: refs/heads/master@{#523454} [modify] https://crrev.com/2aaf92ed9d97986aa7ff66076d8b56fd5adf6272/third_party/WebKit/LayoutTests/TestExpectations [modify] https://crrev.com/2aaf92ed9d97986aa7ff66076d8b56fd5adf6272/third_party/WebKit/LayoutTests/flag-specific/enable-slimming-paint-v2/paint/invalidation/selection/text-selection-rect-in-overflow-2-expected.txt [add] https://crrev.com/2aaf92ed9d97986aa7ff66076d8b56fd5adf6272/third_party/WebKit/LayoutTests/virtual/spv175/paint/invalidation/repaint-across-writing-mode-boundary-expected.txt [modify] https://crrev.com/2aaf92ed9d97986aa7ff66076d8b56fd5adf6272/third_party/WebKit/LayoutTests/virtual/spv175/paint/invalidation/selection/invalidation-rect-with-br-includes-newline-expected.txt [add] https://crrev.com/2aaf92ed9d97986aa7ff66076d8b56fd5adf6272/third_party/WebKit/LayoutTests/virtual/spv175/paint/invalidation/selection/selection-rl-expected.txt [modify] https://crrev.com/2aaf92ed9d97986aa7ff66076d8b56fd5adf6272/third_party/WebKit/LayoutTests/virtual/spv175/paint/invalidation/selection/selection-within-composited-scroller-expected.txt [modify] https://crrev.com/2aaf92ed9d97986aa7ff66076d8b56fd5adf6272/third_party/WebKit/LayoutTests/virtual/spv175/paint/invalidation/selection/text-selection-rect-in-overflow-2-expected.txt [modify] https://crrev.com/2aaf92ed9d97986aa7ff66076d8b56fd5adf6272/third_party/WebKit/LayoutTests/virtual/spv175/paint/invalidation/svg/text-selection-text-05-t-expected.txt [delete] https://crrev.com/233c85dc290be25930697148265a34ecd43ff1e7/third_party/WebKit/LayoutTests/virtual/spv175/paint/selection/text-selection-newline-mixed-ltr-rtl-expected.png [modify] https://crrev.com/2aaf92ed9d97986aa7ff66076d8b56fd5adf6272/third_party/WebKit/Source/core/layout/api/LineLayoutItem.h [modify] https://crrev.com/2aaf92ed9d97986aa7ff66076d8b56fd5adf6272/third_party/WebKit/Source/core/layout/line/InlineBox.cpp [modify] https://crrev.com/2aaf92ed9d97986aa7ff66076d8b56fd5adf6272/third_party/WebKit/Source/core/layout/line/InlineBox.h [modify] https://crrev.com/2aaf92ed9d97986aa7ff66076d8b56fd5adf6272/third_party/WebKit/Source/core/paint/ObjectPaintInvalidator.cpp [modify] https://crrev.com/2aaf92ed9d97986aa7ff66076d8b56fd5adf6272/third_party/WebKit/Source/platform/graphics/paint/PaintController.cpp
Comment 1 by wangxianzhu@chromium.org
, Jun 13 2017