自从有了显卡厂商之后,显卡的测试软件便也应运而生。虽然3D显卡技术的发展路程到了今天也不过十数年的时间,但技术水平的确有了翻天覆地的变化。S3、Trident、Matrox、3DFX、3Dlabs、NVIDIA、ATI、STG等公司都是显卡发展历史的有力见证人之一,但不知道是什么时候?也不知道最先是哪家公司?对驱动的优化产生了兴趣,便有了靠驱动程序来优化应用软件的举措。这虽然提高了显卡的性能,但也使厂商得到了作弊的办法。
随着显卡产品竞争愈演愈烈,尤其是ATI个NVIDIA两雄并起之后,“分分分”也就成了显卡的命根。在不断发展硬件的同时,两个厂商也纷纷对驱动做起了手脚。关于驱动优化的问题也渐渐浮上水面,先是有人在ATI的驱动检查中发现有Quake3字符的存在。再到3D MARK2003面市之后,又出现的NVIDIA和Futuremark的关于驱动之争论。这优化之事也便成为了人们所关注的焦点。
John Carmack
Quake和DOOM之父John Carmack,称得上是一位最伟大的游戏设计大师,作为戏工业最出色的设计师,从技术层面谈到了他对显卡驱动优化的看法。
首先程序的优化是要付出代价的,也就是说他们会作出相应的优化。一些硬件功能,象Cache和分级化Buffer。可能对某种程序有利,但与此同时又可能对其他的程序不利。对于不同的应用,程序员可能经常会对命令Buffer进行调节。
有得必有失是必然的,其主要体现在速度和图象质量上,以及一致性上。在图象质量上,很多玩家都容易理解,比如ATI的催化剂驱动程序面板中,有一个平衡点,就是调节性能与质量的,NVIDIA也是如此。很大程度上来讲,这些都是程序无心的。
但也会有一些有意识的互换,比如上面提到的ATI催化剂的调节,也就是FSAA和AF,Carmack认为这样的设计出发点非常的好。这也使得高端显卡在普通的应用中会更有价值。拥有中低端显卡的用户也可以在不同的应用中选择性的使用。这无疑是给消费者提供了一项更实用的功能。尽管NVIDIA和ATI在这方面的技术并不相同。但Carmack指出驱动默认设置应该是一个完全一致性的状态。在这个领域之下,可以在驱动中根据不同的程序选择相应的优化,来维持用户对每个程序的可选性。是非常必要的。
但性能和一致性的互换,就都不是无心的了。速度的减慢并不是驱动的错,因为在退出特定优化的路径之后,驱动并不会检查一定的结合。当然,这里也有不保持一致性的驱动优化方法。Carmack还简单的举了个例子,很可能一个驱动选择忽略存储颜色值,这就可以节省几个时钟,但是这对于glGetFloatv{GL_CURRENT_COLOR, buffer}是不可能的。
Carmack强调驱动优化的一致性交易是永远不能接受的,至于是不是出于好的目的并不重要。原因是在测试程序中的结果并不能保证在未来同类游戏中的执行效果。
而且无论进行什么样的互换都要需要增加非常多的代码。
那什么样的优化才是好的优化的呢?Carmack认为,如果程序员们有一个非常好的技巧性优化办法,与其运用到针对性的应用中,不如把他单独做出来,在程序符合的情况下,成为一个面向最终用户的可选项优化。一种面向一个应用域的优化,或着是针对一个引擎的优化。这才是一种合理的方式。这就是他强调重要的是驱动优化要有一致性。
其实很多厂商已经这样做了。这非常的好,比如我们熟悉的HALF LIFE2的可以针对OpenGL和DX3D的游戏应用运行设计。为许多拥有不同配置的用户带来了实质性的帮助。但这只是一个游戏厂商,而显卡厂商则应该用他们的技术对应用中优化所能包含的域来进行设计。但是这样的优化可能会把许多技术不好的用户拒之门外,许多用户根本弄不明白这些设置,就更不会用这些设置。
笔者认为这是一个非常好的办法,希望能成为今后显卡优化的发展方向,一致性的优化可能从设计上和技术上来讲会很难。而且好的技术层面的点子也不会轻易闪现。但仍然可以考虑到,在重此不重彼的应用环境中为什么不能用互换性的优化呢?
所以相反的,对针对性的应用程序进行优化,就是完全不可取的了,也可以称之作弊。只是对类似评测的软件进行优化,完全是欺骗消费者的做法,很简单,当用户满意优化的成绩购买回来显卡的时候,在同样的机制下却又无法得到其效果,这能不说是一种欺骗吗?
曾经有部分人认为可以对现有流行的游戏进行优化,对优化的游戏可以尽量的达到更多,NVIDIA已经开始这样做了,虽然这不符合Carmack的思想,但这样的行为必然会对用户带来好处,并且在技术层面可能会相对简单一点,但这样的做法需要多大的工作量?面对这么多的个体软件又是否都能保证其优化的质量呢?我们认为这仍然是一个值得讨论的问题。(第三媒体 2004-04-07)