※ 引述《tsubasawolfy (悠久の翼)》之銘言:
: https://www.reddit.com/r/pcmasterrace/comments/16eq1rp/in_case_you_wanted_to_
: know_a_few_reasons_on_why/
: https://i.imgur.com/Bu0IOX7.png
: 將windows上的DX12轉譯成Linux可以用的Vulkan開發者發現星空最適化差的原因
: (Steam deck也是用Vulkan?)
: 1. 遊戲分配記憶體沒有跟CPU的記憶體分配大小對齊(通常4kB),如果顯卡的驅動設計
: 不能處理這種錯位,就會造成遊戲崩潰。
這是bug,但其實蠻常見的,NV,AMD的驅動都會自動處理。
: 2. 濫用DX12的ExecuteIndirect功能。
: 3. 遊戲使用ExecuteIndirect是多次重覆下指令,而不是一批批給。
因為是錯誤的解釋,就刪掉。
原始的changelog.md
https://github.com/HansKristian-Work/vkd3d-proton/commit/88e4f300cc0b5b6f0880c1233d562cf506b546fb
https://reurl.cc/a4v7aX
ExecuteIndirect() 在星空裡是gpu driven rendering用的。基本上是由compute shader來計算rendering command,算是很先進的技術。
vtk3d之前用很慢的方法模擬,這個patch有很好的優化星空的用法。
我的猜測是,星空用了"non-hotpath"的rendering command。換句話說,星空用的指令不是驅動常見的最佳化路徑。所以只能等驅動優化,星空大概是不會改了。
multi-dispatch COMPUTE + root parameter changes.,是不常見的用法。驅動沒有優化也是很自然的。
但星空遊戲影響力夠大,驅動應該會很快跟上。