得鹿梦鱼 得鹿梦鱼

硬件加速渲染

使用GPU的硬件能力来帮助渲染网页,因为GPU的作用主要是用来绘制3D图形并且性能特别好,是他的专长所在

对于GPU绘图而言,通常不像软件渲染那样直视计算其中更新的区域,一旦有更新请求,如果没有分层,引擎可能需要重新渲染所有的区域,因为计算更新部分对GPU而言可能会消耗更多的时间,当网页分层后,部分区域的更新可能只在网页的一层或者某几层,而不需要将整个网页都重新绘制,通过重新渲染网页的一个或者某几层,并将它们和其他之前绘制完的层合成起来,技能使用GPU的能力,又能减少重绘的开销。

由于硬件能力和资源是有限的,为了节省GPU的内存资源,硬件加速机制在RenderLayer树建立之后需要做三件事情来完成网页的渲染

  1. webkit决定将哪些RenderLayer对象组合一起,形成有后端存储的新层,被用于合成,简称为合成层
  2. 将每个合成层中包含的RenderLayer内容绘制在合成成的后端存储中
  3. 有合成器将多个合成层合并,形成最后的可视化结果

哪些RenderLayer对象可以是合成层

  1. 具有css 3D属性或者CSS透视效果
  2. renderObject节点表示的是使用硬件加速的视频解码技术的video元素
  3. renderObject节点表示的是使用硬件加速的视频解码技术的canvas元素
  4. 使用了css透视效果的动画或者css变换的动画
  5. 使用了硬件加速的css filter技术
  6. 使用了裁剪或者反射属性
  7. 有z轴的坐标信息