Closed
Bug 1160723
Opened 10 years ago
Closed 1 year ago
Automatic layerization still causes unnecessary rendering
Categories
(Core :: Graphics: Layers, defect)
Tracking
()
RESOLVED
WORKSFORME
People
(Reporter: birtles, Unassigned)
References
()
Details
(Whiteboard: gfx-noted)
In the following codepen, the profiler/paint flashing shows us doing a lot of rendering even though we're clearly layerizing the moving circles:
http://codepen.io/thebabydino/pen/JddBPE
If I add will-change to the styles as follows:
circle {
will-change: transform;
}
we don't do any rendering at all. I would have expected our automatic layerization to behave much the same as providing explicit layerization hints.
(Testing on Aurora here so this might be fixed on trunk.)
Comment 1•10 years ago
|
||
I only see us flashing the smaller circles.
Having a look into the debugger, we're failing the IsItemToSmallForActiveLayer check in nsDisplayTransform::GetLayerState (example rect(339, 1485, 14, 15)).
These circles aren't getting active layers, so the repainting is expected.
The will-change path in GetLayerState doesn't do this check, so we actually get active layers for all circles with that change.
Updated•10 years ago
|
Whiteboard: gfx-noted
| Reporter | ||
Comment 2•10 years ago
|
||
Because I was looking at this on a smaller screen everything was in the "too small" category.
It this is the intended behavior then maybe this is invalid. It seems a little surprising that will-change has this effect. I originally filed the bug because of a report that perf was slow.[1] It seems will-change helped in this case.[2]
[1] https://twitter.com/anatudor/status/594400551359684608
[2] https://twitter.com/anatudor/status/594500949412052993
Updated•3 years ago
|
Severity: normal → S3
Comment 3•1 year ago
|
||
This test case performs well without will-change now.
Status: NEW → RESOLVED
Closed: 1 year ago
Resolution: --- → WORKSFORME
You need to log in
before you can comment on or make changes to this bug.
Description
•