※ 引述《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.,是不常见的用法。驱动没有优化也是很自然的。
但星空游戏影响力够大,驱动应该会很快跟上。