原作者:Ellie Stone
原文地址:TyGL: Hardware Accelerated Web Rendering
今天,我们将在 SIGGRAPH 展会上向公众发布新款演示,这是 ARM 团队和三星英国研究中心团队以及匈牙利赛格德大学团队共同奋战 18 个月所取得的成果。它在基于ARM® Mali™-T628 GPU 的 Chromebook 上展示了大幅加速的移动 Web 渲染,性能较之市面上的其他解决方案提高了 1.5 到 4.5 倍(具体取决于运行内容的类型)。借助该解决方案,体验更为顺畅。它不仅适用于 Web 浏览,而且还能大幅提高基于浏览器的 UI 的用户体验,如现代已启用 GPU 的 DTV 中的 UI。
TyGL 解决方案是 WebKit 的全新后端,它可以应对 HTML5 开发人员当前在权衡图形丰富的 Web 内容和移动 CPU 受限渲染功能时遇到的挑战。光栅化通常主要在 CPU 上完成。尽管PC的能力能满足需求,但是使用移动 CPU 的渲染效率较低,这是由于 CPU 受电池性能的限制(如较低的时钟频率)- 而 GPU 可以处理诸如此类的并行任务,从而使得体验更为顺畅。但是,使用 3D 图形硬件(如 Mali GPU)渲染 2D 内容(如 Web 页面)是一项极具挑战的任务。光栅引擎设计场景是伴随频繁变化的属性进行逐个图形原语的绘制,而非使用单一绘制调用绘制同一类型的多个原语,GPU 则是针对后者进行优化的。因此,尽管 CPU 渲染速度缓慢,但是要高效地实现 GPU 渲染也比较复杂,因为 WebKit 发出了很多绘图调用,每个调用所使用的数据较少,对于使用 GPU 而言不是最优的。
HTML5 开发人员在面对当前可用的 WebKit 移植版(WebKit ports)的其他挑战为页面布局和绘制到屏幕之间的抽象化层次。如果抽象层距离底层加速的 API 太远,开发人员将失去对这些 API 的优势的编码能力,从而产生优化不良的实现。
TyGL 致力于减少当前移植版的抽象层次并提供已针对 GPU 完全优化的 Web 渲染解决方案,该解决方案仅依赖于受大多数应用处理器所支持的 OpenGL® ES 2.0 API。它是开源应用程序框架 WebKit 的后端,该框架可以用于在应用程序中构建类似 Web 浏览器的功能。大部分基于 WebKit 的产品包括诸如下列公司提供的嵌入式浏览器:Espial、ACCESS和 Company 100。
ARM 和赛格德大学使用 QtTestBrowser 深入剖析了常见 Web 页面的性能。结果显示,大多数活跃的 CPU 时间均耗费在 libQtGui 上 - 渲染/绘制 API 用于渲染屏幕内容。在渲染屏幕方面,GPU 的效率远比 CPU 高,并且根据提议,如果流水线绘制命令能够通过使用 OpenGL ES 2.0 API 得以完成,则性能将显著提高。
TyGL 流水线
上图概述了 TyGL 流水线。它采用三种不同的流程绘制文本、图像和路径,但是差别仅在于准备阶段。即使在准备阶段,我们也可以注意到许多相似点。首先,在文本和路径方面,部分或全部仿射变换应用于输入以便确保更高质量的输出,然后再应用所有剩余的变换渲染到 alpha 图像。最终,流水线路径在 GPU 加速变得高效时接合:加色、剪切、混合和合成。流水线的这一通用部分完全由 GPU 进行处理。通用流水线的每个阶段都关联到一个 OpenGL ES 片段着色器,该着色器以高度并行的方式对每个输出像素进行必要的计算。基于软件的图形库(如 Cairo)通常具备相似的流水线阶段,可以按照顺序执行并通过临时缓冲区进行通信,但是 TyGL 执行此类任务的效率更高。
TyGL 渲染的 Web 页面示例
我们正在紧锣密鼓地开展 WebKit 的 TyGL 后端的开源准备工作。早期结果显示该移植版可以成功提高浏览器 2D 光栅化的性能和效率,同时能够保持轻巧设计以便减少当前可用解决方案的抽象层次和额外开销。通过将此代码发布至开源领域,所有使用 WebKit 的浏览器供应商有望能够受益于 ARM 以及其合作伙伴在嵌入式GPU上进行 2D 光栅化领域所占据的领导地位。
如果您希望了解 TyGL 的更多信息,欢迎参加本周举办的 SIGGRAPH 展会,前往 ARM 展位并与 ARM 的幕后精英一同探讨。