Hello all,

We're planning on landing the code for retaining display lists in 58, behind the pref layout.display.list.retain.


This is a rather large reworking of how we paint, and was designed to address telemetry results [1] showing that display list building was consuming considerable amounts of our total paint time (around 40% on average). The new code retains the display list, and attempts to merge in partial updates rather than rebuilding the list from scratch each paint (as we currently do). We're tracking this in bug 1352499, which includes a link to all the planning and telemetry details.


Miko Mynttinen has been working on gathering some performance data [2], which is showing some really big wins, including a 77% reduction in display list building time on YouTube when we manage to do a partial update. These are just preliminary results, and we have a lot of remaining plans to build off this architecture and get further wins. We also have a few talos regressions due to the increased bookkeeping required for this, though we're working on minimizing these as much as possible. This is due to most Talos tests measuring first paint performance, and this change optimizes the second (and later) paints, which we believe to be more useful for perceived performance.


We're planning to land into mozilla-central in the next week or two, and then enable it by default for Nightly within a week or two of that. I'll send a follow-up email once we do land so that anyone interested can flip the pref and give us early feedback. Our current plan is to ride the trains for 58, possibly with a partial rollout for beta, and we'll make a decision on that closer to the merge date.


We do have significant testing for this via reftests, though it has been identified that we have a relative lack of testing for dynamic changes. Jonathan Watt is working on a fuzzer addition to the reftest harness that will generate random mutations which will increase our confidence in correctness and stability here.



Thanks to everyone who has helped work on this, including: Miko Mynttinen, Timothy Nikkel, Markus Stange, Ethan Lin and Jonathan Watt.



- Matt



[1] https://telemetry.mozilla.org/new-pipeline/dist.html#!cumulative=0&end_date=2017-10-05&keys=r!dl%252Cflb!dl!flb&max_channel_version=beta%252F57&measure=CONTENT_LARGE_PAINT_PHASE_WEIGHT&min_channel_version=null&os=Windows_NT&processType=*&product=Firefox&sanitize=1&sort_keys=submissions&start_date=2017-09-25&table=0&trim=1&use_submission_date=0 <https://telemetry.mozilla.org/new-pipeline/dist.html#%21cumulative=0&end_date=2017-10-05&keys=r%21dl%252Cflb%21dl%21flb&max_channel_version=beta%252F57&measure=CONTENT_LARGE_PAINT_PHASE_WEIGHT&min_channel_version=null&os=Windows_NT&processType=*&product=Firefox&sanitize=1&sort_keys=submissions&start_date=2017-09-25&table=0&trim=1&use_submission_date=0>

[2]http://miko.lol/shared/mozilla/retained-dl-measurements-2017-10-05.pdf

_______________________________________________
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform

Reply via email to