现在Vista下,DWM管理着最终的输出效果,驱动程序已经无法直接对最终输出的桌面进行操作,而代之的是一个输出队列。每一个程序都具有自己的输出缓冲区,如下图所示,实际上Aero就是将所有窗口的提交的最终画面通过3D变换再输出:
Aero效果;Alt-Tab的任务切换效果类似
新的DWM模型对OpenGL,或者说,对我们的SPECviewperf有什么影响呢?
它影响了OpenGL垂直同步的工作形式。在以往,垂直同步影响着显卡生成内容的速率,这影响了OpenGL应用的性能,而现在在Vista下,所有的应用程序之间都是“垂直同步”的,因为如果不同步的话,不同帧率的应用程序会非常容易出现各种画面异常。在画面生成速率快过显示刷新率的情况下,有两种方法可以得到正常的画面效果:
第一种方法是限制窗口内容刷新速率为显示刷新率,实际上就是强制开启垂直同步。第二种方法是只显示在同步信号到达的那一帧,并丢弃所有其他的帧,这种方法的好处是不会限制住应用程序生成图像的速度,因为并不是所有生成的图像都会显示出来。Windows Vista DWM实现了后面的那种方法。
Vista下的SPECviewperf:开启DWM和Aero,垂直同步选项不再重要
基于架构上的改变,垂直同步的意义在XP上和Vista上就显得很不同,在XP上,打开垂直同步将会限制内容生成的速率,在Vista上,打开垂直同步不过是限制了画面刷新的速率,显卡尽可能快地生成了图像,只不过只有对应的帧才会显示出来。也就是说,在Vista下测试3D性能的时候,你不需要像XP那样特地关闭垂直同步。只有在需要进行XP和Vista对比的时候,你才需要关闭DWM(从而也关闭了Aero效果)。这个情况并不符合实际用户的情况:大部分用户都使用DWM和Aero。对于Vista来说,关闭DWM的测试是没有意义的,也不符合SPECviewperf的目标:得出真实环境下的图形性能。
(完)