Closed Bug 1471562 Opened 6 years ago Closed 5 years ago

Simultaneous paints in UI and content can perform worse with WR

Categories

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

Other Branch
defect

Tracking

()

RESOLVED FIXED

People

(Reporter: kats, Unassigned)

References

(Blocks 1 open bug)

Details

(Whiteboard: [gfx-noted])

Attachments

(1 file)

Attached image Timing diagram (deleted) —
I uncovered a problem while investigating a tresize regression. The root of the problem is illustrated in the attached timing diagram. If there are paints in both the UI process and content process in the same vsync interval (e.g. because the window resized, but could be lots of other reasons), then the compositor thread will receive two SetDisplayList messages (one from each process). Those two SetDisplayList messages will each trigger a scene build transaction in WR, and both of those scene builds run on the scene builder thread, serially. So in non-WR, the rasterization step for this scenario happened in parallel on the UI process main thread and content process main thread, but with WR, the scene building happens serially. This loss of parallelism can result in missing frame budgets and increased latency in getting stuff to the screen.
If the lion's share of scene building time is spent in rasterization, then I suppose the hope is that parallelization across tiles will save us. If scene building is slow for other reasons, then we should speed up those other parts. Parallelizing rasterization within a single scene rather than across scenes will still be slower if there aren't enough tiles to saturate all CPU cores, though.
Priority: P2 → P3
If we're passing our release criteria we can probably postpone this to after the MVP.
Blocks: stage-wr-next
No longer blocks: stage-wr-trains
Status: NEW → RESOLVED
Closed: 5 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: