【省流总结】手机GPU和PC显卡有何不同?小芯片为何能玩大型游戏




摩尔线程、象帝先、芯动科技:是的孩子们,这个我们很熟悉










































































































这里就解释了摩尔线程为何用IMG的POWERVR上PC端根本就不好使的原因了




github.com/Swung0x48/TriangleBin










超分其实也是很重要的一个迭代,不过即使是GCN的显卡也能享受到优化

不过从本期来看确实也证明了IMG POWERVR的移动端GPU和桌面端GPU的设计思路的区别以及生态的分裂,拿着移动端GPU架构并不能直接改出能用的桌面CPU
所以还是扣1复活S3扣2复活3DFX扣3复活SIS吧,至于指望IMG或者图芯之类的还是拉倒吧
字幕提取:
今天在座的不少同学
可能已经习惯了在你的手机上玩游戏
你可能已经觉得
这个手机这么一个小身板
哪怕能运行3A大作
那也是理所当然的 是吧
哎 但是你知道吗
在十几年前
手机刚刚引入大型游戏的时候
比如当年的《无尽之剑》问世的时候
很多玩家看到那个画面
真的是难以置信的
就我作为一个多年的PC玩家
我完全不敢相信
就凭手机里这么一颗小芯片
它是怎么跑动那些大型游戏的呢?
其实你不知道
当年的GPU业界的工程师
为了让你在掌心上也能体验到游戏的乐趣
可谓是煞费苦心了
那他们到底做了些什么呢?
手机GPU和电脑显卡的GPU
从设计思路上有什么根本性的不同呢?
今天我们就来好好跟大家聊一聊这里边的故事
首先我们要知道
其实目前手机和PC的GPU
几乎所有的不同
根本上都来自一个在移动端发扬光大的渲染技术
TBR
中文翻译过来
就是“切片式渲染”
之前我们在视频里已经简单聊过TBR
它起到的作用
就是提前把要渲染的整张画面分成很多很多片
然后再让显卡来处理
那么问题来了
移动端为什么要这样渲染呢?
哎 展开说的话
就得说好久了
我们首先就得提到一个在手机GPU领域
如雷贯耳的名字 —— PowerVR
玩机玩得久的同学一定听说过PowerVR这个名字
它是曾经的行业巨头 Imagination公司
推出的GPU品牌
PowerVR最早做的是游戏厅的街机GPU
90年代中期才进军PC显卡
在那个显卡行业勃勃生机万物竞发的年代
PowerVR曾经也是和
3dfx的Voodoo、NVIDIA、ATi、S3等众多显卡厂商
掰手腕的一员
与此同时
他们的GPU也被世嘉相中
用在了Dreamcast游戏机里
PowerVR之所以能混得风生水起
主要就是因为
他们在GPU行业里有着一个独到的技术创新
这个技术就他家在做
什么样的技术呢?
勤俭持家的技术
核心就是我们上面提到的TBR
我们先来看看NVIDIA和ATI这些传统GPU
是如何渲染的
传统的3D显卡渲染游戏
用的是“直接渲染”的管线
我们叫做IMR
Imediate Rendering
它具体是怎么工作的呢?
我们一步步来看
首先 游戏运行的第一步
CPU会告诉显卡需要绘制什么东西
比如你要绘制一个立方体
或者绘制一个角色
这些指令通过图形接口和显卡驱动来传递
它里面会包含物体的三维坐标
顶点连接关系等等重要信息
这些数据会被存在显存里面
等待显卡来处理
接下来
GPU的顶点着色器
会把物体的三维坐标“翻译”成屏幕上的二维投影
相当于从某个角度去看一个三维模型
然后把它拍成一张平面的图片
有了二维投影之后
GPU需要把它切割成无数个小格子
也就是屏幕上的像素
这个切割过程叫做“光栅化”
光栅化完成后
GPU还要决定每个像素的具体颜色
是什么样的颜色?
这个时候呢
像素着色器会根据物体的材质啊
纹理贴图以及光照效果
计算出每个像素该显示的颜色
最终
所有像素的颜色都确定好后
这些数据会被写入帧缓冲区
等待显示器的读取
然后就能展示出一帧完整的游戏画面了
在这样一条 IMR 管线里
其实会存在一个问题
就是GPU和显存之间的数据交换非常频繁
尤其是在后半段像素着色的时候
有大量数据需要在显存和GPU间来回传递
这就带来了两个大麻烦
一是显存带宽不够用了
二是显存功耗会非常高
对于旗舰显卡来说
它的显存给得够大够宽
可能就完全不介意
但是对于入门级显卡
包括街机 游戏机 移动设备
还有各种各样对成本敏感
对空间和散热敏感的产品来说
没钱没空间塞显存
就很难喂饱吞吐量巨大的 GPU
那你想
PowerVR多年来就是在耕耘街机游戏机这些市场
他们要是没点绝活
怎么可能混得好呢?
人家的GPU最擅长的就是花小钱、出小力、办大事
为了做到这一点
PowerVR从1995年起
率先引入了一种全新的渲染技术
就是我们前面讲到的TBR
相比传统的IMR直接渲染
这个TBR就非常不一样了
怎么个不一样法呢?
想象一下
你现在是一个画家
你要画一个大画布
但是你不直接一笔画完整个画布
而是把它切分成很多小块
每一小块单独画
这就是TBR的核心思想
在传统的IMR管线中
整个场景的数据都要一次性送往显存
但在TBR中
屏幕被切割成了很多小“块”
这个我们业内称作Tiles
切片
你可以把这些Tiles想象成一个个小“存储箱”
每个箱子里都存放着和这个区域相关的几何信息
然后为了避免浪费资源
TBR管线里也会用到另外一些技术
比如HSR
来先计算物体之间的遮挡关系
判断哪些部分在视野中是不可见的
被挡住的部分嘛
就没必要去计算了 对吧
减少一些工作量
接下来
TBR会在每个Tile内部进行光栅化和着色
这里最大的不同是
在现代GPU引入缓存机制之后
因为都切成小块了
所以Tile上着色完的像素信息
是用不着立即传输到显存的
而是可以保存在GPU内部的缓存中
在需要的时候就能低延迟地调用
再接下来
执行完透明度测试和后期深度测试后
GPU才把这个 Tile 渲出的一小块画面
从缓存
送进显存的帧缓冲队列里面
整个过程下来
TBR就可以节省海量的传输消耗
虽然切割Tile这件事情本身
也要消耗一些额外的资源
但和节省下来的性能功耗比起来
往往还是值当的
另外 TBR还有一个特别的优点
就是它对诸如MSAA这样的抗锯齿技术非常友好
通常情况下
开启抗锯齿会增加显存占用的
比如4xMSAA的话
你就需要在显存上
对需要做抗锯齿的物体的边缘读写4倍的framebuffer
但用上TBR之后就不需要直接在显存上读写了
能省很多带宽
有了TBR跟HSR的结合之后啊
PowerVR的入门GPU
就可以用更低的规格 少得多的内存带宽
实现不逊于竞争对手中档GPU的性能
他们当时推出的KYRO架构的显卡
确实都是瞄着性价比去的
以小博大
算得上平民英雄了
可惜
进入21世纪后
显卡市场越发残酷
我们之前就做视频聊过
英伟达在1999年的GeForce 256上实现了硬件T&L
直接在性能层面降维打击所有对手
竞争之激烈
甚至连3dfx这种巨头都败下阵来
最终PC显卡行业只留下了NV和ATi两根独苗
PowerVR也是在这个过程中被淘汰了
他们除了在对硬件T&L
和最新的DX8接口的支持上慢了NV一拍之外
当时的开发者也普遍不太喜欢他们的TBR管线
可能由于驱动写得比较烂的关系
很多时候需要做额外的适配工作
然后他们显然也做不到跟NV正面硬刚性能
所以无奈之下
PowerVR只能退出了PC显卡市场
此处不留人
自有留人处
PowerVR的这个TBR技术
用在成熟的桌面显卡市场大家不愿意去配合
那如果用在一个不成熟的新市场
本来就没有标准
是不是一开始就能被大家接受呢?
哎 这一次
PowerVR就瞄准了一个从来没人挖掘过的新方向
就是移动GPU
彼时的手机还刚从大哥大演进为彩屏呢
手机上的芯片
自然是不包含GPU的
毕竟以当时人们的认知
怎么都想不到
手机为什么会需要GPU
但PowerVR还是很有远见的
他们做移动GPU一方面是看好便携式游戏设备
还有未来的3D手游
更重要的一方面是
他们觉得未来手机会有越来越复杂的图形界面
手机这样重交互的设备
一旦智能化起来
厂商一定会做出各种2D 3D的系统动画效果
这些交互动画会需要很多图形算力
仅仅凭借当时ARM9处理器那点CPU性能恐怕没法满足
给手机配备专用GPU绝对是有意义的
而恰好
PowerVR一直以来的杀手锏
他的TBR技术
又特别适合用在手机上
因为手机恰恰就是缺内存带宽
就是缺各种资源
就是要求低功耗
如果能把TBR结合进来
那就能以很低的成本
实现手机上可用的图形效果了
于是 在2001年
世界上第一款手机专用GPU诞生了
就是PowerVR的MBX
作为手机GPU的始祖
这家伙后来被搭载在了很多的设备上
当时手机处理器的业界标杆
德州仪器的OMAP 2420
就使用了PowerVR的MBX GPU
那使用这款芯片的最最经典的机型
就莫过于诺基亚的N95了
N95在当年是真正的旗舰机皇
我上学那会同学里有富哥买了N95的
我们都得顶礼膜拜
指望人家开恩借来玩一玩
除此之外
MBX GPU还被用在了初代iPhone上
用于支持iPhoneOS的界面动画和游戏娱乐
你看
诺基亚的塞班旗舰和苹果的全触屏新机
这两个业界标杆都先用上了GPU
这一波下来
PowerVR算是借着智能机的东风
迎来了第二春
过了几年之后啊
PowerVR又推出了SGX5系列的GPU
通过引入硬件T&L
让GPU从CPU手里接管了顶点处理和光照计算
大幅提高了性能
手机上也第一次拥有了可编程渲染管线
TBR的渲染流程也受益于此
可以更早地开始遮挡剔除的判断工作
SGX5这代GPU甚至可以说是现代移动GPU的开端
它也被用在了更多的设备里
从我们熟知的iPhone 3GS、iPhone 4、iPad 1代
再到三星初代Galaxy S
摩托罗拉里程碑等一众
采用三星和德仪处理器的安卓机
再到索尼PSV掌机
甚至英特尔的Atom处理器里
你都能见到它的身影
尤其是SGX543、544这两代
可以说相当经典
应该有不少同学以前玩机的时候也接触过
这段时间也是Imagination混得最好的一段时间
在此期间
手机图形标准也在慢慢完善
OpenGL专门为移动端做了ES标准
去适应低功耗低带宽的设备
所以其中很多优化就和TBR的特性契合上了
而其它厂商看到TBR技术很管用
也都决定跟进
像ARM的Mali GPU
从一开始就使用了TBR管线
而高通的Adreno就有点特殊了
他们最早是从ATi手里买来的IMR的GPU
但从14年的Adreno 400系开始
高通也引入了FlexRender技术
可以IMR和TBR双修
所以你看
很大程度上
正是 PowerVR 和他们发展的 TBR 技术
塑造了今天手机端的游戏渲染管线
那么又有同学要问了
既然TBR技术看起来如此多快好省
为什么当时的NV和ATI不去用它呢?
桌面端的独显不也可以受益吗?
哎 这个事情还是有点复杂的
除了我们前面讲到的PC开发者先入为主之外
TBR其实也有一些实打实的缺点的
首先啊
TBR 这一套流程能够有效执行的前提
是前面切Tiles切片来处理顶点的代价
要小于后续处理整张图片的代价
也就是说
切片行为本身不能消耗太多性能
很多时候游戏的模型做得太复杂
切片很难切
那么TBR的优势就会被削弱
PC上的游戏开发者们
并不会有意识地去考虑这件事
倒是手游开发者
在一开始就会配合TBR
比如可能会给模型减面
减少顶点数量
尽可能让TBR发挥出更高的效率
除此之外
TBR在特性上是比较依赖GPU自带的缓存的
但是像PC游戏上的环境光遮蔽啊
全局光照甚至光追这些进阶技术
往往都要借助其他数据
来协助计算现有Tile上的结果
这种时候本地缓存就没用了
因为还是要写回显存再读取出来
你就省不了一点带宽
好 聊完了理论之后啊
来给大家玩一个有意思的互动的小东西吧
这次我们也写了一个小软件来检测渲染顺序
在Windows用的OpenGL 4.X
在安卓用的是OpenGL ES 3.2
它的原理就是
在像素着色器的每次调用里
都给一个计数器加一
然后超过固定的数量就停止渲染
通过这么一个小程序
我们就可以知道你的GPU是按照什么顺序
给画面上的像素着色的了
这个小程序我们也作为一个课堂教具
大家可以自己下载下来玩玩看啊
来 你看 我们现在用的是一个桌面GPU
它在这个测试里
基本上就是 IMR 的行为
但是在细节上
其实它的处理顺序
也不是像前面讲的那种严格的
或者说典型的IMR
严格地从上往下 从右往左去着色
你看 全程看下来
也有一些分块的现象出现
不过到头来
GPU 还是按照一个个图元的顺序来处理
所以这个肯定不属于 TBR 的范畴
但是移动端的 Mali GPU
对吧 你看
这个就是根正苗红的 TBR
这一块接一块地渲染
非常典型的 TBR 特征
与此同时呢
高通的 Adreno 就有点不一样了
它似乎在这种帧缓冲比较小
条件比较简单的情况下
直接放弃了分块
转而去使用它 GPU 自带的大缓存
来直接执行类似 IMR 的步骤
看起来很豪横啊
而即使在几何比较复杂的时候
开始使用TBR之后呢
它在 Tiles 里也是先执行了类似于 IMR 的操作
而不是像 Mali 那样
先算好每个图元的可见性
再去给每个像素着色的
哎呀 这移动端都是TBR
但是各家的方案还真是有点不一样的
OK 相信你看到这里也大概清楚了
总的来说呢
TBR 是在移动端 SoC 硬件能力受限的背景下
诞生的一种丢芝麻捡西瓜的渲染策略
它的终极目标
还是让用户能在手机上顺利地玩游戏
同时 TBR的影响
也并不只是出现在手机上
这几年来 我们熟悉的桌面端显卡
从英伟达的Maxwell也就是9系卡开始
还有AMD的Vega架构开始
也引入了TBR的一些思路
比如NV的Tiled Caching技术
就是把更多数据交换留在L2缓存上
来减少显存带宽的压力
反过来说
如果硬件资源并不匮乏的情况下
那么 TBR 就不是万能解
像高通 Adreno GPU 在我们的测试里就是能伸能屈
当然前提也是它有尖端制程的大容量缓存加持
能够扛住部分 IMR 的开销
现在看起来
逐渐阔绰的移动端并没有忘记 IMR 的绝对性能
而多年来大手大脚惯了的桌面端
其实背地里也已经开始勤俭持家了
我觉得它们在技术上的更迭
其实都是为了更好地发挥硬件性能
这点是殊途同归的
说到这里
我们关于手机GPU渲染管线的科普就告一段落了
虽然有点生涩吧
但是希望大家看完能有所收获
不知道大家等会儿玩游戏的时候
会不会突然开始在意起这个画面
到底是怎么渲染出来的呢?
如果你觉得这期视频有干货的话呢
一定要点赞支持我们
也别忘了关注我们频道 极客湾
那我们就下次再见了 拜拜
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~
