【发布时间】:2019-04-18 08:55:32
【问题描述】:
我一直在阅读 chrome here 和 here 中的关键渲染路径。我从这些资源中的理解是,“合成”步骤发生在主线程之外,并且依赖于前面的“绘制”步骤,该步骤生成要合成在一起的栅格化图层。
但是,当我在 Chrome 开发工具中查看位置动画的单帧期间发生的情况时,我看到了这一点:
- 看起来“合成”发生在主线程上,这不是我阅读这些资源所理解的。
- 在合成之前在主线程上有一个绘制步骤,但是在“光栅化线程”上合成之后还有另一个“光栅化绘制”步骤。
那么“Paint”和“Rasterize Paint”有什么区别,为什么在合成完成后会发生光栅化绘制步骤?为什么合成似乎发生在 chrome dev-tools 的主线程上,但文档将其描述为发生在不同的线程上?
【问题讨论】:
-
1) 我想你应该在 Paint 块下的 GPU 进程中看到一个相应的块,对于 Compositing layers 和 Compositor 进程也是如此; 2)我猜合成层是为合成器准备层来合成; 3)由于Chrome使用Skia,我猜“Paint”是调用Skia的一部分,而“Rasterize Paint”是在Skia内部完成的实际光栅化。 4) 我怀疑 Chromium 工程师会看到这个问题,所以我认为值得在 crbug.com 或 chromium 的 IRC 频道或他们的一些 Google 开发人员小组中提问。
标签: google-chrome google-chrome-devtools web-performance