笔者使用9070XT,一直在《怪物猎人荒野》尤其是森林地图里遇到卡顿问题,近一年来多版驱动和游戏更新都没能解决。
近期英文社区对此的一些讨论基本找出了原因,并给出了切实有效的解决方案,但在中文社区还没见到相关讨论,特写此文抛砖引玉。
注意,本文内容基于公开的社区讨论、用户可复现的现象及开源软件(VKD3D-Proton)的发布日志进行技术分析和推测,旨在为受困玩家提供解决思路。所有结论均非AMD官方声明。“硬件缺陷”、“bugged hardware”等用语均为引用或技术讨论语境下的描述。游戏体验可能因具体硬件、驱动版本和设置而异。
英文社区的讨论推测,这可能是RDNA4在处理大地址空间的“稀疏”内存优化逻辑上存在硬件层面的缺陷导致的,所以无法通过简单的软件更新解决。当Resizable BAR(SAM)功能开启时,可能恰好会触发这一瑕疵的运行路径,GPU尝试一次性映射整个显存。而《怪物猎人荒野》极度依赖流式处理资源,尤其是森林地图,构成了触发此问题的条件,从而导致内部瓶颈和性能卡顿。
来自Valve的VKD3D-Proton开发者也注意到了这个问题,并且在VKD3D-Proton的3.0版本中对此进行了一些workaround(也就是治标不治本的方案)。开发者的原话是:
Add misc AMD workarounds for Monster Hunter Wilds caused by bugged hardware around sparse SMEM.
A proper hardware workaround in RADV is still pending.
这里也暗示了这个问题可能是RDNA4的硬件缺陷(bugged hardware),哪怕是驱动层面(RADV是A卡的Linux开源驱动)也只能workaround而非fix。
以下方案均为基于现有问题的变通或缓解措施,并非官方修复,执行前请知悉其潜在影响(如可能影响其他游戏性能)。
关闭Resizable BAR(SAM)功能可以规避此问题。因为关闭后,系统会退回到传统的、以256MB数据块为单位进行传输的模式,从而绕过了有缺陷的硬件优化路径。
但要注意Resizable BAR(SAM)是全局的,可能会降低某些游戏的性能,例如《怪物猎人荒野》整体平均帧可能降低个5fps左右,但是没有卡顿。
如果不想全局关闭Resizable BAR(SAM),也可以将游戏中的网格品质降低为“中”,这可以大大缓解卡顿,效果不如方法一,依然可能存在部分掉帧,但是体验已经好得多了。这个方法的原理可能是将网格品质设置为“中”后降低了流式处理资源的强度。由此可见,资源解压mod很可能也有效果,读者可以自行测试。
这个方法的代价就是特效没法拉满,但是其实网格品质对视觉的影响不是特别大,笔者看不出差别。
有趣的是,作为对比,NVIDIA对Resizable BAR技术目前仍采取白名单机制,而《怪物猎人荒野》恰好不在其白名单内。因此,N卡用户在不手动强开的情况下,默认并不会在此游戏中启用该技术。