返回

Chromium网页Graphics Layer Tree创建过程分析

前端

Chromium网页Graphics Layer Tree创建过程分析

引言

Chromium是谷歌公司开发的一款开源网络浏览器,以其快速、稳定和安全的特点而著称。Chromium的渲染引擎被称为Blink,它采用了一种称为Graphics Layer Tree(简称GLT)的体系结构来管理网页内容的渲染。GLT将网页内容分解为一系列图层,并通过GPU合成技术将这些图层合成到屏幕上。这种体系结构可以有效地利用GPU的硬件加速功能,从而提高渲染性能。

GLT的创建过程

GLT的创建过程是一个复杂的过程,它涉及到多个组件的协同工作。当浏览器收到一个新的网页时,首先由HTML解析器将网页的HTML代码解析成DOM树。然后,CSS解析器将CSS样式表应用到DOM树上,生成一颗渲染树。渲染树是一棵由渲染对象组成的树,它了网页内容的布局和样式。

接下来,浏览器会根据渲染树创建GLT。GLT是一棵由图层组成的树,每个图层都对应渲染树中的一个渲染对象。图层树的创建过程可以分为以下几个步骤:

  1. 确定图层创建的驱动因素。图层创建的驱动因素可以是以下几点:
    • 可见性变化: 当一个渲染对象变得可见或不可见时,浏览器会创建一个新的图层来包含这个渲染对象。
    • 几何变化: 当一个渲染对象的大小、位置或形状发生变化时,浏览器会创建一个新的图层来包含这个渲染对象。
    • 内容变化: 当一个渲染对象的内容发生变化时,浏览器会创建一个新的图层来包含这个渲染对象。
    • 滚动: 当用户滚动网页时,浏览器会创建一个新的图层来包含滚动的部分。
  2. 创建图层。当确定了图层创建的驱动因素后,浏览器会创建一个新的图层来包含受影响的渲染对象。图层是一个由以下几个属性组成的对象:
    • 图层ID: 一个唯一的ID,用于标识图层。
    • 图层类型: 图层的类型,可以是普通图层、滚动图层或视频图层等。
    • 图层边界: 图层的边界,由图层的左上角坐标和右下角坐标组成。
    • 图层内容: 图层的内容,可以是位图、视频帧或其他类型的媒体。
    • 图层属性: 图层的属性,包括不透明度、混合模式、变换矩阵等。
  3. 将图层添加到GLT中。当图层创建完成后,浏览器会将图层添加到GLT中。GLT是一个由图层组成的树,它了网页内容的布局和样式。GLT的根节点是一个特殊的图层,称为根图层。根图层包含整个网页的内容。其他图层都是根图层的子图层。

GLT的更新过程

GLT是一个动态的结构,它会随着网页内容的变化而不断更新。GLT的更新过程可以分为以下几个步骤:

  1. 检测内容变化。当网页内容发生变化时,浏览器会检测到这些变化。内容变化可以是以下几点:
    • DOM的变化: 当DOM树发生变化时,浏览器会检测到这些变化。
    • CSS的变化: 当CSS样式表发生变化时,浏览器会检测到这些变化。
    • 用户交互: 当用户与网页交互时,浏览器会检测到这些交互。
  2. 更新图层属性。当检测到内容变化后,浏览器会更新受影响图层的属性。图层属性的更新可以包括以下几点:
    • 图层边界: 当图层的边界发生变化时,浏览器会更新图层的边界。
    • 图层内容: 当图层的