Closed Bug 1376044 Opened 7 years ago Closed 7 years ago

APZ takes an appreciable amount of time with WebRender

Categories

(Core :: Graphics: WebRender, defect, P1)

defect

Tracking

()

RESOLVED FIXED
mozilla59
Tracking Status
firefox56 --- unaffected
firefox57 --- unaffected
firefox59 --- fixed

People

(Reporter: jrmuizel, Assigned: kats)

References

Details

(Whiteboard: [wr-mvp])

Attachments

(1 file)

Loading up a Facebook news feed I see 4% being spent in UpdateAPZ and 4.3% being spent in IPC::ParamTraits<mozilla::layers::WebRenderScrollData>::Read() Some of this looks like region copying which could probably be easy to avoid.
I see a bunch of time being spent on the child side as well: - IPC::ParamTraits<mozilla::layers::WebRenderScrollData>::Write() - mozilla::layers::PopulateScrollData()
Can you share the link to the profile?
I profiled using Instruments so sharing's a bit of a pain. If you can't reproduce it I'll see what I can come up with. (If you need facebook credentials I have an synthetic account I can share with you)
Priority: P3 → P2
Whiteboard: [wr-mvp]
I profiled both Facebook initial load as well as scrolling up and down on the news feed as more things loaded and I'm seeing negligible amount of time spent in UpdateAPZ and reading WebRenderScrollData instances. This is on a local macOS opt build with rustc 1.22.1 and opt-level 3. In fact the compositor thread is mostly just idle, even the parts where the content process isn't blocked in JS events has the compositor thread >90% idle. Initial load: https://perfht.ml/2ikCPDO Scrolling up and down as things load: https://perfht.ml/2ioiQEe Are you still seeing this? I'll take a look at the code anyway to see if there's any cleanup that can be done there. I've been meaning to do that anyway since we dropped the layers-full codepaths since the WebRenderScrollData can probably be organized better now.
This is looking much better now.
Assignee: nobody → bugmail
Status: NEW → ASSIGNED
Priority: P2 → P1
I looked over the code. There's a bit of dead code leftover but otherwise there's not much I can do here until we switch to WR hit testing and drop the event regions stuff in WebRenderCommandBuilder.
Comment on attachment 8933395 [details] Bug 1376044 - Remove dead code left over from layers-full WR implementation. https://reviewboard.mozilla.org/r/204318/#review209882
Attachment #8933395 - Flags: review?(jmuizelaar) → review+
Pushed by kgupta@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/7ad26a049af8 Remove dead code left over from layers-full WR implementation. r=jrmuizel
Status: ASSIGNED → RESOLVED
Closed: 7 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla59
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: