草拟这个问题的背景:在工作中我们使用Dell Precision工作站。我现在有一台NVidia Quadro FX1700。 我的团队正在为实时数据采集系统开发图形组件。 因此,我们一直在关注图形操作是否不会占用过多的CPU时间。为了快速检查,我们运行了几个测试程序,它们以指定的速率(例如10 fps)绘制场景,我们使用普通的旧任务管理器来查看CPU使用率的位置。 其中一个程序很重视GDI DrawRectangle调用(已填充)。这个程序总是占用大约40%的CPU用户时间,但是大约一年左右(这里只是猜测)它只使用大约2-3%的内核时间。很明显,这里正在进行一些硬件加速。事实上,如果我关闭HW-accell,我们将回到最初的40%用户时间。 所有这些当然都是好消息,因为我们已经在考虑转向OpenGL了。年复一年,GDI从未获得硬件加速的好处。直到前一段时间。
有没有人对此有更多了解?微软这样做了吗?或者是gfx-card供应商特定的?
修改
Thnx已经答案了(Ferrucio,Torlack和Rob Walker),但我的问题还没有得到解答。我们在这里谈论一个填充的矩形。可能是最优秀的功能:只需将几个坐标发送到GPU并让它翻录。但它总是在CPU端实现。 到目前为止,答案让我相信NVidia终于看到了光明(超过10年后)并加速了GDI。没有关于这个的公告?根本没有信息可以找到。 我的内部客户问我关于图形加速的问题,我只能说“好吧,我们很幸运”。
EDIT2
根据不同的答案,它似乎与驾驶员相关。因此,NVidia多年来为其工作站卡制作了糟糕的GDI驱动程序。在这家公司中,GDI没有被加速,并且所有的测试证实了这一点,这是一个公认的事实。
答案 0 :(得分:7)
GDI通过调用图形设备驱动程序中的各种函数来工作。每个驱动程序必须实现一组核心功能。其他功能可以由驱动程序实现。如果不是,GDI将自己执行这些功能。
如果某个特定功能没有在硬件中实现,那么驱动程序没有必要执行该功能的软件实现,因为GDI可能会做得更好。 GDI针对性能进行了极好的优化。
随着更多功能在硬件中实现,这些功能不仅表现得更好,而且GDI的工作也更少,从而减少了花在图形上的CPU时间。
也可能是图形卡供应商为了快速将卡推向市场而可能没有实现卡可以执行的所有可能的硬件功能。然后,该驱动程序的更高版本可以实现该功能,从而提高性能。
答案 1 :(得分:5)
GDI加速了很长一段时间。我记得它在某种程度上取决于你的硬件和驱动程序。为什么你最近才看到这种性能上的跳跃似乎很奇怪。
但是,不要太高兴 - Vista中不再支持GDI硬件加速。新的桌面合成引擎不支持它。但是,在Vista中你可以获得快速移动的窗口,因为内容并不总是必须由应用程序重新绘制(我认为没有撕裂?)。
答案 2 :(得分:2)
在某种程度上,GDI一直在加速。即使在旧的Win31时代,我还记得购买卡(Number9)的主要卖点是GDI的硬件加速。
答案 3 :(得分:1)
Vista有一个新的display driver architecture,这将为性能的显着提升提供机会。你在比较硬件/操作系统组合吗?
答案 4 :(得分:1)
许多2D内容已经加速了一段时间,每个新的主要版本的Windows都改变了显示驱动程序的工作方式。我相信它是用XP改进了它的窗口管理器层。很难比较,因为XP比任何早期版本更类似于Windows 2000 / NT。
有关维基百科的更多信息,Development of Windows XP。
当然,Windows 2000是第一个包含DirectX的基于NT内核的窗口,并且也有一些图形改进。 Windows 2000 (wikipedia)我不相信版本之间的显示驱动程序模型/ 2D子系统发生了重大变化。所以,如果你注意到这样的变化,那可能是由于nVidia所做的事情。