Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(340)

Issue 1603983002: Fix partial painting with render pipeline throttling (Closed)

Created:
4 years, 11 months ago by Sami
Modified:
4 years, 11 months ago
Reviewers:
chrishtr, Xianzhu
CC:
blink-reviews, chromium-reviews
Base URL:
https://chromium.googlesource.com/chromium/src.git@master
Target Ref:
refs/pending/heads/master
Project:
chromium
Visibility:
Public.

Description

Fix partial painting with render pipeline throttling This patch fixes a problem with throttled FrameViews sometimes appearing partially painted. This was because we generally paint some distance beyond the viewport, i.e., covering the entire interest rect. FrameViews which are inside the interest rect but outside the viewport are skipped during painting, so the recorded display list won't include their contents. If the FrameView is then scrolled on-screen without causing any other paint invalidations, the display list won't get updated and the FrameView contents will not be shown. This patch fixes the problem by forcing a repaint of FrameViews when they become unthrottled, discarding any previous display lists and tile textures for the area they cover. BUG=562343 Committed: https://crrev.com/b4cb32a71a3b31c2ad7cbd2c289fa0ecc5d43c4a Cr-Commit-Position: refs/heads/master@{#371517}

Patch Set 1 #

Patch Set 2 : Use MayBeClippedByPaintDirtyRect. #

Patch Set 3 : Adjust layout assert. #

Total comments: 6

Patch Set 4 : Invalidate paint for unthrottled frame. #

Total comments: 2

Patch Set 5 : Add second test. #

Patch Set 6 : Rebased. #

Patch Set 7 : Undo changes to LayerTreeAsText. #

Unified diffs Side-by-side diffs Delta from patch set Stats (+78 lines, -15 lines) Patch
M third_party/WebKit/Source/core/frame/FrameView.cpp View 1 2 3 4 2 chunks +8 lines, -6 lines 0 comments Download
M third_party/WebKit/Source/core/paint/FramePainter.cpp View 1 2 3 4 5 2 chunks +6 lines, -3 lines 0 comments Download
M third_party/WebKit/Source/core/paint/PaintLayerPainter.cpp View 1 2 3 3 chunks +4 lines, -5 lines 0 comments Download
M third_party/WebKit/Source/web/tests/FrameThrottlingTest.cpp View 1 2 3 4 2 chunks +60 lines, -1 line 0 comments Download

Messages

Total messages: 37 (13 generated)
Sami
This is more like a request for comments than a review at this point, but ...
4 years, 11 months ago (2016-01-19 18:58:36 UTC) #3
Xianzhu
On 2016/01/19 18:58:36, Sami wrote: > This is more like a request for comments than ...
4 years, 11 months ago (2016-01-19 19:08:33 UTC) #4
Sami
Thanks for the tip. Does this look like what you had in mind? I think ...
4 years, 11 months ago (2016-01-20 15:57:34 UTC) #5
chrishtr
On 2016/01/20 at 15:57:34, skyostil wrote: > Thanks for the tip. Does this look like ...
4 years, 11 months ago (2016-01-20 16:12:21 UTC) #6
Sami
On 2016/01/20 16:12:21, chrishtr wrote: > I think the current code should suffice, because scrolling ...
4 years, 11 months ago (2016-01-20 16:54:13 UTC) #7
chrishtr
https://codereview.chromium.org/1603983002/diff/40001/third_party/WebKit/Source/core/paint/PaintLayerPainter.cpp File third_party/WebKit/Source/core/paint/PaintLayerPainter.cpp (right): https://codereview.chromium.org/1603983002/diff/40001/third_party/WebKit/Source/core/paint/PaintLayerPainter.cpp#newcode274 third_party/WebKit/Source/core/paint/PaintLayerPainter.cpp:274: return result; I think you need to call m_paintLayer.setPreviousPaintResult(result) ...
4 years, 11 months ago (2016-01-20 17:08:11 UTC) #8
Sami
https://codereview.chromium.org/1603983002/diff/40001/third_party/WebKit/Source/core/paint/PaintLayerPainter.cpp File third_party/WebKit/Source/core/paint/PaintLayerPainter.cpp (right): https://codereview.chromium.org/1603983002/diff/40001/third_party/WebKit/Source/core/paint/PaintLayerPainter.cpp#newcode274 third_party/WebKit/Source/core/paint/PaintLayerPainter.cpp:274: return result; On 2016/01/20 17:08:11, chrishtr wrote: > I ...
4 years, 11 months ago (2016-01-20 18:06:43 UTC) #9
Sami
https://codereview.chromium.org/1603983002/diff/40001/third_party/WebKit/Source/core/paint/PaintLayerPainter.cpp File third_party/WebKit/Source/core/paint/PaintLayerPainter.cpp (right): https://codereview.chromium.org/1603983002/diff/40001/third_party/WebKit/Source/core/paint/PaintLayerPainter.cpp#newcode274 third_party/WebKit/Source/core/paint/PaintLayerPainter.cpp:274: return result; On 2016/01/20 18:06:42, Sami wrote: > On ...
4 years, 11 months ago (2016-01-20 18:10:10 UTC) #10
Xianzhu
On 2016/01/20 16:54:13, Sami wrote: > On 2016/01/20 16:12:21, chrishtr wrote: > > I think ...
4 years, 11 months ago (2016-01-20 18:31:04 UTC) #11
Xianzhu
https://codereview.chromium.org/1603983002/diff/40001/third_party/WebKit/Source/core/paint/PaintLayerPainter.cpp File third_party/WebKit/Source/core/paint/PaintLayerPainter.cpp (right): https://codereview.chromium.org/1603983002/diff/40001/third_party/WebKit/Source/core/paint/PaintLayerPainter.cpp#newcode274 third_party/WebKit/Source/core/paint/PaintLayerPainter.cpp:274: return result; I think we need to clear m_paintLayer's ...
4 years, 11 months ago (2016-01-20 18:31:12 UTC) #12
Sami
On 2016/01/20 18:31:04, Xianzhu wrote: > It a bug that MaybeClippedByPaintDirtyRect is not propagated to ...
4 years, 11 months ago (2016-01-20 18:44:11 UTC) #13
Sami
https://codereview.chromium.org/1603983002/diff/40001/third_party/WebKit/Source/core/paint/PaintLayerPainter.cpp File third_party/WebKit/Source/core/paint/PaintLayerPainter.cpp (right): https://codereview.chromium.org/1603983002/diff/40001/third_party/WebKit/Source/core/paint/PaintLayerPainter.cpp#newcode274 third_party/WebKit/Source/core/paint/PaintLayerPainter.cpp:274: return result; On 2016/01/20 18:31:12, Xianzhu wrote: > I ...
4 years, 11 months ago (2016-01-20 18:49:31 UTC) #14
Xianzhu
https://codereview.chromium.org/1603983002/diff/40001/third_party/WebKit/Source/core/paint/PaintLayerPainter.cpp File third_party/WebKit/Source/core/paint/PaintLayerPainter.cpp (right): https://codereview.chromium.org/1603983002/diff/40001/third_party/WebKit/Source/core/paint/PaintLayerPainter.cpp#newcode274 third_party/WebKit/Source/core/paint/PaintLayerPainter.cpp:274: return result; On 2016/01/20 18:49:31, Sami wrote: > On ...
4 years, 11 months ago (2016-01-20 18:51:03 UTC) #15
Sami
I dug a little more into this and found that PaintLayer::setNeedsRepaint() wasn't quite enough because ...
4 years, 11 months ago (2016-01-25 11:34:02 UTC) #16
Xianzhu
lgtm https://codereview.chromium.org/1603983002/diff/60001/third_party/WebKit/Source/web/tests/FrameThrottlingTest.cpp File third_party/WebKit/Source/web/tests/FrameThrottlingTest.cpp (right): https://codereview.chromium.org/1603983002/diff/60001/third_party/WebKit/Source/web/tests/FrameThrottlingTest.cpp#newcode281 third_party/WebKit/Source/web/tests/FrameThrottlingTest.cpp:281: Can you add a test for the following ...
4 years, 11 months ago (2016-01-25 18:33:17 UTC) #19
Sami
https://codereview.chromium.org/1603983002/diff/60001/third_party/WebKit/Source/web/tests/FrameThrottlingTest.cpp File third_party/WebKit/Source/web/tests/FrameThrottlingTest.cpp (right): https://codereview.chromium.org/1603983002/diff/60001/third_party/WebKit/Source/web/tests/FrameThrottlingTest.cpp#newcode281 third_party/WebKit/Source/web/tests/FrameThrottlingTest.cpp:281: On 2016/01/25 18:33:17, Xianzhu wrote: > Can you add ...
4 years, 11 months ago (2016-01-25 18:44:23 UTC) #20
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1603983002/100001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1603983002/100001
4 years, 11 months ago (2016-01-26 10:59:44 UTC) #23
commit-bot: I haz the power
Try jobs failed on following builders: win_chromium_rel_ng on tryserver.chromium.win (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.win/builders/win_chromium_rel_ng/builds/164363)
4 years, 11 months ago (2016-01-26 12:07:38 UTC) #25
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1603983002/100001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1603983002/100001
4 years, 11 months ago (2016-01-26 12:08:47 UTC) #27
commit-bot: I haz the power
Try jobs failed on following builders: mac_chromium_rel_ng on tryserver.chromium.mac (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.mac/builders/mac_chromium_rel_ng/builds/170300)
4 years, 11 months ago (2016-01-26 13:04:26 UTC) #29
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1603983002/120001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1603983002/120001
4 years, 11 months ago (2016-01-26 13:32:27 UTC) #32
commit-bot: I haz the power
Committed patchset #7 (id:120001)
4 years, 11 months ago (2016-01-26 15:41:32 UTC) #34
commit-bot: I haz the power
Failed to apply the patch.
4 years, 11 months ago (2016-01-26 15:41:51 UTC) #35
commit-bot: I haz the power
4 years, 11 months ago (2016-01-26 15:42:50 UTC) #37
Message was sent while issue was closed.
Patchset 7 (id:??) landed as
https://crrev.com/b4cb32a71a3b31c2ad7cbd2c289fa0ecc5d43c4a
Cr-Commit-Position: refs/heads/master@{#371517}

Powered by Google App Engine
This is Rietveld 408576698