一、Adreno GPU简介
Adreno GPU是美国Qualcomm为移动平台设计的集成GPU。支持最先进的移动API,同时具有优异的性,应用于对带宽、功耗、散热等方面都有限制的移动芯片。Adreno GPU支持任意复杂的API,比如OpenGLES(2.0、3.0、3.1等)、OpenCL、RenderScript、DirectX等。目前发布的分别有Adreno130、Adreno200、Adreno203、Adreno205、Adreno220、Adreno225、Adreno302、Adreno305、Adreno 306、Adreno320、Adreno330、Adreno420、Adreno430系列。Qualcomm可以为移动终端带来台式机品质的游戏体验。
Epic Games高级引擎程序师Niklas Smedberg表示:“Epic现在已经通过Qualcomm Technologies的骁龙805芯片组将虚幻引擎4(Unreal Engine 4)引入到了Android终端上。最近,我们还与Qualcomm Technologies合作,通过骁龙Adreno GPU硬件将图形体验提升至一个全新的水平,为Android智能手机和平板电脑带来前所未有的高效统一着色功能。”
二、Adreno GPU架构特性
1、统一渲染架构(Unifled shader architecture)
所有的Adreno GPU都支持统一渲染模型,Adreno GPU的计算单元(ALU)即支持顶点shader又支持像素/片段shader。这样的设计可以充分利用系统的资源避免浪费。Adreno GPU的统一渲染架构GPU里,顶点着色器和片段着色器之间不存在物理分割,是系统根据当前的运行状况自动分配他们之间的比例。
Adreno GPU上,第一帧顶点计算多就分配给顶点着色器多一些ALU,而第X帧像素运算多就分配给像素着色器多一些ALU。而不支持统一渲染架构的GPU是平均分配ALU的,比如第一帧像素处理少用不完自己的ALU,但是却无法共享给顶点着色器,造成巨大浪费。
2、更早进行深度测试(Early Z Reject)
为了避免浪费GPU资源去画那些被挡住的点,提高渲染包含不透明物体的大场景时的性能,更早进行深度测试。尽量早的剔除被挡住的不透明的面,这样被剔除的像素不会被着色器着色,也不会被其他模块处理。并且,剔除非常高效——像素剔除的速率是像素绘制速率的2倍。
3、Tiled渲染架构
Adreno GPU包含高速缓存(GMEM)来存储深度、模板和颜色信息,类似PC显卡的显存。GPU可以以很高的速度访问GMEM,访问速度到什么程度呢?到访问时间可以忽略不计,同时耗电量也可以忽略不计。所以,使用GMEM是高效低耗的。同时,还可以降低alpha混合和抗锯齿的成本。
既然GMEM这么好,是不是越大越好呢?回答是肯定的,但是这会导致成本的急剧增加。所以,GMEM一般不会太大,比如1M。GMEM这么小怎么来使用呢?这就需要基于Tile的渲染架构。
Tile渲染不同于一次渲染整个场景,而是分多次渲染。要渲染的面被分割为一些小的“bin”.Bin的大小由GMEM的大小除以渲染目标的格式(包括深度缓存的格式)和大小来决定。
4、FlexRender技术
前面我们讲的Tiled渲染架构是一种延迟渲染技术(DeferRender),而与之相反的就是直接渲染技术(DirectRender)。Adreno GPU为了最大的发挥高性能的特性,可以对渲染目标进行分析,自动选择DeferRender还是DirectRender。
5、PCF阴影处理
Percentage Closer Filtered(PCF)阴影处理技术通过过滤深度测试的结果来生成更柔和的阴影边缘可以提供消除锯齿的流畅、逼真的动态阴影。
6、动态硬件曲面细分着色器(Tessellation)
Adreno GPU通过硬件从低分辨模型中创建更多的细节,既节省内存带宽的占用,又可以提供渲染非常平滑和高细节场景的能力。
7、纹理支持
支持的纹理有:多重纹理、视频纹理、纹理压缩、浮点纹理、无缝立方体纹理、3D纹理、大尺寸纹理、sRGB纹理
8、其他特性
统一的缓冲区
优化:为着色程序提供统一的数据。
切换统一的缓冲区一般比切换单独的缓冲区快。
统一的缓冲区可以存放更大的数据快,而且可以在不同的程序间共享。
三、总结
本编文章主要对Adreno GPU和其架构特性部分进行了介绍,大家有问题的话欢迎前来探讨。