2026年LBSE重大更新:条件图层创建功能上线,性能提升但合成难题待解!

📅 2026/7/18 22:30:41
2026年LBSE重大更新:条件图层创建功能上线,性能提升但合成难题待解!
【作者信息】Nikolas Zimmermann其博客可查看文章、进行搜索以及了解关于他的信息。【核心事件降低LBSE图层开销】2026年7月14日发布的文章阅读时长15分钟。作者上一次撰写关于基于图层的SVG引擎LBSE的内容是在2021年秋季当时发布了技术设计文档。目前该引擎已集成到WebKit中但不是默认选项需通过切换运行时设置在MiniBrowser中来启用。【LBSE发展历程】2021年秋季至2022年末LBSE在上游逐步开发添加了对构成SVG的所有独立构建块的支持。工作停滞几个月后在2023年年中恢复一直持续到2024年4月得益于Wix的支持实现了大多数高级绘制功能。之后工作再次暂停因项目需持续资金支持。【LBSE的意义与挑战】LBSE的意义在于将SVG置于与HTML和CSS相同的架构上使其能继承优势并受益于未来改进。但共享架构有代价旧版引擎经过二十年优化LBSE需集成到共享代码中且不能降低性能。此外部分共享架构需重新设计要为SVG创建特殊快速路径同时不能降低HTML性能。【LBSE需达标准及现状改变】LBSE需在日常普通渲染方面与旧版引擎竞争满足此标准后硬件加速及HTML/CSS引擎的改进才能视为成功。2026年初Igalia对LBSE进行一次性投资开展新一轮开发。这篇文章是关于2026年上半年的两篇文章中的第一篇介绍当前进展及项目发展情况。【快速回顾之前工作】设计LBSE时核心思路是让SVG复用HTML和CSS已使用的RenderLayer树早期每个SVG渲染器都有自己的RenderLayer虽浪费资源但能验证想法可行性之后可完善设计。【确保正确性是首要任务】恢复开发时先确保引擎正常工作。解决了文本渲染、崩溃问题、实际渲染错误等。春季对滤镜方面进行大量改进但最重要的滤镜更改尚未完成一个待处理的拉取请求可解决LBSE下大量滤镜测试失败问题。【真正的目标性能】LBSE核心目标是性能潜在运行速度可能比旧版引擎快。但早期捷径使每个渲染器都有图层在包含数千个形状的场景中产生额外开销。因此要仅在元素需要时创建图层先移除经过变换的叶子元素的图层经过裁剪的元素暂时保留图层。【条件图层创建】移除图层是有风险的工作需先应用一系列准备性补丁。前期准备包括将SVG数据移到新结构体缓存变换到渲染器本身构建按DOM顺序的绘制路径和点击测试路径等。2026年6月条件图层创建功能正式完成核心思想是仅当元素因内在原因需要时才创建RenderLayer。简单2D变换的叶子元素不再强制创建图层但经过变换的容器元素仍保留图层。有了该功能后LBSE可按需创建图层但合成内容出现问题下一篇文章将探讨解决方案。【致谢】作者衷心感谢参与验证LBSE工作的苹果开发者们包括Simon、Said、Karl和Ahmad。