VKD3D开发者HansKristian-Work近日更新了GitHub页面,对导致《星空》游戏性能出现问题的原因进行了讨论,并将其归结于“编程缺陷”。
内存分配不佳:
《星空》没有根据CPU页面大小正确分配其内存需求。通常计算机系统为了优化访问,通常会进行分页,而游戏需要根据分页大小优化代码,对于提高性能是非常关键的一环。《星空》游戏没有正确分配内存,在GPU驱动无法缓解的情况下,就会导致游戏崩溃。
ExecuteIndirect引发的GPU Bubble:
这一项可能是《星空》所有问题的祸根。DirectX12 API包含一个名为“ExecuteIndirect”的简洁功能,允许GPU执行间接渲染操作,而无需CPU的干预。GPU可以通过使用现有计算来执行必要的工作负载。
《星空》该功能上的错误导致了图形驱动程序的混乱。游戏向图形驱动发送了误导性提示,从而导致GPU反馈了错误内容,整个过程中GPU没有做任何实际的工作,而是获取应该从一开始就提供的指令。这样重复几次就会浪费很多资源,并且问题会不断堆积。