New issue
Advanced search Search tips

Issue 844751 link

Starred by 4 users

Issue metadata

Status: Fixed
Owner:
Closed: Oct 20
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 2
Type: Task

Blocking:
issue 591099



Sign in to add a comment

[layoutng] Enable fragment caching

Project Member Reported by cbiesin...@chromium.org, May 18 2018

Issue description

Enable fragment caching (--enable-blink-features=LayoutNGFragmentCaching), so we can avoid relaying out everything all the time.
 
Blocking: 591099
Project Member

Comment 3 by 42576172...@developer.gserviceaccount.com, May 18 2018

😿 Pinpoint job stopped with an error.
https://pinpoint-dot-chromeperf.appspot.com/job/14845e34240000

Buildbucket says the build completed successfully, but Pinpoint can't find the isolate hash.
Project Member

Comment 5 by 42576172...@developer.gserviceaccount.com, May 18 2018

😿 Pinpoint job stopped with an error.
https://pinpoint-dot-chromeperf.appspot.com/job/15e6f074240000

All of the attempts failed. See the individual attempts for details on each error.
Project Member

Comment 7 by 42576172...@developer.gserviceaccount.com, May 19 2018

😿 Pinpoint job stopped with an error.
https://pinpoint-dot-chromeperf.appspot.com/job/14fe0554240000

All of the attempts failed. See the individual attempts for details on each error.
Project Member

Comment 10 by bugdroid1@chromium.org, May 22 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/eefcee7813c5dc4c6481d504733f17043a2474f6

commit eefcee7813c5dc4c6481d504733f17043a2474f6
Author: Christian Biesinger <cbiesinger@chromium.org>
Date: Tue May 22 20:46:04 2018

[layoutng] Update shape info even when reusing layout results

Even when reusing a layout result, we still need to update the shape info.

Fixes these tests when fragment caching is enabled:
 external/wpt/css/css-shapes/shape-outside/shape-image/shape-image-009.html
 external/wpt/css/css-shapes/shape-outside/shape-image/shape-image-011.html
 http/tests/css/css-image-valued-shape.html
 http/tests/security/shape-image-cors-same-origin.html

Also, moving the SetMayNeedPaintInvalidation call fixes these additional tests:
 fast/css/relative-positioned-block-nested-with-inline-parent-dynamic-removed.html
 fast/css/relative-positioned-block-with-inline-ancestor-and-parent-dynamic.html
 fast/css/relative-positioned-block-with-inline-ancestor-dynamic-removed.html

R=ikilpatrick@chromium.org

Bug:  844751 
Cq-Include-Trybots: master.tryserver.chromium.linux:linux_layout_tests_layout_ng
Change-Id: I412fd2eddd22c40a7b0c5c7b8a8d22612c1b3759
Reviewed-on: https://chromium-review.googlesource.com/1069173
Reviewed-by: Ian Kilpatrick <ikilpatrick@chromium.org>
Commit-Queue: Christian Biesinger <cbiesinger@chromium.org>
Cr-Commit-Position: refs/heads/master@{#560764}
[modify] https://crrev.com/eefcee7813c5dc4c6481d504733f17043a2474f6/third_party/blink/renderer/core/layout/ng/ng_block_node.cc

Project Member

Comment 11 by 42576172...@developer.gserviceaccount.com, May 22 2018

😿 Pinpoint job stopped with an error.
https://pinpoint-dot-chromeperf.appspot.com/job/14fae16c240000

Buildbucket says the build completed successfully, but Pinpoint can't find the isolate hash.
Project Member

Comment 13 by 42576172...@developer.gserviceaccount.com, May 23 2018

😿 Pinpoint job stopped with an error.
https://pinpoint-dot-chromeperf.appspot.com/job/12c4cedc240000

All of the attempts failed. See the individual attempts for details on each error.
Project Member

Comment 15 by 42576172...@developer.gserviceaccount.com, May 25 2018

📍 Job complete. See results below.
https://pinpoint-dot-chromeperf.appspot.com/job/13e30802240000
Project Member

Comment 17 by 42576172...@developer.gserviceaccount.com, May 25 2018

😿 Pinpoint job stopped with an error.
https://pinpoint-dot-chromeperf.appspot.com/job/13c6f03c240000

All of the attempts failed. See the individual attempts for details on each error.
Project Member

Comment 19 by 42576172...@developer.gserviceaccount.com, May 26 2018

📍 Job complete. See results below.
https://pinpoint-dot-chromeperf.appspot.com/job/14f0f90a240000
Project Member

Comment 20 by bugdroid1@chromium.org, May 26 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/4f5f0e82de38a3678bd7c48784c754b6bfed7390

commit 4f5f0e82de38a3678bd7c48784c754b6bfed7390
Author: Christian Biesinger <cbiesinger@chromium.org>
Date: Sat May 26 05:41:26 2018

[layoutng] Enable fragment caching

Fragment caching allows us to reuse fragments instead of redoing layout for
a subtree when inputs have not changed. This is, in a sense, the replacement
for LayoutIfNeeded in legacy layout.

For now this is a very simple implementation which only keeps around the last
fragment. To check if we can reuse it, we check for an identical constraint
space, and for now we only reuse if !NeedsLayout(). In the future, I hope
we can find a solution that checks if our style or our children have changed.

Design document:
https://docs.google.com/document/d/1RjH_Ofa8O_ucGvaDCEgsBVECPqUTiQKR3zNyVTr-L_I/edit

Bug:  844751 

Cq-Include-Trybots: master.tryserver.chromium.linux:linux_layout_tests_layout_ng
Change-Id: I1877876aee82761724815fdc8a2a991284db0bec
Reviewed-on: https://chromium-review.googlesource.com/1015546
Commit-Queue: Christian Biesinger <cbiesinger@chromium.org>
Reviewed-by: Emil A Eklund <eae@chromium.org>
Cr-Commit-Position: refs/heads/master@{#562116}
[modify] https://crrev.com/4f5f0e82de38a3678bd7c48784c754b6bfed7390/third_party/blink/renderer/platform/runtime_enabled_features.json5

Per the "Analyze benchmark results" link at https://pinpoint-dot-chromeperf.appspot.com/job/14f0f90a240000, fragment caching has significant improvements for the float tests. However, not much improvement otherwise. In retrospect, it probably makes sense that microbenchmarks would not see much change because they probably don't reuse layout results much.

Comment 22 Deleted

Project Member

Comment 23 by bugdroid1@chromium.org, Oct 16

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/8e5dd9dd8e32104d7ac03f1113380754b721009c

commit 8e5dd9dd8e32104d7ac03f1113380754b721009c
Author: Koji Ishii <kojii@chromium.org>
Date: Tue Oct 16 20:27:05 2018

[LayoutNG] Stop clearing CachedLayoutResult when NeedsLayout

CachedLayoutResult is cleared in the early phase of layout
if NeedsLayout(). This makes hard to re-use part of cached
fragments for inline layout.

The clearing seems no longer necessary, as FinishLayout()
always SetCachedLayoutResult before it calls
CopyFragmentDataToLayoutBox(), which calls ComputeOverflow().

Bug:  35619 ,  844751 
Cq-Include-Trybots: luci.chromium.try:linux_layout_tests_layout_ng
Change-Id: Id728deb5bc5c5b29e73c0835d6ffc5b22ee92121
Reviewed-on: https://chromium-review.googlesource.com/c/1282802
Reviewed-by: Aleks Totic <atotic@chromium.org>
Commit-Queue: Koji Ishii <kojii@chromium.org>
Cr-Commit-Position: refs/heads/master@{#600106}
[modify] https://crrev.com/8e5dd9dd8e32104d7ac03f1113380754b721009c/third_party/blink/renderer/core/layout/ng/ng_block_node.cc

Status: Fixed (was: Started)

Sign in to add a comment