Open Bug 1783251 Opened 3 years ago Updated 10 months ago

Work around unbounded intermediate render target usage

Categories

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

task

Tracking

()

People

(Reporter: nical, Unassigned)

References

(Blocks 2 open bugs)

Details

WebRender tends to have trouble with workloads that require a large amount of intermediate render target, (for example many blurred items), when the amount of pixels that have to be pre-rendered becomes very big.

Chrome seems to have a a simpler logic where it will render into the main target, then sse it needs some intermediate surface for something, render that thing and switch back to the the main render target, which is not as efficient if there isn't a lot of pixels to prerender but doesn't require unbounded amounts of memory. WebRender on the other hand, when it reaches a certain threshold, becomes very very slow.

In principle it is somewhat like an over-layerization issue.

being able to split intermediate work half-way through rendering a picture would be valuable.

Maybe the recent work on mix blends modes gave us some of this capability.

This manifests when we have objects that overlap. e.g. imagine a stack of overlapping things. We'll sometimes draw each of them to an intermediate render target and then compose them all in one go. This means that we require O(number of things * size) with fewer draw calls vs O(size) with more draw calls.

You need to log in before you can comment on or make changes to this bug.