Support reading the output of a render task in several render tasks
Categories
(Core :: Graphics: WebRender, enhancement, P3)
Tracking
()
Tracking | Status | |
---|---|---|
firefox68 | --- | fixed |
People
(Reporter: nical, Assigned: nical)
References
Details
Attachments
(1 file)
As far as I can tell currently when assigning render tasks to passes we expect that a render task will be encountered only once (in other words, the expectation is that each task is a child of at most one render task).
In order to optimize stacks of drop shadows we want to allow several blur tasks to read from the same down-scaled intermediate results. We'll also need this to implement the rest of the SVG filter specification.
Updated•6 years ago
|
Assignee | ||
Comment 1•6 years ago
|
||
I toyed with various render task graph strategies in this repository during the last few days in PTO.
The code is here https://github.com/nical/toy-render-graph/blob/master/src/lib.rs#L90
I didn't have internet access so there are pieces of webrender and euclid that ended up copy-pasted in there and the code is not cleaned up but it's generally rather simple and documented.
For render pass creation there is a simple "linear" strategy that corresponds to what webrender does (I think) and a more advanced strategy that generates the minimum amount of render passes.
For render target allocations the code currently implements webrender's current "ping-pong" strategy as well as a more "traditional" strategy that figures out the minimum amount of targets needed without adding blit tasks.
Allocating each task render target rect is done using WebRender's former guillotine allocator implementation. The graph builder computes the lifetime of each rect and allow aliasing (which webrender currently doesn't support).
I want to add a measurement of texture memory usage and CPU time and try it on a bunch of test cases but this already pretty simple to play with (just modify the test graph in lib.rs).
Assignee | ||
Updated•6 years ago
|
Assignee | ||
Comment 2•6 years ago
|
||
In addition, batch together render tasks for the cached render tasks.
Updated•6 years ago
|
Comment 4•6 years ago
|
||
bugherder |
Description
•