硬件加速渲染
使用GPU的硬件能力来帮助渲染网页,因为GPU的作用主要是用来绘制3D图形并且性能特别好,是他的专长所在
对于GPU绘图而言,通常不像软件渲染那样直视计算其中更新的区域,一旦有更新请求,如果没有分层,引擎可能需要重新渲染所有的区域,因为计算更新部分对GPU而言可能会消耗更多的时间,当网页分层后,部分区域的更新可能只在网页的一层或者某几层,而不需要将整个网页都重新绘制,通过重新渲染网页的一个或者某几层,并将它们和其他之前绘制完的层合成起来,技能使用GPU的能力,又能减少重绘的开销。
由于硬件能力和资源是有限的,为了节省GPU的内存资源,硬件加速机制在RenderLayer树建立之后需要做三件事情来完成网页的渲染
- webkit决定将哪些RenderLayer对象组合一起,形成有后端存储的新层,被用于合成,简称为合成层
- 将每个合成层中包含的RenderLayer内容绘制在合成成的后端存储中
- 有合成器将多个合成层合并,形成最后的可视化结果
哪些RenderLayer对象可以是合成层
- 具有css 3D属性或者CSS透视效果
- renderObject节点表示的是使用硬件加速的视频解码技术的video元素
- renderObject节点表示的是使用硬件加速的视频解码技术的canvas元素
- 使用了css透视效果的动画或者css变换的动画
- 使用了硬件加速的css filter技术
- 使用了裁剪或者反射属性
- 有z轴的坐标信息