为了勾勒出这个问题的背景:在工作中我们使用戴尔精密工作站。我现在的一个有一个NVidia Quadro FX1700。我的团队正在为实时数据采集系统开发图形组件。因此,我们总是在寻找图形操作是否消耗了太多的CPU时间。为了进行快速检查,我们有几个测试程序运行,它们以指定的速度绘制场景(例如10 fps ),我们使用普通的旧任务管理器来查看CPU使用的位置。其中一个程序在GDI DrawRectangle调用(已被填充)上非常繁重。这个程序过去总是消耗大约40%的CPU用户时间,但由于大约一年左右(只是猜测这里),它只使用大约2-3 %的内核时间。很明显,这里正在进行一些硬件加速。事实上,如果我关闭HW,我们将回到原来的40%的用户时间。所有这些当然都是好消息,因为我们已经在考虑去OpenGL了。年复一年,GDI从来没有得到硬件加速的好处。直到一段时间以前。
还有人知道这件事吗?是微软做的吗?或者是特定于gfx卡的供应商?
编辑
答案已经被解决了(费鲁西奥,托拉克和罗伯沃克),但是我的问题还没有得到回答。我们在这里讨论的是一个填充的长方形。可能是要优化的最简单的函数:只需向GPU发送几个坐标就可以了。然而,它总是在CPU端实现。到目前为止,这些答案使我相信,NVidia终于看到了光明(在10多年后)并加速了GDI。而没有宣布这件事?这上面根本找不到任何信息。我的内部客户问我关于图形加速的问题,我所能说的就是“嗯,我们很幸运”。
Edit2
根据不同的答案,它看起来确实是与司机相关的。因此,NVidia多年来一直为其工作站卡制造糟糕的GDI驱动程序。GDI没有加速,所有的测试都证实了这一点,这是公司内部公认的事实。
发布于 2008-09-26 20:42:20
GDI通过调用图形设备驱动程序中的各种函数来工作。每个驱动程序都必须实现一组核心功能。驱动程序可以执行其他功能。如果它们不是,GDI将自己执行这些函数。
如果某个特定函数没有在硬件中实现,那么驱动程序对该函数进行软件实现是没有意义的,因为GDI可能会做得更好。GDI对性能进行了非常好的优化。
由于在硬件中实现了更多的功能,这些功能不仅执行得更好,而且GDI的工作量也更少,从而减少了用于图形的CPU时间。
还可能是,图形卡供应商为了迅速将一张卡推向市场,可能还没有实现该卡所能执行的所有可能的硬件功能。该驱动程序的以后版本可能会实现该功能,从而提高性能。
发布于 2008-10-06 13:10:40
GDI被加速了一段时间。据我所知,它确实在一定程度上取决于您的硬件和驱动程序。为什么你在最近才看到了如此大的增长,这似乎很奇怪。
然而,不要太高兴- GDI硬件加速不再支持在Vista。新的桌面组合引擎不支持它。然而,在Vista中,您确实获得了快速移动的窗口,因为内容并不总是必须由应用程序重新绘制(我认为没有撕裂?)
发布于 2008-09-26 20:32:00
在某种程度上,GDI一直在加速。甚至在过去的Win31时代,我还记得购买卡片(Number9),它的主要卖点是硬件加速GDI。
https://stackoverflow.com/questions/141758
复制相似问题