长久以来,ARM架构的各种游戏机(不单指周哥、沙雕之类的山寨展锐掌机,还包括骁龙芯的AYANEO和广大安卓手机),始终存在一个明显短板。这类设备运行原生安卓游戏、模拟器程序时表现出色,但如果想游玩现有的Steam和GOG等PC游戏库,大家通常还是会选择x86架构设备。
这就是为什么ARM架构的任天堂Switch 2在过去一年凭借2000万销量横扫掌机界,而像SteamDeck、ROG XBOX掌机,还有所有搭载英特尔、AMD处理器的X86 PC掌机,仍然能凭借几百万销量存活的原因。
很长一段时间里,行业仿佛形成了固定格局:ARM架构主打手机等移动续航类便携设备,x86架构才是正统PC游戏的专属,这种划分看似难以撼动。
但如今,作为已经被破解得相当彻底的掌机,2017年的初代任天堂Switch,已经跑起了Steam平台(虽然不流畅),因为这台设备用的还是十年前英伟达推出的降频版Tegra X1芯片。随着Proton 11测试版新增对ARM架构的支持,玩家借助引导工具,给Switch刷入Linux系统后装上了Steam客户端。这听着只是个博人眼球的鸡肋玩法,客观来讲,在Switch上仅仅能运行Steam而已。可这件事也清晰地传递出一个信号:既然十年前的Switch都能实现,那x86掌机,或许并非PC游戏掌机的最终形态。
首先要说明,这里所说的“能运行”,其实是相对概念。此前流传的相关Switch视频,大多只展示了Steam的操作界面,并没有实际运行游戏。想要真正启动游戏,需要搭配大量兼容适配方案,即便成功运行,也普遍存在帧率偏低的问题,还有诸多限制条件。
必须强调的是,Switch本身并不适合用来运行PC游戏,我想表达的也并非这款设备的体验有多好。恰恰相反,一台配置如此老旧的硬件尚且能够实现相关功能,足以说明外界眼中横亘在ARM与PC游戏之间的技术壁垒,其实远没有想象中那么高。
想在Switch上运行Steam,需要搭配一系列适配工具,而Switch deck这个开发项目让整个流程简化了不少。
Proton 11测试版不仅加入了对ARM64架构的支持,还内置了FEX转换工具——这款工具可以将x86指令翻译为ARM芯片能够识别的指令。对于搭载最近ARM架构、运行Linux系统的设备而言,有这些基本就足够了。但Switch情况特殊,它所用的L4T内核版本过于老旧,完全无法兼容FEX,好在开发者找到了替代方案。
这套方案舍弃了FEX,转而使用社区开发的老牌指令转换工具Box64,同时借助Switch deck项目自动处理各类繁琐的适配工作。由于新版Steam客户端会在这台设备上触发非法指令报错,会自动将Steam降级至四月中旬之前的旧版本。另外,Tegra X1芯片最高仅支持Vulkan 1.2标准,因此开发者还把DXVK-Sarek与VKD3D组件一并整合进Proton环境中。
一番操作下来,Steam客户端可以正常使用,也能启动部分PC游戏,但整体体验十分粗糙。初代Switch仅有的4GB LPDDR4内存本就捉襟见肘,玩家还得针对不同游戏挑选对应的Proton版本,运行32位游戏更是要额外打上专属补丁。所有人都清楚,这套方案远达不到即插即用的水准,普通用户也不该抱有这样的期待。
即便存在种种问题,最终结果依然值得关注:一款2017年的ARM架构芯片,成功跑起了x86架构的PC游戏。Switch上遇到的各类麻烦,根源大多是老旧内核、有限内存,以及Tegra芯片对Vulkan接口的支持不完善,并非x86指令转ARM指令本身存在难以攻克的技术难题。
指令转换层早已不是技术难点,硬件与配套生态才是真正的考验
这套方案能够落地,核心原因在于指令转换对硬件性能的消耗极低。不管是Wine还是Box86和Box64,它们和开销巨大的QEMU这类模拟器有着本质区别:不会完整模拟一整套x86计算机环境。两款工具只会转换游戏本身的代码,再将游戏对系统库的调用请求,直接转发至设备原生的ARM版系统库,比如libc、SDL、OpenGL等组件。也就是说,ARM芯片无需完整模拟一台x86电脑。我们常在安卓手机上用的小鸡GameHub,其实就是把Wine+Box64打包成手机App,再把手柄映射做好。
各类兼容层技术是实现跨架构运行的关键。SteamDeck依靠Proton,把Windows应用程序接口和图形调用指令转换成Linux系统可识别的格式;而在ARM设备上,FEX、Box64这类工具会再多完成一步工作——将x86 CPU指令转译为ARM指令。额外的转换环节确实会损耗部分性能,但也正因如此,树莓派这类小型ARM设备才能顺利运行x86程序。这类工具采用动态重编译技术,执行效率比逐条解析指令高出五到十倍,既保证了运行速度,又规避了完整模拟器资源占用过高的问题。
单论CPU运算能力,早年Box64的表现甚至优于Valve多年投入研发的FEX。几年前,开发者用7-Zip等程序做基准测试,Box64的跑分大约是FEX的两到三倍。当然经过Valve多年优化,如今两者之间的性能差距已经大幅缩小。
任天堂Switch本就不是为运行PC游戏设计的,而它实现这一功能,也并不需要硬件本身读懂任何一条x86指令。CPU代码交由轻量化的转换层处理,图形渲染则依靠DXVK、VKD3D以及设备原生图形架构完成。硬件性能老旧、配置偏弱,只会影响游戏能否流畅游玩,并不会决定这项功能能否实现。
这也意味着,跨架构运行早已不是有待突破的新技术。得益于Box64、苹果Rosetta2、微软Prism、Valve FEX等一众社区项目与官方技术的持续迭代,x86程序在ARM设备上运行,早已不再是难以逾越的鸿沟。指令转换技术经过多年打磨已经趋于成熟,当下真正欠缺的,是专门为适配这项技术而设计的硬件产品。
最大的阻碍不在于ARM架构本身,而是安卓生态
从技术层面来说,x86指令向ARM架构转换的方案已经非常成熟。如今不少手机都能做到这一点:搭载近几年骁龙芯片的手机与掌机,借助Winlator、小鸡GameHub等工具,已经可以运行《赛博朋克2077》《巫师3》等多款PC游戏。这些应用的底层逻辑和Wine搭配Box64的方案一致,只是封装成了普通玩家更易上手的形式。哪怕是两年前推出、并非专为游戏打造的骁龙和天玑芯片,也能流畅运行PC游戏,带来不错的游玩体验。
我自己也尝试过不少设备,还遇到了一个有意思的现象。我想在手机上运行《传送门2》,结果高配的OPPO Find N5(搭载骁龙8 Elite)运行失败,反而是配置稍老的三星Galaxy S23(骁龙8 Gen2超频版)顺利启动。问题并非出在芯片性能或是指令转换层,而是GPU驱动未更新。
安卓设备运行PC游戏,高度依赖开源逆向开发的Mesa Turnip驱动,这款驱动专门适配高通Adreno系列GPU。骁龙8 Elite搭载的Adreno 830是JIA旗舰GPU,对应的Turnip驱动适配还不够完善;而骁龙8Gen2这类上市已久的芯片,经过开发者多年优化,驱动生态已经十分成熟,运行程序自然更加稳定。
很多人因此看低ARM游戏掌机,其实是混淆了问题根源。驱动适配乱象和ARM架构本身无关,问题出在使用场景上:用并非为游戏设计的手机,搭配社区维护的第三方驱动,在厂商严格锁死底层权限的芯片上运行PC游戏,全程都要和设备原生生态相互掣肘。
但如果是一款原生定位游戏的掌机,就不会面临这些问题。厂商会针对专属芯片开发、调试专用显卡驱动,并深度整合进系统,全程围绕游戏体验做优化,效果就和传统游戏主机一样。用户也不用再去社区群组里寻找测试版驱动,相关适配工作早已由厂商完成并预装在设备中。
高通也早已朝着这个方向布局。骁龙G3 Gen3就是专门面向游戏掌机推出的芯片,目前已经搭载在AYANEO、壹号本等品牌的产品上。AYANEO就表示,旗下Pocket S2掌机出厂即原生支持Turnip驱动,这也是一个重要转变:硬件厂商开始将PC游戏兼容性,列为产品的核心设计目标之一。
Steam新设备为跨架构方案量身打造,软硬件实现了一体化适配
Valve其实早已完成了整套技术方案的整合。旗下即将推出的SteamFrame虚拟现实头显不同于SteamDeck,搭载的是骁龙8 Gen3芯片,原生运行ARM版SteamOS系统,依靠FEX工具实现x86游戏的转译运行。据Valve测算,转译带来的性能损失仅在10%到20%之间,在ARM开发板Radxa Orion O6上,《毁灭战士2016》可以在1080P分辨率下稳定跑出60帧,《传送门2》帧率轻松突破100帧,《巫师3》也能维持在40帧左右。据说,英伟达新推出的ARM架构RTX Spark(N1X)能在1440P分辨率下流畅运行《赛博朋克2077》,帧率突破100帧——当然,它的GPU是RTX 5070降频版,实在太强了。
SteamFrame头显的芯片、系统、驱动、指令转换工具全部由厂商统一开发、整体交付,软硬件深度协同,逻辑和SteamDeck一脉相承,只是多了一层x86转ARM的指令转换。用户无需降级Steam客户端,也不用手动修补Vulkan接口,整套系统开箱即用,一体化设计保证了运行稳定性。
虽然SteamFrame是VR头显而非掌机,但二者本质逻辑相通,都由显示屏、主处理芯片和GPU组成。SteamOS、Proton、FEX这套组合,运行在骁龙处理器上,和运行在掌机上没有本质区别。SteamFrame的落地,意味着ARM平台层面最核心的技术难题都已攻克,而完成这项工作的,恰恰是定义了现代PC游戏掌机形态的Valve。这也为ARM游戏掌机的发展铺平了道路。
再聊聊未来选购游戏机的思路:x86架构不再是唯一选择
就目前而言,对于普通玩家来说,除了需要玩独占游戏的任天堂Switch 2外,x86设备依旧是运行PC游戏的稳妥之选,这一点必须承认。SteamDeck等搭载AMD和英特尔芯片的同类型掌机,凭借高效的Proton兼容层,起码在CPU层面完全没有指令转换带来的性能损耗。但无论转换工具效率多高,跨架构运行必然会牺牲部分性能与续航,这是无法回避的事实。所以当下选购掌机,大家首选x86设备也合情合理。
但长期来看,阻碍ARM成为主流游戏平台的壁垒正在不断消解。指令转换的性能损耗已经控制在极低水平,而驱动适配的各类问题,大多只出现在手机这类非游戏专用设备上。如果硬件从设计阶段就服务于游戏场景,这些麻烦都会迎刃而解。Valve已经确定要推出ARM架构设备,能够流畅运行大部分Steam游戏,从这款设备过渡到ARM游戏掌机,只差小小的一步。
再过几年,当我准备换掉手里的SteamDeck时,我不会再理所当然地默认新掌机必须搭载x86芯片。新一代设备会充分验证ARM架构作为游戏平台的可行性,而最先让我们认真思考这一可能性的,却是那台老旧的初代任天堂Switch。
热门跟贴