(Cross posting to layout-dev, paint-dev, and style-dev as a one-off as I've gotten a few questions about the lack of weekly updates lately. If you're interested in these updates please subscribe to rendering-core-dev)
These meeting notes can be found here.
9 Untriaged/Unconfirmed in Paint and Canvas. All due to missing owners on the Skia side. Need to find out who is really missing vs on vacation.
20 Untriaged/Unconfirmed in Layout and CSS owned flags. Nothing to be concerned about.
No 7-day triage failures.
Open, Closed and Fixed
Paint/Canvas 27 Opened, 32 Closed and 15 Fixed last 7 days.
Layout/CSS 58 Opened, 48 Closed and 22 Fixed last 7 days.
Still doing well.
Total Open
Paint/Canvas 1559, down 3 in last week. OKR target is < 2.5 additional bugs per week. Currently 3.9 fewer per week.
Layout/CSS 1850, up 8 in last week OKR target is < 5 more bugs each week. Currently 8.8 more per week.
Regression bugs
Paint has 5 P1 regressions. Owned but for 1. Still waiting for a Nexus 9 owner to step up. If nobody nominates at the meeting someone from MTV should try to borrow one. None older than 15 days,
Layout/CSS has 3 P1 Regressions 1 without owner: 871234.
Excellent job getting us to zero 15-day regressions.
Layout Test Status
Paint 112 TestExpectations lines up 12. TODO(schenney) Figure out where these came from. 47 WPT lines in TestExpectations, same
Layout 42 TestExpectations lines, up 13. TODO(szager) Figure out what these were. 1363 WPT lines in TestExpectations up 5.
WPT Regressions and Status Changes: Tracking system blew up. Apparently local AppEngine databases can disappear on a whim. TODO(schenney) Prioritize getting things in the cloud.
Launch Test Status
Layout NG 257 failures with flag enabled, down 15 in the last week.
Layout NG has fixed 161 tests that fail with old code, unchanged.
Blink Gen Property Trees at 325, down 1.
Disabled Unit Tests: Did anyone take action from last week? Plan on monthly update.
Disabled Perf Tests: No new information.
<schenney> Triage, doing well. No 7-day triage SLO failures.
<schenney> 9 untriaged/unconfirmed for paint and canvas. All due to missing owner, all Skia related. Will follow up offline.
<schenney> Open/closed/fixed: nothing out of the ordinary.
<schenney> Total open: paint went down a little, layout/css up a little.
<schenney> Rate of bug growth per week is still above OKR but trending back down again.
<schenney> As far as regressions go, paint has five. They all have owners expect one which still is waiting for a Nexus 9.
<chrishtr> We have a nexus 9 now.
<schenney> Likely GPU or screen resolution issue.
<schenney> Layout/CSS: 3 regressions, one bug without an owner, new bug this morning.
<eae> I took care of that one this morning. Due to text autosizing.
<schenney> zero exfeeding the 15 day SLA so we're doing good! Admire the graph.
<schenney> Layout tests: There is a bump for both paint and layout. schenney and szager to look into why.
<schenney> WPT [web platform tests]: My tracking system failed last week due to data loss. Looking into fixing it this week, will have numbers next week.
<schenney> Launch status.
<schenney> LayoutNG down to 257 failures, down 15 in the last week.
<schenney> Blink Gen property trees at 325 failures, down 1 from last week.
<schenney> Unit tests: one got re-enabled
<eae> Other re-enables in review for style and layout.
<schenney> That's it for bugs. Three AI, get nexus 9, investigate why test failures went up, get WPT tracking up and running again.
go/chrome-rendering-core-metrics for complete tracking info for UMA metrics
UKM metrics weekly analysis kicked off. Looking at update times for each lifecycle step for Gmail message list page, Maps all pages, Facebook all pages, YouTube landing page. Have data for about 14 days, and graphs are pretty flat.
Highlights:
Android 50th: Blink.Compositing.UpdateTime Canary still dropping but for some reason Dev has stabilized at big jump in complete disagreement with same version Canary.
Android, Windows 50th and 75th and 99th: Blink.IntersectionObservation.UpdateTime started big ramp up on Canary with version right around M69 branch point and continuing (last 2 weeks or so). Explanation is in July 30th notes. The rise has started to plateau so it probably doesn’t warrant extra attention.
Windows 50th: Blink.PrePaint.UpdateTime showing some fall back from big jump but now ramping up again. Problem started in M-69 and it’s starting to show up in Beta now that M-69 has gone to beta. Bug filed and a change blamed.
Android 99%: Compositing.Renderer.LayersUpdateTime trended up in Canary, half way back down, stayed steady, now trending the rest of the way down. Continue to monitor.
<schenney> UKM tracking.
<schenney> Gmail 99th [percentile] US: Flat as expected, we only have two weeks of data. Lots of time in style, layout, pre-paint and paint. Pretty even across all buckets. Not meeting 60 fps.
<szager> Why 99th? Are we focusing on the worst of the worst?
<schenney> More representative.
<chrishtr> Surprised style/layout is highest.
<eae> Really? It's what I would expect. Gmail does a lot of js layout and rendering html email messages is very style and layout heavy.
<chrishtr> M sense for initial load.
<eae> Also keep in mind that Gmail pre-renders a lot of the messages.
<szager> Can we split style layout?
<schenney> We could do that.
<futhark> I recently split it for UMA, could do it for UKM. The style/layout we're looking at here is only for life style updates. Not forced layouts.
<schenney> Correct. Next on my agenda is including JS driver layout.
<szager> Is it cumulative? Recursive through frame tree.
<schenney> Not entirely sure, let's audit it to make sure we understand how it's counted.
<schenney> Maps 99th US: Style/layout and paint the highest.
<eae> Any idea why style and paint went down last week?
<pdr> What channel is this? stable?
<schenney> Not limited to channel, so mostly stable..
<szager> Likely site changes as there was no stable promotion? Maybe annotate graph with stable pushes to help distinguish site changes from releases.
<pdr> Could we perhaps subtract canary/dev from stable to help isolate site changes?
<chrishtr> Limit to one channel.
<pdr> Having two to see the difference would be useful dev or canary and stable.
<schenney> Will pick the one with the highest use count.
<schenney> YouTube 99th US: Looks like gmail but with almost no intersection observer. Paint higher than style/layout.
<schenney> Home page, not watch page.
<chrishtr> Does not include the video frames being drawn.
<eae> YouTube uses polymer for the main page now don't they? That likely explains the high style and layout times.
<eae> Main page is pretty complex and web components CSS variables still have performance costs.
<szager> What is layer position updating counted as? How about compositing inputs updating?
<chrishtr> Updating paint layer positions is updated in the style/layout bucket.
* Discussion about what bucket it should be in *
<chrishtr> Compositing inputs updater is tracked as compositing.
<chrishtr> Pre-paint is just paint invalidation and property trees.
<szager> Tile rasterization?
<chrishtr> On another thread, not tracked here.
<schenney> Facebook 99th US: Facebook main page, signed in.
<schenney> Compositing is the highest, has a ton of paint layers basically. Given the high compositing count it is likely dominated by paint layer updates.
<eae> Really interesting to see how these differ from site to site.
<chrishtr> We should limit to one platform. Windows or Android.
<chrishtr> These are all sites dominated by apps on mobile so likely makes more sense to pick desktop.
<chrishtr> Ok, let's do windows,
<schenney> UMA metrics: Andorid 50th, composting update time canary still dropping but dev has stabilized after big jump.
<schenney> pdr did some investigation and identified a likely culprit.
<schenney> Android 99th layout update time, trending up in canary, looks to be going down again. needs investigation.
<schenney> Patch in review for Windows 99th issue, only one that requires followup.
andruud presents register property
CSS Properties & Values API:
Still working on animations. https://crbug.com/868959
Trying to understand style recalc.
Reviews.
Travel Tuesday/Wednesday.
Last week:
Rendering-core meeting on Monday: facilitated presentation on Intersection Observer.
Wrote patches to further optimize invalidation of compositing for
PaintLayers, and to skip paint invalidation during non-composited scroll.
Spent quite a while debugging a corner case that appeared only in a telemetry perf test on Android
Progress in outreach for IntersectionObserver v2 (IOv2) and Display Locking (DL)
Fixed float-under-positioned-inline bug; discovered that it's a real issue and not a broken containing block situation
Reviewed several issues related to stacking contexts and containment in the CSSWG repos.
10 code reviews
Helped design plan for adding new UMA/UKM metrics for frame generation and rendering
This week:
Rendering-core meeting on Monday: facilitating presentation on registerProperty.
Finish patches to optimize compositing and scroll invalidation
More progress pushing along IOv2 and DL
Performance work for LayoutNG
https://chromium-review.googlesource.com/c/chromium/src/+/1162657 has a 20% speedup for two benchmarks.
Landed feature flag for font unique name matching and filed Finch bug https://chromium-review.googlesource.com/c/chromium/src/+/1151203
Added unique name lookup Android font files indexer after extensive design and code review https://chromium-review.googlesource.com/c/chromium/src/+/1151328
CL for adding Mojo unique name lookup service to RenderProcessHost https://chromium-review.googlesource.com/c/chromium/src/+/1152970
WIP CL for connecting FontCache on Android to performing unique name lookups for src: local() https://chromium-review.googlesource.com/c/chromium/src/+/1162166
WIP Screenshot, matching a set of Android fonts using src: local() https://screenshot.googleplex.com/M6mzpmnwd1U
Organizational:
Incoming bug triage for style, layout, text, and fullscreen.
Weekly rendering core meeting and report.
15 code reviews.
Style/Layout:
Investigated block layout performance and tried to optimize it by reducing calls to CreatesNewFormattingConext. In the end the gains were not enough to warrant the increased complexity.
Investigated RTL line breaking performance and found that the way we call ICU to determine the previous-valid break position is a lot less efficient than the next-valid equivalent for RTL.
LayoutNG:
Optimized glyph bound computation by eliminating an extra allocation/copy and unnecessary iteration over the glyps.
https://crrev.com/579682
Removed obsolete legacy offset tracking for painting.
https://crrev.com/579505
Found that border computation is a lore more expensive than expected. Changed the painting code to compute it lazily instead of up front, shaving a couple of percentage points of the paint performance tests.
https://crrev.com/579429
Backlog after vacation.
Discussions with szager, who was visiting Oslo this week
Trying to find space at the office for a LayoutNG workshop in Oslo. Meeting rooms reserved.
LayoutNG:
Started using LayoutNG for regular work on my desktop, and also on my mobile. It's mostly usable.
Scroll anchoring work. Problematic, because the scroll anchoring code operates on the layout tree when it's dirty, and the fragment tree may point to dead layout objects by then. https://chromium-review.googlesource.com/c/chromium/src/+/1158688
Floating orthogonal writing mode roots inside inlines, and their intrinsic size.
BlinkGenPropertyTrees:
Triaged Windows PrePaint regression, https://crbug.com/868927
Add new UMA for compositing: Blink.CompositingCommit.UpdateTime, https://crrev.com/580735
Project to remove two lifecycle updates per blink change, https://crbug.com/868983
Only update layout from WebViewImpl::ContentsPreferredMinimumSize: https://crrev.com/579415
Rename DidUpdateLayout to DidUpdateMainFrameLayout https://crrev.com/579987
https://chromium-review.googlesource.com/c/chromium/src/+/1153972
SPV175 regression fix: Use property tree paint offset when snapping scrolling contents rect, https://crrev.com/580327
Fixed image artifact regression: Do not mark directly composited image layers as opaque, https://crrev.com/580725
Triaged flaky mac filter tests, https://crbug.com/869415#c5
Squad
Finished ::first-letter recalc CL, ready for review. Split out and landed two minor CLs.
Stop setting up Bloom selector filter for layout tree rebuild phase now that we only compute ::first-letter style here (CL).
Implement traversal roots for style recalc and invalidation (868810)
Continued working on the implementation.
Metrics
Split UMA metric for Style.UpdateTime into style recalc and layout tree building (CL).
Other
Fixed fuzzer crash 859285.
Removed CSSDisplayContents runtime flag.
Travel to SFO.
Meeting prep, though no meeting attendance. Bug triage.
UKM Process script development. Working and now posting weekly updates.
UKM data for MainFrame time, with sub-parts as ratios. Basically working now need to clean up, add UKM and UMA metrics and get it all approved.
Some CSSI post-mortem work.
OOO