渲染优化
chromium为了优化渲染效率做了很多优化,这些不仅可以用在web渲染,也可以用于一些native图像界面的渲染;这些优化包括:
-
分成paint和compositing
-
paint分为recording和光栅化
-
跨线程渲染,避免和网络请求影响帧率,同时paint和光栅化可以并行,充分利用了CPU多核特性
-
Tiling
-
跨进程渲染,提高稳定性
-
先渲染0.5比例大小的内容,减少texture上传的大小加快渲染速度,同时离屏幕渲染正常比例的内容,提高滑动和缩放体验
-
特点策略决定cpu/gpu渲染
-
delegated renderer/direct renderer,将渲染放到最后,减少中间texture
为什么要用硬件渲染(GPU)?
-
gpu设计用来处理大量图形处理,效率比cpu更快,可能还更省电
-
有些图像比如视频,一些3d图像本身就在gpu内存,ui框架使用硬件渲染可以避免这些gpu内存写回到主存
-
cpu和gpu可以并行处理,比如cpu可以做光珊化的同时,gpu完成绘制到屏幕,形成一个流水线,效率更快
线程化渲染
impl线程和main线程(webkit线程)
main线程负责网页渲染和执行JS,包括css样式计算,会同步等待主