GDI已加速。有人知道这是何时发生的吗?

7
为了阐明这个问题的背景:在工作中,我们使用Dell Precision工作站。我的当前工作站配备了NVidia Quadro FX1700显卡。 我的团队正在为实时数据采集系统开发图形组件。 因此,我们始终关注图形操作是否使用了过多的CPU时间。对于快速检查,我们有几个测试程序,以指定的速率(例如10 fps)绘制场景,并使用普通的任务管理器查看CPU使用情况。 其中一个程序频繁使用GDI DrawRectangle调用(填充),该程序总是使用约40%的CPU用户时间,但自大约一年前以来(仅猜测),它只使用约2-3%的内核时间。因此,显然在此处进行了某些硬件加速。确实,如果我关闭HW-accell,我们就会回到最初的40%用户时间。 当然,所有这些都是好消息,因为我们已经考虑过转向OpenGL。多年来,GDI从未获得过硬件加速的好处。直到不久前。
有人知道更多信息吗?是Microsoft做的吗?还是与图形卡供应商有关?
编辑
谢谢Ferrucio、Torlack和Rob Walker的答案,但我的问题还没有得到解答。我们正在讨论填充的矩形。可能是最简单的优化函数:只需将几个坐标发送到GPU并让它运行即可。然而,它总是在CPU端实现的。 到目前为止,答案让我相信NVidia终于看到了光明(超过10年后)并加速了GDI。没有关于此的公告吗?根本找不到有关此信息的任何信息。 我的内部客户问我有关图形加速的加速情况,我所能说的就是“好吧,我们很幸运”。
编辑2
根据不同的答案,似乎与驱动程序有关。因此,NVidia多年来一直为其工作站显卡制造了糟糕的GDI驱动程序。这确实是公司内部认可的事实,即GDI没有加速,所有测试都证实了这一点。

7
我不同意关闭。GDI被广泛使用,因此其性能是相关的,即使答案与非常特定的问题有关。 - reinierpost
4
虽然这个问题现在已经过去2.5年了,但我仍然要指出我不同意关闭。对于许多编写图形代码的人来说,这是一个可能有用的问题。 - nitro2k01
1
@reinierpost:您现在有足够的声望来投票重新打开这个问题——请注意,关闭这个问题的是作者本人,而不是人群或者像一开始看到的那样的管理员。我认为回过头来看(2008年10月仍然是SO的早期阶段……),QBziZ应该提交并接受Edit2作为他自己的总结答案,而不是关闭问题,以便最终允许更深入的答案。这就是为什么我现在投票重新打开它的原因;) - Steffen Opel
5个回答

7

GDI通过调用图形设备驱动程序中的各种函数来工作。每个驱动程序必须实现一组核心函数。其他函数可以由驱动程序实现。如果它们没有被实现,GDI将自行执行这些函数。

如果某个特定函数在硬件中未被实现,则驱动程序对该函数进行软件实现没有意义,因为GDI可能会做得更好。 GDI经过极度优化,以提高性能。

随着越来越多的功能在硬件上实现,不仅这些功能执行得更好,而且GDI需要执行的任务也越来越少,从而减少了在图形处理上所花费的CPU时间。

也可能出现这样的情况:为了迅速推出一款显卡产品,图形卡供应商可能没有实现该卡可以执行的所有可能功能。之后版本的驱动程序可能会实现该功能,从而提高性能。


1
事实是,我已经在不同的硬件平台上使用GDI工作了10多年,据我所知它从未被加速过。我想知道这种加速现在是否系统化,还是只针对特定供应商。 - QBziZ

5

GDI曾经加速了相当长一段时间。据我所记,它在某种程度上取决于您的硬件和驱动程序。为什么最近才看到性能大幅提升似乎有些奇怪。

然而,不要太高兴 - Vista不再支持GDI硬件加速。新的桌面合成引擎不支持它。但是,在Vista中,您可以快速移动窗口,因为应用程序不必始终重新绘制内容(我认为没有撕裂现象?)。


谢谢你的回答。关于Vista的好建议。我会尽快用我的小测试应用程序来检查这个问题。 - QBziZ

2
在某种程度上,GDI一直在加速。即使在旧的Win31时代,我记得有些显卡(Number9)的主要卖点是对GDI的硬件加速。

1
Vista拥有新的显示驱动程序架构,这将为性能的显著提升提供机会。您是否正在比较类似的硬件/操作系统组合?

我所测试的操作系统是XP服务包2。 - QBziZ

1
很多2D的东西在一段时间内都得到了加速,每个新的主要版本的Windows都改变了显示驱动程序的工作方式。我相信是在XP时期,Windows重新设计了它的窗口管理器层。很难比较,因为XP更类似于Windows 2000/NT而不是之前的任何版本。
关于这方面的更多信息,请参考维基百科上的Windows XP开发
Windows 2000无疑是第一个基于NT内核的Windows系统,其中包括DirectX,并且还有一些图形上的改进。请参考Windows 2000 (维基百科)
我不认为在发布之间有过重大的显示驱动程序模型/2D子系统的变化。所以如果你注意到了这样的变化,很可能是由于nVidia做出的某些改变。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接