Closed
Bug 1426277
Opened 7 years ago
Closed 6 years ago
Investigate nsDisplayLayerEventRegions performance
Categories
(Core :: Web Painting, enhancement, P2)
Core
Web Painting
Tracking
()
RESOLVED
DUPLICATE
of bug 1434243
Tracking | Status | |
---|---|---|
firefox59 | --- | affected |
People
(Reporter: mattwoodrow, Unassigned)
References
(Blocks 1 open bug)
Details
With retained display lists, the event regions items tracks a list of rectangles, along with the frame that contributed it.
It seems that we frequently get a large rectangle contributed by a parent frame, and then smaller rectangles (entirely contained with the larger rectangle) contributed by a descendant.
These extra rectangles don't add anything to the final region, nor can we change the outer rect without recomputing children (any modification to a frame triggers display list building for itself and all descendants), so it seems like we don't really need the smaller rectangles.
This long list of rectangles adds time to display list building, merging, cleanup etc.
It would be nice if we could quickly determine that a given frame had the same event type, and was a subset of an ancestor, and then skip adding the frame to the event regions..
Comment 1•7 years ago
|
||
Agree! We can in fact now quickly determine if frames have the same event type, by comparing their GetCompositorHitTestInfo() values. In terms of checking a subset of the ancestor, maybe we can put a stack on the nsDisplayListBuilder so that when we recurse into a subframe, we can quickly compare it's hit-test info, ASR, and rect against the parent frame? If the hit-test info and ASR matches, and the rect is a contained inside, then we can skip it. I think that should cover a lot (but probably not all) of the cases.
Updated•7 years ago
|
Updated•7 years ago
|
Comment 2•6 years ago
|
||
This was implemented in bug 1434243.
Status: NEW → RESOLVED
Closed: 6 years ago
Resolution: --- → DUPLICATE
You need to log in
before you can comment on or make changes to this bug.
Description
•