chainfire3d这东西装起来其实不麻烦,核心就是root权限到位,模块加载别出岔子。先说结论,装完重启后在设置里激活对应插件,游戏才会真正调用虚拟驱动,不激活装了也白装。
先确认手机已经root,没root的话supersu或者magisk随便哪个都行,但必须保证root权限稳定。然后去下载chainfire3d本体apk,别从乱七八糟的第三方站下,容易夹带改版。装好之后打开,会弹授权请求,这时候给永久root权限,别只给单次,后面模块注入需要持续权限。
装完本体还不够,chainfire3d的工作逻辑是通过加载插件来实现不同的图形处理功能。进主界面能看到plugin manager,点进去会列出可用插件,常见的有nvidia tegra plugin用来强制开tegra设备的优化,还有dedicated gpu driver能让游戏跳过原生驱动。选你需要的插件勾上,这时候注意底部有个install driver的提示,必须点一下让它把驱动模块写进system分区。
写入过程会要求重启,这里别急着按。先退出来检查一遍setting页面,里面有个”force msaa 4x”之类的渲染选项,这些是插件装好之后才能真正生效的开关。记住现在先不动这些开关,等重启完再说。
重启之后再次打开chainfire3d,这时候之前装的插件应该显示active状态。回到setting页面,根据你手机性能调整渲染参数,比如低配机器就别开msaa,中端往上可以试试reduce texture quality配合force gpu rendering。这里为什么要重启后再动开关,是因为驱动模块必须在系统启动时注入到图形栈底层,热加载容易导致opengl es调用混乱,轻则游戏闪退,重则整个launcher卡死。
激活之后打开游戏,第一次启动会比平时慢几秒,正常现象,chainfire3d在拦截图形api调用并转发给虚拟驱动。进游戏后画面如果出现色带或者贴图错位,说明插件跟这游戏的shader不兼容,回去把reduce texture quality关掉,或者换个插件试。
有个坑要注意,部分rom的selinux策略会阻止第三方模块写入system/lib,表现就是插件装完重启后又变成未激活。遇到这种情况得用re文件管理器手动把chainfire3d生成的so文件从data目录复制到system/lib/egl下面,改权限为644,再重启。复制之前记得把system分区重新挂载成读写模式,默认是只读的。
插件里的tegra专用那个只对tegra 2到tegra 4这几代芯片管用,骁龙或者麒麟装了也不报错但没效果。dedicated gpu driver这个插件兼容性最好,基本所有arm设备都能用,就是性能提升没tegra版明显。
测过几局王者荣耀,开启gpu rendering之后帧率从48稳到52左右,提升不算夸张但团战掉帧确实少了。发热没明显增加,功耗这块没细测但感觉跟原生差不多。