安卓旗舰玩游戏为何滚烫?底层图形接口不统一
时间:2017-02-13 09:47:11 来源: 太平洋电脑网
手机发热绝对是一个让人头疼的问题,日常的使用与通话时间过长都会导致手机发热,更令人不爽的是,在飙大型手游时令人心惊胆战的不是游戏带来的快感,而是手机烫手的温度。随着手机的普及度越来越高,各手机厂商在降低手机发热这个难题上也是下足了功夫,主打性价比的厂商更是把高端元件放在了低端手机里,更好的元件意味着更低的功耗。我们对注诸如玩久发热、打手游发烧的现象可以说拜拜,大大地提升了手机的使用体验。
安卓手机为何成暖手宝
手机发热的主要原因有如下几个,手机通话时发热有两个方面:1、手机通话时需耗费大量的电能,电池的放电电流比待机时要大得多,因此电池会产生一定的热量;2、手机芯片中散发热量的元件:功放,手机在通话时负责接收与发射信号的功放芯片会全速工作,因而释放出来的热量要比待机时要大得多。长时间通话以后,电池和功放散发出来的热量积聚起来,没有及时地散发出去,手机温度便会升高。只要不是某个部位特别地热,并且手机没有其它的故障现象发生,通话二十多分钟以后手机发热是正常的。玩游戏也是两方面,一方面是电池的放电产生的热量,另外一方面是玩游戏时候CPU和GPU大量运算产生的热量。
传统印象中,性能和功耗总是成正比,这也就是为何越强大的PC主机要配上水冷甚至更强的冷却系统。于是很多消费者会说其手机中的配置都是最高端大气上档次的,为何还有发热的现象?难道是买了一台假手机?
运用各位同学熟悉的排除法来看问题,顶级的GPU运行一个理论上绰绰有余的游戏时应该没有如此大的发热量,但事实摆在那,温度就那么高。综上所述安卓手机运行大型游戏体验差的根本症结并非在于GPU,起码在高端手机芯片上GPU性能不是瓶颈,罪魁祸首是它的猪队友CPU。小编可没有冤枉他,CPU进行3D绘制时负载过高处理不过来,CPU不得不长时间运转的结果就是手机温度的升高。
讲到这里各位看官可能有点想不明白了,怎么处理不过来,寡人的CPU性能可是顶棒的!那么这里就不得不提到CPU负载高的元凶OpenGL了。它是指定义了一个跨编程语言、跨平台的编程接口规格的专业的图形程序接口。它用于二三维图像,是一个功能强大、调用方便的底层图形库。码字的方式应该简单点,CPU和GPU好比是两个水箱,OPEN GL就是中间的供给管。至于这管为何如此不给力,不是因为各位骚年整天在打撸而是这个标准已经在手机上使用了二十多年。
在1992年创立的行业标准,那个时候手机还在娘胎里呢。但是,随着手机处理器性能的高速发展,无论是用户还是厂商对此都怨声载道,各种口诛笔伐。于是,Open GL的官方组织终于顶不住压力,Khronos在2015年三月份推出了新一代API规范Vulkan,采用全新跨平台设计,但最令人惊喜的是大幅度降低了绘制命令开销,改善了多线程性能,渲染性能更快。
Vulkan也是一个跨平台的2D和3D绘图应用程序接口(API),最早由科纳斯组织在2015年游戏开发者大会(GDC)上发表。同 OpenGL 一样都是由 Khronos 集团开发。它是 AMD Mantle 的后续版本,继承了前者强大的低开销架构,使软件开发人员能够全面获取 Radeon GPU 与多核 CPU 的性能、效率和功能。Vulkan支持的操作系统包括:Linux, Windows XP to Windows 10, Android等。Vulkan还可以支持更多的GPU,包括:AMD, NVIDIA, Adreno, PowerVR, Mali等桌面GPU和移动GPU。这对手机厂商与用户来说可是一大福音。
下图讲解OpenGL/OpenGL ES与Vulkan区别之处,OpenGL驱动是一个庞大的接口层,应用不是直接的访问GPU的资源,而必须按照OpenGL接口的方法去访问则带来了诸多问题:①复杂的驱动导致过度的CPU开销,以及给设备运行带来了许多不可预测性。这意味着应用无法到预测某个接口调用开销,也就无法优化代码的运行。②驱动总是开启错误检测,给CPU带来了额外的开销。事实上如果应用自己做了错误检查,那么驱动就没必要再做一遍。③驱动需要重新编译链接整个shader代码,这样应用启动时便会消耗更多的初始化时间。④桌面系统和移动系统使用不一同的API接口,OpenGL ES被广泛应用于移动设备中,但在桌面系统上面还是使用OpenGL,这使得应用无法便捷地跨平台开发。
Vulkan提出的目的之一就是避免OpenGL驱动存在的缺点。相比之下Vulkan有:①更加简单的驱动结构,使得开销更小和更好的设备一致性。②提供分层架构,使得驱动执行时的正确性验证和调试信息可以按需加载。在良好验证的应用情况下,我们可以节省掉错误检测和调试代码执行的开销。③Vulkan运行时并不需要处理整串shader代码,而是处理SPIR-V中间代码。这便大大地节省了shader编译链接的时间。④为移动平台,桌面系统以及嵌入式设备提供统一的API。Vulkan不负责内存的管理,多线程的管理和并发访问保护,把这些工作转移到应用程序,而Vulkan只需要专注于为GPU提供服务,从而得到更加高效率的处理速度。
Vulkan能够支持深入硬件底层的控制,为 Windows 7、Windows?8.1、Windows 10和 Linux 带来更快的性能和更高的影像质量。Vulkan API 还提供超高的 OS 兼容性、渲染特性和硬件效率。不仅是电脑芯片厂商,也为手机芯片厂商提供了一个大舞台。
苹果的Metal
Metal是一个使用于在iPhone和iPad上GPU编程的高效框架。而Metal这个名称的来源则是为了说明这个图形框架的的确确是非常底层的——底层到已经非常接近金属板(Metal)。至少在图形上更进一步,支持更多直接访问底层硬件的操作,因为OpenGL或者Ios的图形库在手机芯片上跑,开销始终太大以致增加了散热难度,所以需要开放更多直接访问。该框架的设计主要为了两个目的:3D图形渲染和并行运算。这也是平时图形学上最常涉及的两个东西,它们都是基于特殊的代码在GPU上对大量的数据并行计算。
Metal相比OpenGL ES而言可以极大限度地的减少资源开销。当使用OpenGL来创建一段缓存或者纹理,往往会产生一份备份以防GPU在使用这段数据时有其他的访问。如果想要在确保数据安全的情况下拷贝缓存区或是纹理这样的大资源,那么产生的消耗可想而知。而反观Metal,就会发现它的处理方式更加简单,开发者可以在CPU和GPU之间同步使用这些数据。
为此苹果还提供了一个更为优秀的接口使得这种同步访问的情况变得更为容易:Grand Cnetral Dispatch(GCD技术)。不过使用Metal同样能做到这点,所谓先进的引擎就是能避免产生拷贝的情况下高效渲染那些需要加载或撤掉的资源。当然,大多数游戏开发者可能对深度的图形接口不怎么感冒,不过不少主流引擎已经开始青睐Metal,而开发者也将得益于在开发中不需要自己去创建API。此外,对那些游戏发烧友来说,Metal的出现,会让开发者们营造更加令人惊叹的游戏画面效果,同时运行也会更为流畅,对他们而言这无疑是一大利好。
结语
可能图形接口知识看起来与我们相离甚远,但它存在于我们的身边却如此真实。面对如今的图形接口方案越来越多,若每个厂商都搞自己的硬件层API只会给开发者带来麻烦。关于图形接口,统一地进行更新换代就最好不过了。