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