《賽博朋克2077》不支持AMD銳龍多線程:原因找到了
《賽博朋克2077》徹底火了,AMD似乎成了最大輸家——顯卡方面,NVIDIA是獨家合作夥伴,光追、DLSS技術都得到支持,AMD的光追卻不受待見;處理器方面,銳龍疑似遭到“負優化”,SMT多線程技術根本沒有用上,Intel超線程卻沒問題。
相對來說,AMD銳龍受到的衝擊更大,核心數越少越明顯。16核心的銳龍9 5950X、12核心的銳龍9 5900X沒有太明顯的影響,6核心的銳龍5 5600X就慘了,綜合性能原本堪比i9-9900K,但在《賽博朋克2077》裡只相當於i5-10400F,因為後者可以跑滿12個線程。
更詭異的是,有網友發現,手動修改《賽博朋克2077》的exe主程序文件,簡單替換幾個代碼,銳龍的利用率就能明顯提高,性能也可以提升最多30%左右。
以上是修改代碼前後的銳龍9 5950X佔用率表現,16個邏輯核心修改前幾乎完全閒置,修改後利用率超過了60%,當然仍未完全發揮。
以上是修改代碼後的銳龍5 1600佔用率表現,邏輯核心和物理核心表現幾乎完全一致。
到底是怎麼回事呢?CD Projekt RED一直沒有官方回應,民間大神們又出手了。
Reddit的網友CookiePLMonster在深入研究後提出,《賽博朋克2077》使用了非正式的AMD GPUOpen偽代碼來優化處理器調度器,但這些代碼本來的優化對像是AMD推土機架構的FX系列處理器,在銳龍等其他AMD架構上就會有反效果。
《賽博朋克2077》遊戲只有檢測到“AuthenticAMD”處理器在字符串、“family=0x15”處理器標識的時候,也就是發現處理器是推土機架構,才會啟用邏輯核心,而這也是Windows系統針對AMD推土機架構的優化之一。
如果是其他AMD處理器,包括最新的銳龍,《賽博朋克2077》就只會利用物理核心,而無視邏輯核心,SMT多線程技術自然就沒有用武之地。
我們知道,AMD推土機架構採用了每兩個核心共享浮點單元的模塊式設計,非常依賴系統、軟件的特殊優化,銳龍架構則是獨立核心加SMT多線程,自然不能用同樣的方式去支持和優化。
TechPowerUp的開發大神W1zzard(GPU-Z就出自他之手)在進行研究後,證實了上述發現,《賽博朋克2077》確實在使用2017年的AMD GPUOpen優化代碼,導致多線程技術只針對推土機架構有效,而對銳龍架構無效。
目前尚不清楚這是“波蘭蠢驢”故意為之,還是一個意外的Bug,但無論如何都有點說不過去,只能坐等官方修復了。