1 / 7
文档名称:

Chromium硬件加速合成.doc

格式:doc   大小:15KB   页数:7页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

Chromium硬件加速合成.doc

上传人:好用的文档 2021/10/4 文件大小:15 KB

下载得到文件列表

Chromium硬件加速合成.doc

相关文档

文档介绍

文档介绍:Chromium硬件加速合成
转载请注明原文地址:# Chromium硬件加速合成(hardware accelerated compositing)## 概述在介绍硬件加速合成之前,让我们先大概了解一下基本的做法是如何渲染生成网页内容的。一个网页通常可以包含很多层,这个我们在WebKit渲染基础中讲过,例如有透明效果的节点, Canvas节点等,这些节点都可以是页面中的一层,这些层的内容最后组成一个可视化的网页内容,如下图所示。
在没有硬件加速的情况下,浏览器通常是依赖于CPU来渲染生成网页的内容,大致的做法是遍历这些层,然后按照顺序把这些层的内容依次绘制在一个内部存储空间上(例如bitmap),最后把这个内部表示显示出来,这种做法就是软件渲染(software rendering),我们会有专门针对它的介绍。随着GPU硬件能力的增强,包括在很多小型设备上也是如此,浏览器可以借助于其处理图形方面的性能来对渲染实现加速,本章要介绍的就是利用GPU来实现对页面分层渲染并加速合成网页的可视化结果。前面我们已经介绍了WebKit中对于渲染所做的一些基础设施,包括Render树和RenderLayer树,对于每一个RenderLayer,我们可以为其单独创建一块内部存储(有些情况下可以为多个layer创建同一块存储),这些存储会被用来保存该层中的内容,浏览器最后会把这些所有的层通过GPU合成起来,形成最终网页渲染的内容,这就是硬件加速合成。本节主要介绍WebKit中为硬件加速所做的另外一些基础设施,接着是chromium中为硬件加速合成所做的支持,最后介绍chromium中最新的合成器:chromium compositor(cc)。 ## WebKit 的支持在建立DOM树后,如前面所述, WebKit会创建相应的Render树和RenderLayer树。如果启用“加速合成(accelerated_compositing)”选项,WebKit会做一些特别的处理。它为每个RenderLayer创建一个RenderLayerBacking,这个类非常的有用,它是用来管理和控制RenderLayer的合成相关的事情,决定对该层是否做优化,同时包含了很多GraphicsLayer的对象。GraphicsLayer类是一种抽象,用于表示有后端存储(backing store)的渲染surface,同时,也包括作用于之上的各种变换(transformation)和动画(animation)。 RenderLayerBacking类中包含的这些GraphicsLayer有内容层,可能还有前景层(Foreground),剪切层(clipping)等。下图中的WebKit部分是WebKit中为渲染和硬件加速所涉及的类,在此一一介绍。RenderLayerCompositor: WebKit中渲染部分‘掌控大局’的类, 管理RenderLayer树结构,它通过浏览器的设置来决定是否创建RenderLayer以及是否硬件加速合成,同时也决定是否为RenderLayer创建RenderLayerBackingRenderLayerBac