WebKitGTK 和 WPEWebKit 近期发布新稳定版本 2.46,图形实现有重要变化:
- Skia:引入 Skia 取代 Cairo 成为 2D 图形渲染器,默认使用 GPU 渲染,架构变化不大,GPU 渲染时脏区域缓冲区在主线程渲染为纹理, compositor 用栅栏等待纹理准备并直接复制到合成器纹理,在桌面 GPU 较强时性能更好,嵌入式系统多数情况下用 CPU 多线程渲染,Skia 近期有 GCC 特定优化,用 clang 构建性能更佳。
- HiDPI:虽无特定 HiDPI 变化,但高分辨率屏幕用户用设备缩放因子大于 1 时,缩放在 GPU 上更快,性能更好。
- 加速画布:2D 画布可独立加速,2.46 有新设置[WebKitSettings:enable-2d-canvas-acceleration]控制,在某些嵌入式设备中,CPU 渲染层瓦片和 GPU 渲染画布组合性能最佳,2.46 离屏画布默认启用,新增[willReadFrequently]设置控制画布是否加速。
- 滤镜:所有 CSS 滤镜用 Skia API 实现,可能加速,使用模糊滤镜的网站不再慢。
- 颜色空间:Skia 原生支持颜色空间,简化 WebKit 中颜色空间处理代码,在 SVG 和滤镜等场景使用,一些滤镜操作在线性 sRGB 中更简单,如 feDiffuseLighting 滤镜,以前 Cairo 实现有问题,现在用 Skia 无需工作区,提高性能和加速可能性。
- 字体渲染:Skia 切换后字体渲染变化明显,有人觉得一些网站更好,有人觉得某些网站字距有问题,总体感觉与之前不同。
- 损坏跟踪:WebKit 已跟踪层更改区域以仅重绘脏区域,2.46 有实验性代码跟踪损坏区域并传递给系统合成器,默认关闭,可通过运行时功能启用,还可与其他功能结合使用,需分析其对性能的影响,已开始在 WebKit 合成器中使用损坏信息避免每次合成整个帧。
- GPU 信息:Linux 下图形工作困难,变量多致不同用户输出不同,2.46 在 webkit://gpu 中添加更多有用信息,如 DMA-BUF 缓冲区格式和修饰符,还可加载 webkit://gpu/stdout 获取 JSON 形式信息。
- 系统性能分析:网站渲染慢是常见问题,除图形栈信息外,需找出慢的原因和位置,难以重现时难修复,2.46 初步支持使用[sysprof]进行性能分析,代码已有标记,运行时可获取图形管道各部分时间信息。
- 后续计划:这只是开始,正在研究使 GPU 和 CPU 更好利用以获最佳性能的变化,计划在图形架构中进行其他更改以改善同步、延迟和安全性,已采用 sysprof 进行性能分析,正在改进和开发新工具。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。