Closed Bug 1435649 Opened 6 years ago Closed 6 years ago

Don't touch the display item when taking the early return in ComputeGeometryChangeForItemW

Categories

(Core :: Web Painting, enhancement, P3)

enhancement

Tracking

()

RESOLVED FIXED
mozilla60
Tracking Status
firefox60 --- fixed

People

(Reporter: mattwoodrow, Assigned: mattwoodrow)

References

(Blocks 1 open bug)

Details

Attachments

(1 file)

Attached patch reused-on-didSplinter Review
We try to take an early return in ComputeGeometryChangeForItem when the item wasn't rebuilt by retained-dl, but unfortunately this still dereferences the item and takes almost as long as the full invalidation code.

We can store the value on the DisplayItemData earlier (when the item is already in cache), and avoid needing to touch it here.
Attachment #8948297 - Flags: review?(jnicol)
Comment on attachment 8948297 [details] [diff] [review]
reused-on-did

Review of attachment 8948297 [details] [diff] [review]:
-----------------------------------------------------------------

Looks good, just a question and a nit.

::: layout/painting/FrameLayerBuilder.cpp
@@ +185,5 @@
>  void
>  DisplayItemData::EndUpdate()
>  {
>    MOZ_RELEASE_ASSERT(mLayer);
> +  mItem = nullptr;

Why does the assertion no longer hold?

::: layout/painting/FrameLayerBuilder.h
@@ +184,5 @@
>      * paint) has been updated in the current paint.
>      */
>    bool            mUsed;
>    bool            mIsInvalid;
> +  bool            mReusedItem;

Can we call this mIsReusedItem, or something indicating it's a bool?
Attachment #8948297 - Flags: review?(jnicol) → review+
Blocks: 1436900
Pushed by mwoodrow@mozilla.com:
https://hg.mozilla.org/integration/mozilla-inbound/rev/4aa9b74724b8
Don't deference the display item when attempting the early return in ComputeGeometryChangeForItem to avoid a cache miss. r=jnicol
https://hg.mozilla.org/mozilla-central/rev/4aa9b74724b8
Status: NEW → RESOLVED
Closed: 6 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla60
These performance improvements landed thanks to this bug and bug 1435650!

== Change summary for alert #11512 (as of Mon, 12 Feb 2018 04:03:33 GMT) ==

Improvements:

 12%  displaylist_mutate osx-10-10 opt e10s stylo     7,425.25 -> 6,561.79
  8%  displaylist_mutate linux64 opt e10s stylo       2,998.83 -> 2,763.43
  8%  displaylist_mutate linux64 pgo e10s stylo       2,565.03 -> 2,367.67
  8%  displaylist_mutate windows7-32 pgo e10s stylo   5,145.52 -> 4,750.92
  7%  displaylist_mutate windows10-64 pgo e10s stylo  4,819.58 -> 4,464.75

For up to date results, see: https://treeherder.mozilla.org/perf.html#/alerts?id=11512
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: