Closed Bug 1429363 Opened 6 years ago Closed 6 years ago

APZ hit testing is janky on http://perf.rust-lang.org/ during load

Categories

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

defect

Tracking

()

RESOLVED WORKSFORME
Tracking Status
firefox59 --- affected

People

(Reporter: mstange, Unassigned)

Details

Scrolling up and down on http://perf.rust-lang.org/ while that page is loading, with gfx.webrender.hit-test and blob-images enabled, is rather unresponsive.

It looks like hit testing on the parent main thread is somehow blocked on blob-image rasterization.
Let's test this on reference hardware, see what it looks like.
Priority: -- → P2
Here's a profile that Markus made that shows the problem: https://perfht.ml/2mIGWsl

The main thread is blocked in wr_api_hit_test because the WRRenderBackend thread (which should be servicing the hit-test request) is busy in an update_document call. I believe this will be resolved once the transaction stuff is further along, because the update_document will get bumped to a worker thread and leave the WRRenderBackend more free.
Even after async-blob landed, hit testing can still block on rasterization: https://perfht.ml/2uUmN5L
I took this profile with https://static.mozilla.com/moco/en-US/images/mozilla_eoy_2013_EN.svg open in background tab. I clicked on the background tab and tried to keep scrolling the foreground tab until the clicked tab rendered. It works some of the time but freezes the browser other times.
This page seems to be pretty egregious even with vanilla gecko (though a bit better), is it enough worse for us to block release on?
Flags: needinfo?(mstange)
Hi Alexis -- How often are other APZ cases going to hit this?  And do you have a sense of what the impact will be?
Flags: needinfo?(a.beingessner)
I actually can't reproduce the original problem any more: That is, the main thread of the parent process being blocked on blob rasterization. That was the piece that I think would have been worth blocking on.

Here's a current profile: https://perfht.ml/2NyelEL
It shows the main thread of the parent process being perfectly responsive. It blocks on the render backend thread for short amounts of time, but that thread is not blocked on blob rasterization in this profile.

And here's a profile of scrolling https://static.mozilla.com/moco/en-US/images/mozilla_eoy_2013_EN.svg , which has more expensive blob rasterization: https://perfht.ml/2NwsPVH
The render backend never seems to block on blob rasterization here either.

So I'm going to resolve this bug as WFM.
No longer blocks: stage-wr-trains
Status: NEW → RESOLVED
Closed: 6 years ago
Flags: needinfo?(mstange)
Flags: needinfo?(a.beingessner)
Resolution: --- → WORKSFORME
You need to log in before you can comment on or make changes to this bug.