首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

通过GC Nano技术提升用户界面体验

通过GC Nano技术提升用户界面体验

关键字:GPU   GC Nano   UI渲染   可穿戴设备   IoT设备  
GC Nano合成UI的架构优势

GPU渲染包括两个主要架构,即瓦片纹理渲染(TBR)和直接渲染(IMR)。TBR在全帧所有相关信息都可用时,将屏幕图像分解成方块并进行渲染。在IMR下,图形命令直接向GPU发布并立即执行。Vivante架构中的技术可以剔除帧中隐藏或不可见的部分,因而不会在渲染最终将被去除的场景部分上浪费执行、带宽和功率等。Vivante的IMR在为最新AAA级游戏(利用全硬件加速呈现精细的几何图形和PC水平的图形质量)渲染逼真的3D图像时也具有显著优势,例如其高端GC Vega内核(DirectX 11.x、OpenGL ES 3.1及安卓扩展包AEP)可支持高级GS/TS着色器等。注:GC/TS等一些高级特性不适用于GC Nano系列。

UI瓦片纹理渲染(TBR)架构

下面说明在TBR架构下渲染UI的过程。

·场景分解成块。TBR架构将图像分解成独立的瓦片(小方块)进行渲染。每个方块都有自己的数据库/命令列表(方块列表),并且在GPU开始渲染和进入下一帧之前,整个帧的所有命令都需处于可用状态。数据库/方块列表缓冲区的大小在渲染(可能导致溢出)前也是未知的,并且依赖于帧—简单帧数据库较小,而复杂帧数据库较大。任何方块在处理过程中发生变化都意味着整个帧数据库需要再次更新,而且在某些情况下,需要刷新全帧并重启。



图7a 场景分解成块


·但是在渲染帧之前,所有UI表面在处理前都需通过瓦片前处理。在UI 合成之前,TBR架构需要每个UI表面都通过瓦片前处理。在本样本图中,12个表面中的每一个都被分割成三角形来进行渲染—本例为两个三角形,但三角形的数量也可以更多。由于每个帧都需要经过预处理,这就极大地增加了合成的时延。



图7b 每一个都被分割成三角形来进行渲染。


·将预处理步骤和分块步骤相结合,可实现以下效果。图8展现了当前帧的情况,所有的UI表面都被分割为三角形,整个帧被分块,并准备好进行渲染。如果帧不发生任何变化(静态UI),则可按原样渲染。



图8a 展现了当前帧的情况,所有的UI表面都被分割为三角形,整个帧被分块,并准备好进行渲染。


·如果UI为动态,则帧各部分需要进行重处理。如果帧各部分为动态,则只有被标注为“dirty”的方块将根据变化进行重处理。对于细小的变化,只要UI表面保持原样,且只有一小块区域在任何给定时间进行更新,则可以接受。较新的UI为前景和背景表面增加了动态特征—帧内容、图像、文本等很多部分不断发生变化。例如,天气图标(如雨和云)可能是动态的,菜单项会自动滚动,内容会不断更新,视频在播放,背景墙纸也是动态的。在各种情况下,所有的UI表面将需要经过预处理,为渲染做准备,而这就增加了时延。



图8b 如果UI为动态,则帧各部分需要进行重处理。


·图9(详见本刊网站) 展示了UI 内部的“dirty”方块。每个黄色板块代表一个“dirty”方块,需要进行更新。每次表面发生变化时,都需要经过预处理,相应的方块也需要经过预处理。如果在帧完成数据库和命令列表时发生任何变化,则在TBR GPU移动至下一个帧前,整个数据库都需要进行更新。



图9 UI内部的“ dirty”方块。


·TBR UI渲染总结。从上述步骤可看出,由于预处理的UI三角形需要首先储存在内存中,然后在使用时会被读取,基于TBR的GPU具有额外开销,这就增加了UI渲染的时延。TBR GPU也需要大量的片上L2缓存来存储整个帧(方块)数据库,但随着UI复杂性增强,片上L2缓存大小(裸片面积)只能同时增加,或TBR内核只能不断溢出至DDR内存,这会导致时延、带宽和功率增加。TBR具备确认和追踪U I的哪些部分(方块)和哪些表面发生了变化的机制,可尽可能简化预处理过程,但对于拥有很多移动区域的较新UI来说,这仍构成了限制。此外,随着屏幕尺寸/分辨率和内容复杂性的增加,在所有屏幕上,由此导致的时延在使用统一UI的谷歌、微软和其他操作系统平台上甚至显得更为明显。
返回列表