Answers:
作为具有几年驱动程序开发经验的人,我认为这是两个独立的问题。
图形驱动程序是非常复杂的野兽。以最佳方式实施所有工作将是一件根本不可能的任务。仅要使驱动程序真正遵循规范,这是一个很大的障碍-而且规范变得越来越复杂。因此,您可以根据规范和少数测试应用程序开发驱动程序(因为在许多情况下,还没有真正的软件)。
随之而来的是一个真实的游戏(或基准测试,或驱动程序的其他一些用例,例如视频解码),它暴露了驱动程序的瓶颈。随便看看,如何解决问题并加快用例的速度。您可以轻松地报告说XYZ游戏快了27.3%,但实际上,每个具有用例(例如,动态纹理更新)的应用程序都变得更快。
然后是丑陋的,实际的针对每个应用程序的优化,其中驱动程序检测正在运行的应用程序(或正在编译的着色器)并执行非泛型的操作。有很多公开的案例,例如,重命名3dmark可执行文件会突然改变结果。
我觉得这种优化浪费了每个人的时间-在基准测试的情况下,您对客户撒谎,并且您可能会更改着色器的行为方式,而不是开发人员的实际需求。我记得有一种情况,着色器从纹理查找更改为着色器内计算(仅适用于所述制造商的硬件),该计算很接近,但结果并不完全相同,并且开发人员断言这不是合法的优化。
在理想的世界中,他们不会。
但是,这并不是一个理想的世界,因此特定于游戏的性能可能来自以下一项或多项(并非详尽列表):
游戏正在将状态X,Y和Z设置为操作A,B和C的组合。驱动程序可以以此为基础进行假设,并将其推入更优化的代码路径。
游戏永远不会执行操作I,J或K。同样,驱动程序可能会基于能够假定从未执行过这些操作而选择更理想的代码路径。
游戏以稍微(或不太轻微)次佳的方式执行某些操作。驾驶员知道了这一点,拦截了这些呼叫,并将其转换为等效的(希望如此),使其可以更好地工作。
可以进行游戏特定的权衡;例如,它的如果确定该渲染状态的组合去慢,因为它更重要的是,该组合去快,故因此我们优化。
重要的是在这里要注意,实际上这些都不是“必需的”。只要驱动程序和游戏的API使用都一致,一切就可以正常进行。但是有时可以在特殊情况下进行权衡以获取最佳性能。我不会评论这是否是一件好事。
游戏开发人员推动了GPU的发展。我们可以比喻一个游戏和一个游戏引擎。游戏的要求越高级,支持它的游戏引擎就越需要高级。显卡也是如此。
电脑游戏和GPU制造商都是优秀的研究人员。共同努力改进GPU,从而改善游戏,这是他们的最大利益。这是经典的软件专家与硬件专家的关系。在设计软件和硬件之间的接口时,双方都可以添加一些内容。该接口是驱动程序。
这些更新可能包括软件专家发现的错误修复,或者硬件工程师为支持软件专家的要求而进行的改进。您会发现这种关系。
在驱动程序更新发行说明中包括特定游戏的背后原因可能是PR。它不仅表明纸牌制造商X将与游戏Y真正兼容,而且表明游戏Y将比以前更好。
可能的情况是,游戏开发团队遇到了GPU驱动程序错误,如果未修复该驱动程序错误,将导致游戏无法正常运行。
有时这也是一种营销手段。例如,ATI / AMD最近将Dirt 3副本与他们的较新GPU捆绑在一起,并提出了在这款游戏中使用3台显示器与Eyefinity玩游戏的想法。
所以那里有一些共生关系。
GPU供应商:嘿!这项新功能!没有人使用它!
游戏开发商:我们可以使用它!将我们的游戏与使用此功能的GPU捆绑在一起吗?
GPU供应商:地狱!
事实是,GPU 不需要特定于游戏的驱动程序。
游戏特定的驱动程序是GPU制造商进行营销活动的一部分,目的是争取超越其他GPU制造商。如果他们能够通过针对特定游戏定制驱动程序来在流行游戏中显示出更好的性能,那么(理论上)他们将吸引更多的游戏玩家。
这几乎就是它的全部。