Open Bug 1566826 Opened 5 years ago Updated 2 years ago

High displaylist building times on MotionMark "Multiply"

Categories

(Core :: Web Painting, defect, P3)

defect

Tracking

()

People

(Reporter: jrmuizel, Unassigned)

References

(Depends on 1 open bug, Blocks 1 open bug)

Details

Attachments

(1 file)

Flags: needinfo?(mikokm)
Blocks: motionmark
Attached file display-list.txt (deleted) —

Display list dump with complexity = 1. It seems that the site always creates tons of opacity and hit test items even if they are not visible.

Bug 1527026 would get rid of the hit test items, which make up roughly 50% of the display list.

Depends on: 1527026
Flags: needinfo?(mikokm)
Priority: -- → P3

Here's a recent profile:
https://share.firefox.dev/3gXq4Kn

One thing I noticed is that in nsIFrame::BuildDisplayListForStackingContext we're spending quite a bit of time dealing with the transform.
15% is in mozilla::nsDisplayTransform::GetResultingTransformMatrixInternal which is called from multiple places.

We call UntransformRect on the building rect and the visibile rect. Each call to UntransformRect calls GetResultingTransformMatrixInternal and then inverts the matrix. So we're duplicating that work.

Depends on: 1728805

(In reply to Jeff Muizelaar [:jrmuizel] from comment #3)

Here's a recent profile:
https://share.firefox.dev/3gXq4Kn

One thing I noticed is that in nsIFrame::BuildDisplayListForStackingContext we're spending quite a bit of time dealing with the transform.
15% is in mozilla::nsDisplayTransform::GetResultingTransformMatrixInternal which is called from multiple places.

We call UntransformRect on the building rect and the visibile rect. Each call to UntransformRect calls GetResultingTransformMatrixInternal and then inverts the matrix. So we're duplicating that work.

Do you have retained display lists disabled? I see a very different profile locally, where most of the time is doing partial updates.

Nope, I have some partial update time in my profile. Can you post yours?

This is what I see locally: https://share.firefox.dev/3kZSqVB

Your profile appears to be bimodal, switching between full rebuilds and then retaining.

I have an experimental patch that might help some of the matrix work, but can't reproduce any differences locally (since it's always retaining for me, and has different slowness).

Severity: normal → S3
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: