从技术层面分析与猜测华为很吓人的技术GPU Turbo的原理

2018.06.06华为在发布荣耀 Play 的同时一同发布了华为内部据称研究了很久的“吓人的技术” —— GPU Turbo,这个技术的存在使得华为的手机不仅仅能打平其它 Android 旗舰机,它甚至可以让 Android 和 iOS 一较高下。

这个 GPU Turbo 在推出的时候由于只适配部分游戏,这引起了外界对华为这个技术的猜测。有网友怀疑是不是华为向游戏厂商交了保护费所以才有了这样的优化,但事实上多方证据表明华为并没有给任何手机厂商付保护费。

笔者在知乎逛了一圈,得出了一个结论,华为确实是做了一个黑科技。

Vulkan

GPU Turbo 目前还没有公布具体的细节,但网络上有两种说法。第一种是华为从底层换用了 Vulkan,并且由于 Mali GPU 是公版的,所以华为对这个 GPU 的驱动进行了魔改,从底层提升了 GPU 的效率。

Vulkan 是一个新的图形 API,Vulkan 在 Android 系统中的地位和 DirectX 在 Windows 上的地位是一样的,它是一个更优的选择,可以在降低手机功耗的同时提升游戏画面的质量。Vulkan 能对手机的硬件资源进行更好的利用,所以像虚幻 4 这样支持 Vulkan 的引擎可以通过 Vulkan 打造出非常逼真、丰富的画面,例如虚幻 4 面向手机做的一个技术 Demo —— Zen Garden。

实际上你会发现 Vulkan 对手机游戏的提升和 GPU Turbo 是很相似的,所以华为非常有可能在底层使用了 Vulkan。

和 Windows 类似,Windows 除了 DirectX 还有一个传统的 OpenGL,由于 Windows 上的 OpenGL 相当缩水,导致同样的游戏在 OpenGL 和 DirectX 下有很大的差距,如果你有兴趣的话可以在 PC 上运行 OpenGL 版的《Dota 2》,二者有比较明显的差距。

图形接口的基准水平可以通过跑 3DMark 来测试,左边是高通骁龙 845,右边是 GPU Turbo 后的麒麟 970,我们看到华为的 GPU Turbo 确实是一个全局优化,Vulkan 分数上浮了大概 1000 分。

OpenGL ES 是目前手机上最常见的图形接口,如果你熟悉《王者荣耀》你就会发现 Vulkan 和 OpenGL 有很大的差距,不论是耗电还是帧率。考虑到目前支持 Vulkan 的游戏只是少数,所以华为不太可能只基于 Vulkan 来实现这些东西。

有拿到实机的网友表示《崩坏 3》的游戏体验也有提升,但《崩坏 3》是一个基于 OpenGL ES 的游戏。这意味着华为还做了其它的优化。

驱动

驱动笔者个人猜测铁定是被魔改了的,这个魔改涉及两方面。

一方面是这个驱动会对 OpenGL ES 接口的游戏进行优化,微博上炮神 @ioncannon 的猜测是这样的:

笔者认为华为把单线程 OpenGL ES 的游戏通过驱动方面的手段强制跑成多线程是可以做到的,游戏怎么调用图形接口确实是游戏决定的,但是,驱动程序的权限是大于游戏本身的,所以驱动程序可以强行决定游戏的运行方式。这可能是一个优化的点。

其次,@楠爷 给出的猜想也让人信服,笔者觉得这个是相当可能是 GPU Turbo 效果惊人的主要原因,笔者先前的猜测也有一部分和 @楠爷 的观点不谋而合。

如果你用过 Nvidia 的显卡,你会发现 Nvidia 的显卡驱动里可以强行无视掉游戏设置来对游戏的画质进行调节,那么华为可能在游戏设置全高的情况下通过驱动程序来强行降低贴图、模型的渲染质量,并通过计算量更低的 HDR 等重重滤镜来补偿画面质量强行降低导致的画面损失,使得玩家的体验并不会产生太大的差距。

网上也有网友给出小米 8 和荣耀 Play 在玩“刺激战场”的时候同样的画面设置同一个地方二者贴图精细程度不同的图。

实际上如果显卡驱动强制决定了游戏的配置,且不告知玩家,那么玩家会因为心理作用把画面设置到最高之后就会认为游戏的画面达到了最高,实际上并没有。

这也可以解释为什么华为要对不同的游戏进行一一适配,不同的游戏玩家对画面质量的要求是不一样的,所以华为要调整“阉割配置”来确保玩家的游戏体验不会出现太大的偏差。

黑科技

有网友深挖了华为的专利技术,发现华为确实是有一个黑科技的,@淡绿 给我们展示了一个这样的专利:

首先 GPU 运算核函数可以在这个专利的技术加持下可以得到优化,同时华为还拥有一个加速 GPU 读取内存数据的专利,这意味着 GPU 的运行效率可以得到进一步的提升。

专业点分析,在 15 年以后设计的麒麟芯片 GPU 里都设计了用于全局变量寄存器,同时为了保持专利申请到位前的应用,保留了 GPU 大外寄存格局...(55 亿晶体管你们都干了什么?)现在专利申请到了,就一步位给 15 年以后设计的芯片全都上了这个技术,适配应该是简单的机型适配。

这表示麒麟 SoC 的 GPU 区块可能加入了比较大的寄存,在新技术的优化下寄存数据的存取可以变得更快、更高效。反映在单独的计算单元上这个可能并不能带来很大的提升,但对于 Mali 这样的 GPU 来说,这个技术带来的提升可能会很显著。

在笔者看来这三种说法的任意一种单独拿出来都达不到 60%的提升效果(虽然这个 60%存在水分),所以华为这个东西更有可能是这三种说法的一个综合,刚好,软硬都凑齐了。

实际上普通消费者基本上不关心华为是怎么实现 GPU Turbo 的,他们关心的东西很简单 —— 最直观的实际体验。实际上不管 GPU Turbo 怎么实现的,它打起游戏来爽、快、稳,甚至可以超越 iPhone 和高通骁龙 845,那么华为就已经成功了,就算 GPU Turbo 只是一个交保护费搞出来的东西,那么华为也成功了。

荣耀 Play 的发布有两个重要的意义,第一个是华为 GPU Turbo 的实现意味着华为确实有能力让 Android 变得更好、更易用,华为自己研发 SoC 确实相交于其他厂商有着无法比拟的优势,第二个是,荣耀 Play 是一个千元产品,华为 Mate RS 是一个万元产品,这两个东西用的 SoC 是同样的,这意味着华为似乎已经找到了旗舰机配置公式化下让手机拥有层级差异的新道路,而其他厂商似乎都还在摸索中。

发表评论
留言与评论(共有 0 条评论)
   
验证码:

相关文章

推荐文章

'); })();