为什么GPU需要游戏专用驱动程序?


30

PC GPU驱动程序更新经常引用最近发布的特定游戏的性能改进。为什么需要特定于游戏的更新?游戏特定的更改如何与游戏代码交互?

Answers:


31

作为具有几年驱动程序开发经验的人,我认为这是两个独立的问题。

图形驱动程序是非常复杂的野兽。以最佳方式实施所有工作将是一件根本不可能的任务。仅要使驱动程序真正遵循规范,这是一个很大的障碍-而且规范变得越来越复杂。因此,您可以根据规范和少数测试应用程序开发驱动程序(因为在许多情况下,还没有真正的软件)。

随之而来的是一个真实的游戏(或基准测试,或驱动程序的其他一些用例,例如视频解码),它暴露了驱动程序的瓶颈。随便看看,如何解决问题并加快用例的速度。您可以轻松地报告说XYZ游戏快了27.3%,但实际上,每个具有用例(例如,动态纹理更新)的应用程序都变得更快。

然后是丑陋的,实际的针对每个应用程序的优化,其中驱动程序检测正在运行的应用程序(或正在编译的着色器)并执行非泛型的操作。有很多公开的案例,例如,重命名3dmark可执行文件会突然改变结果。

我觉得这种优化浪费了每个人的时间-在基准测试的情况下,您对客户撒谎,并且您可能会更改着色器的行为方式,而不是开发人员的实际需求。我记得有一种情况,着色器从纹理查找更改为着色器内计算(仅适用于所述制造商的硬件),该计算很接近,但结果并不完全相同,并且开发人员断言这不是合法的优化。


2
+1,这应该是公认的答案;它从内部角度很好地描述了确切的情况。我想我知道您提到的情况-也许是镜面反射计算?;)
Maximus Minimus 2012年

14

在理想的世界中,他们不会。

但是,这并不是一个理想的世界,因此特定于游戏的性能可能来自以下一项或多项(并非详尽列表):

  • 游戏正在将状态X,Y和Z设置为操作A,B和C的组合。驱动程序可以以此为基础进行假设,并将其推入更优化的代码路径。

  • 游戏永远不会执行操作I,J或K。同样,驱动程序可能会基于能够假定从未执行过这些操作而选择更理想的代码路径。

  • 游戏以稍微(或不太轻微)次佳的方式执行某些操作。驾驶员知道了这一点,拦截了这些呼叫,并将其转换为等效的(希望如此),使其可以更好地工作。

  • 可以进行游戏特定的权衡;例如,它的如果确定渲染状态的组合去慢,因为它更重要的是,组合去快,故因此我们优化。

重要的是在这里要注意,实际上这些都不是“必需的”。只要驱动程序和游戏的API使用都一致,一切就可以正常进行。但是有时可以在特殊情况下进行权衡以获取最佳性能。我不会评论这是否是一件好事。


1
有人告诉我,GPU驱动程序编写者有时还会偷看流行游戏的着色器,并编写针对其硬件进行优化的自己的版本,驱动程序将以无提示方式替代原始着色器。
内森·里德

9
@NathanReed曾几何时,它远不止于此。当各向异性过滤和纹理压缩的价格昂贵时,GPU公司会全力以赴降低实时运行的最终产品的视觉质量,以使其更快,而不会用便宜的显示器提醒任何人游戏看起来差很多。他们甚至会拦截对PrintScreen的调用,并为图片进行高质量渲染。
Norguard 2012年

8
GPU制造商还喜欢以流行的基准作弊。我记得PC杂志上的比较基准,他们在同一系统上以相同的设置运行了相同的基准两次。但是有一次,他们重命名了基准的可执行文件,以使驱动程序无法识别它。奇怪的是,对于ATI和nvidia卡,重命名的可执行文件的得分明显更差。
菲利普

8

游戏开发人员推动了GPU的发展。我们可以比喻一个游戏和一个游戏引擎。游戏的要求越高级,支持它的游戏引擎就越需要高级。显卡也是如此。

电脑游戏和GPU制造商都是优秀的研究人员。共同努力改进GPU,从而改善游戏,这是他们的最大利益。这是经典的软件专家与硬件专家的关系。在设计软件和硬件之间的接口时,双方都可以添加一些内容。该接口是驱动程序。

这些更新可能包括软件专家发现的错误修复,或者硬件工程师为支持软件专家的要求而进行的改进。您会发现这种关系。

在驱动程序更新发行说明中包括特定游戏的背后原因可能是PR。它不仅表明纸牌制造商X将与游戏Y真正兼容,而且表明游戏Y将比以前更好。


6

可能的情况是,游戏开发团队遇到了GPU驱动程序错误,如果未修复该驱动程序错误,将导致游戏无法正常运行

有时这也是一种营销手段。例如,ATI / AMD最近将Dirt 3副本与他们的较新GPU捆绑在一起,并提出了在这款游戏中使用3台显示器与Eyefinity玩游戏的想法。

所以那里有一些共生关系。

GPU供应商:嘿!这项新功能!没有人使用它!

游戏开发商:我们可以使用它!将我们的游戏与使用此功能的GPU捆绑在一起吗?

GPU供应商:地狱!


1

事实是,GPU 不需要特定于游戏的驱动程序。

游戏特定的驱动程序是GPU制造商进行营销活动的一部分,目的是争取超越其他GPU制造商。如果他们能够通过针对特定游戏定制驱动程序来在流行游戏中显示出更好的性能,那么(理论上)他们将吸引更多的游戏玩家。

这几乎就是它的全部。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.