Issue #1 tracks the upstreaming status (which patches where landed when, etc.). This issue provides a high-level overview about the missing features and how/when to tackle them (see links to dependent issues for details).
Near-term TODO list
Ordered by priority, as currently planned.
Keep on working to fix all layout tests in LBSE (always top-prio besides finishing the rest of the feature work)
Implement gradients / patterns
Implement clipping without any temporary image buffers
Keep basic shape clipping (fastest method under certain conditions), and move from temporary image buffer for advanced clip shapes to porter-duff operations, that do not involve the management of temporary ImageBuffers in SVG painting code -- aligned with CSS.
Implement masking
Straight-forward after clipping.
Implement markers
A bit involved due to the involved coordinate system transformations, but all done in LBSE downstream, so big problems left to solve.
Implement filters
The SVG filter code will go away completely, replaced by a SVG-aware RenderLayerFilters version. Probably requires some iterations, due to the way I modified RenderLayerFilters/RenderLayerBacking. But at least it could be demonstrated that all SVG filter features can be mapped to that approach (in LBSE downstream).
Finish & polish
Mid-term TODO list
Reduce RenderLayer overhead
Find ways to not construct layers for all SVG renderers, e.g. a group without any transformed child, won't need layers-per-child, unless... they are masked themselves, filtered, etc... (figure out the complete list of conditions and implement that optimization)
--> This will be a perpetual task in LBSE.
Bring MotionMark SVG performance on same level as the legacy engine.
It is possible -- the LBSE PoC from Sep '21 was on the same level as the legacy engine within a few percent, much faster on some tests. All kind of tests that do NOT profit from e.g. harware-accelerated CSS animations, see the RenderLayer overhead. This needs to be minimized -- we don't ship performance regressions.
LBSE Implementation progress
- last update: 2022-11-19-
Issue #1 tracks the upstreaming status (which patches where landed when, etc.). This issue provides a high-level overview about the missing features and how/when to tackle them (see links to dependent issues for details).
Near-term TODO list
Ordered by priority, as currently planned.
Keep on working to fix all layout tests in LBSE (always top-prio besides finishing the rest of the feature work)
Implement gradients / patterns
Implement clipping without any temporary image buffers
Keep basic shape clipping (fastest method under certain conditions), and move from temporary image buffer for advanced clip shapes to porter-duff operations, that do not involve the management of temporary ImageBuffers in SVG painting code -- aligned with CSS.
Straight-forward after clipping.
A bit involved due to the involved coordinate system transformations, but all done in LBSE downstream, so big problems left to solve.
The SVG filter code will go away completely, replaced by a SVG-aware RenderLayerFilters version. Probably requires some iterations, due to the way I modified RenderLayerFilters/RenderLayerBacking. But at least it could be demonstrated that all SVG filter features can be mapped to that approach (in LBSE downstream).
Mid-term TODO list
Find ways to not construct layers for all SVG renderers, e.g. a group without any transformed child, won't need layers-per-child, unless... they are masked themselves, filtered, etc... (figure out the complete list of conditions and implement that optimization)
--> This will be a perpetual task in LBSE.
It is possible -- the LBSE PoC from Sep '21 was on the same level as the legacy engine within a few percent, much faster on some tests. All kind of tests that do NOT profit from e.g. harware-accelerated CSS animations, see the RenderLayer overhead. This needs to be minimized -- we don't ship performance regressions.
Long-term TODO list