New issue
Advanced search Search tips

Issue 732612 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Dec 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux , Android , Windows , Chrome , Mac
Pri: 3
Type: Task

Blocking:
issue 732609



Sign in to add a comment

[SPv2] Implement partial raster invalidation

Project Member Reported by wangxianzhu@chromium.org, Jun 13 2017

Issue description

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).
 
Labels: -Type-Bug Type-Task
Blocking: 732609
Labels: -OS-Fuchsia
Project Member

Comment 4 by bugdroid1@chromium.org, Sep 13 2017

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

Project Member

Comment 5 by bugdroid1@chromium.org, Sep 13 2017

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

Project Member

Comment 6 by bugdroid1@chromium.org, Sep 13 2017

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

Project Member

Comment 7 by bugdroid1@chromium.org, Sep 29 2017

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

Status: Fixed (was: Assigned)
Status: Assigned (was: Fixed)
Still need work for partial invalidation of selections for SPv175+.
Project Member

Comment 10 by bugdroid1@chromium.org, Dec 12 2017

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

Status: Fixed (was: Assigned)

Sign in to add a comment