GDI加快了。有人知道这是什么时候吗?

时间:2020-03-06 14:48:24  来源:igfitidea点击:

为了勾勒出这个问题的背景:在工作中,我们使用Dell Precision工作站。我目前的产品有NVidia Quadro FX1700。
我的团队正在开发用于实时数据采集系统的图形组件。
因此,我们一直在寻找图形操作是否不会占用过多的CPU时间。为了进行快速检查,我们运行了一些测试程序,它们以指定的速率(例如10 fps)绘制场景,并使用普通的旧任务管理器查看CPU使用率。
这些程序之一是繁重的GDI DrawRectangle调用(已填充)。这个程序过去总是消耗大约40%的CPU用户时间,但是由于大约一年左右(仅在此处猜测),它仅使用大约2-3%的内核时间。因此很明显,这里正在进行一些硬件加速。确实,如果我关闭HW-accell,我们将恢复到最初的40%用户时间。
所有这些当然都是好消息,因为我们已经在考虑使用OpenGL。年复一年,GDI从未从硬件加速中受益。直到前一段时间。

有人对此有更多了解吗?微软这样做了吗?还是gfx卡供应商特定?

编辑

Thnx已经提供了答案(Ferrucio,Torlack和Rob Walker),但是我的问题尚未得到解答。我们在这里谈论一个填充的矩形。可能是最简单的优化功能:只需将几个坐标发送到GPU并使其撕裂即可。然而,它始终是在CPU端实现的。
到目前为止,答案使我相信NVidia终于看到了光(经过10多年)并加速了GDI。并没有关于此的公告?完全没有关于此的信息。
我的内部客户问我有关图形加速的问题,我只能说"很好,我们很幸运"。

编辑2

根据不同的答案,它似乎与驱动程序相关。因此,多年来,NVidia为其工作站卡制作了糟糕的GDI驱动程序。这家公司的确接受了一个事实,那就是GDI并没有得到加速,并且所有测试都证实了这一点。

解决方案

在某种程度上,GDI一直在加速。甚至在以前的Win31时代,我都记得买卡(Number9),它的主要卖点是GDI的硬件加速。

Vista具有新的显示驱动程序体系结构,这将为性能的大幅提高提供机会。我们是否在像硬件/操作系统组合进行比较?

GDI通过调用图形设备驱动程序中的各种功能来工作。每个驱动程序都必须实现一组核心功能。驾驶员可以实现其他功能。如果不是这样,GDI将自行执行这些功能。

如果某个特定功能未在硬件中实现,则驱动程序没有必要对该功能进行软件实现,因为GDI可能会做得更好。 GDI对性能进行了非常好的优化。

随着在硬件中实现更多功能,不仅这些功能的性能大大提高,而且GDI的工作量也减少了,从而减少了在图形上花费的CPU时间。

为了使显卡快速上市,图形卡供应商可能还没有实现该显卡可以执行的所有可能的硬件功能。然后,该驱动程序的更高版本可以实现该功能,从而提高性能。

许多2D东西已经加速了一段时间,每个新的主要Windows版本都改变了显示驱动程序的工作方式。我相信Windows是XP改造了它的窗口管理器层。实际上,很难比较,因为XP比任何早期版本都更类似于Windows 2000 / NT。

有关Wikipedia,Windows XP开发的更多信息。

当然,Windows 2000是第一个包含DirectX的基于NT内核的窗口,并且也进行了一些图形上的改进。 Windows 2000(维基百科)

我认为发布之间的显示驱动程序模型/ 2D子系统没有重大更改。因此,如果我们注意到这样的变化,则可能是由于nVidia所做的事情。

GDI加速了一段时间。据我所知,它确实在某种程度上取决于硬件和驱动程序。为什么仅在最近才看到这种性能上的飞跃,这似乎很奇怪。

但是,不要太高兴,Vista中不再支持GDI硬件加速。新的桌面合成引擎不支持它。但是,在Vista中,窗口的移动速度很快,因为内容不必总是由应用程序重新绘制(我想不会撕裂吗?)。