https://bbs.loongarch.org/d/220-loongsonlatwine/44
latx-1.4.4 +mesa radv 现在无法运行 vulkan程序,上面的帖子里解释了为什么不行
“latx 目前缺少 drm 的 SYNCOBJ 系列 ioctl支持”
那么这个问题可以绕过嘛
tg loongson群经验丰富的的 @spin_lock_irqsave(Libre Liu) 给我指了条路:
AMDVLK 是支持 启用/禁用 SYNCOBJ 的情况下运行的。
于是拉一份amdvlk源码,简单修改
https://github.com/GPUOpen-Drivers/pal/blob/2682a9122ca4b6b0d5875e41ea347b6377922e47/src/core/os/amdgpu/amdgpuDevice.cpp#L107
硬改为 16384后,编译,放到 latx-runtime里
vulkaninfo和 vkcube都可以跑起来了
wine使用 wine-proton-8.0.5-amd64 , dxvk 经过测试使用 1.10.3版本(2.0 2.1 2.2 2.3 目前不行)
顺利跑起来了几个游戏, fps比不使用 amdvlk和 dxvk 提升 2-3倍
另外amdvlk 的vulkan环境ok以后,以前无法运行的一些linux 原生 vulkan游戏也可以了,比如X4
这只是个临时修复方案,带来的问题很多,大部分游戏会因为开启了dxvk+amdvlk而在各种阶段卡死
比如 cod系列,b社系列。
没有SYNCOBJ支持,性能也非常拉跨。最好还是龙芯中科赶紧更新latx,支持SYNCOBJ,或者一步到位直接支持库直通
如果想测试,可以自己修改编译一份 amdvlk,或者使用我编译好的
https://github.com/phorcys/AMDVLK/releases/tag/latx-1.4.4
安装也很简单
.so 放到 /usr/gnemul/lat-x86_64/usr/lib/ 或者/usr/gnemul/lat-x86_64/usr/lib/x86_64-linux-gnu/ 下
.json 放到 /usr/gnemul/lat-x86_64/usr/share/vulkan/icd.d/ /usr/gnemul/lat-x86_64/usr/share/vulkan/implicit_layer.d/ 两个目录各一份