Open Bug 1147538 Opened 5 years ago Updated 2 years ago

PaintedLayers that only contain EventRegion display items are recreated each frame

Categories

(Core :: Layout, defect)

defect
Not set

Tracking

()

ASSIGNED

People

(Reporter: mstange, Assigned: dvander)

References

(Blocks 1 open bug)

Details

(Keywords: perf, regression)

Attachments

(1 file, 1 obsolete file)

Event region display items don't go through AttemptToRecyclePaintedLayer. So if a PaintedLayer only contains event region display items and no other display items, we won't reuse a layer.
Attached patch bug1147538.patch (obsolete) — Splinter Review
Assignee: nobody → dvander
Status: NEW → ASSIGNED
Attachment #8853840 - Flags: review?(mstange)
Comment on attachment 8853840 [details] [diff] [review]
bug1147538.patch

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

::: layout/painting/FrameLayerBuilder.cpp
@@ +4484,5 @@
>          opaquePixels.AndWith(itemVisibleRect);
> +      }
> +
> +      paintedLayerData->Accumulate(this, item, opaquePixels,
> +          itemVisibleRect, itemClip, layerState);

Calling this for event region items might change the layer's visible region, which could cause us to create unnecessarily large layer buffers.

If you implement IsUniform on nsDisplayEventRegions and make it return NS_RGBA(0,0,0,0), that should work around that problem.
Attachment #8853840 - Flags: review?(mstange)
Attached patch fix v2Splinter Review
I think this addresses the problem in comment #2.
Attachment #8853840 - Attachment is obsolete: true
Attachment #8856299 - Flags: review?(mstange)
Attachment #8856299 - Flags: review?(mstange) → review+
Pushed by danderson@mozilla.com:
https://hg.mozilla.org/integration/mozilla-inbound/rev/f179621a517b
Accumulate event region items into painted layers. (bug 1147538, r=mstange)
Flags: needinfo?(dvander)
You need to log in before you can comment on or make changes to this bug.