...
...
背景
自从原神 4.3版本在2023年12月20日左右升级之后,对于amd gpu并没有专门的支持,amd gpu 运行时会崩溃在libgallium库(mesa提出的全新的3D引擎框架)中。
...
解决过程
查看waydroid上的issue,可以看到有很多大神尝试了不同的原神版本,都会崩溃。https://github.com/waydroid/waydroid/issues/1206
...
我们将这个问题反馈到mesa官方后(https://gitlab.freedesktop.org/mesa/mesa/-/issues/11148#note_2410145 ),得到了一个修复(原神在amdgpu崩溃修复)。但是修复崩溃后,还存在丢失纹理的问题(就是游戏中变成一些方方正正的盒子)。)。但是修复崩溃后,还存在丢失纹理的问题(就是游戏中变成一些方方正正的盒子)。如下图所示。
...
解决方法
针对这个问题YogSottot给了我们一个解决方案,就是启用mesa的xmlconfig,他的提议在此https://github.com/waydroid/waydroid/issues/1206#issuecomment-2132083401
这个功能的背景是一部分android游戏并不感知开源gpu驱动,当他们看到一款未知驱动时,通常会用最低性能去运行。所以,针对指定的游戏程序名,使用xmlconfig记录的特性值覆盖vendor或者renderer设置返回给游戏程序以获取更高的fps和更好的渲染。修复纹理丢失的问题是使用另外一款gpu的名称代替amd gpu来返回给原神。https://gitlab.freedesktop.org/mesa/mesa/-/commit/b9129496a295f3aef7d96540556eced25961f66a
...
代码块 |
---|
#将vendor镜像挂载到/mnt目录。 sudo mount /usr/share/waydroid-extra/images/vendor.img /mnt #打开xml配置文件 sudo vim /mnt/etc/drirc.d/00-mesa-defaults.conf 910 <application name="Genshin Impact" executable="com.miHoYo.Yuanshen"> 911 <option name="ignore_discard_framebuffer" value="true" /> 912 <option name="force_gl_renderer" value="Adreno (TM) 630"/> 913 <option name="force_gl_vendor" value="Qualcomm"/> 914 </application> esc #按下esc vim 退出到命令模式 :wq #输入:wq保存退出。 sudo umount /mnt #卸载镜像 |
需要注意的是这个兼容方案,有时候会造成原神整个画面显示红色问题。此时需要先注释或删除以上910~914行的内容。先让原神正常启动,进入画面(带纹理丢失的画面)。然后退出fde,再按上述步骤,添加好910~914的内容。再次进入fde,才能正常进入画面。
有兴趣的可以查看 https://github.com/openfde/openfde/issues/15#issuecomment-2116555506
...