GDI 已经加速。这是啥时候发生的?
Posted
技术标签:
【中文标题】GDI 已经加速。这是啥时候发生的?【英文标题】:GDI has been accelerated. Does anyone know when this happened?GDI 已经加速。有谁知道这是什么时候发生的? 【发布时间】:2010-09-13 14:16:14 【问题描述】:勾勒出这个问题的背景:在工作中,我们使用 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 使用非常广泛,因此它的性能是相关的,即使答案恰好与一个非常具体的问题相关。 尽管这个问题现在已经有 2.5 年的历史了,但我只想补充一点,我也不同意结束。对于许多正在编写图形代码的人来说,这是一个潜在有用的问题。 @reinierpost:您现在有足够的声望投票支持重新提出问题 - 请注意,尽管作者本人关闭了问题,而不是一见钟情的人群或主持人。我认为事后看来(2008 年 10 月仍然是 SO 的早期阶段......) QBziZ 应该提交并接受 Edit2 作为他自己的总结答案,而不是关闭问题以允许答案以后会有更多的见解。这就是为什么我现在自己投票决定重新开放;) 【参考方案1】:GDI 通过调用图形设备驱动程序中的各种函数来工作。每个驱动程序必须实现一组核心功能。其他功能可以由驱动程序实现。如果不是,GDI 将自己执行这些功能。
如果某个特定功能没有在硬件中实现,那么驱动程序就没有必要通过软件实现该功能,因为 GDI 可能会做得更好。 GDI 针对性能进行了极好的优化。
随着更多功能在硬件中实现,这些功能不仅性能更好,而且 GDI 要做的工作也更少,从而减少了用于图形的 CPU 时间。
也可能是显卡供应商为了将显卡快速推向市场,可能没有实现显卡可以执行的所有可能的硬件功能。然后,该驱动程序的更高版本可能会实现该功能,从而提高性能。
【讨论】:
问题是,我使用 GDI 已经 10 多年了,在不同的硬件平台上,据我所知,它从未被加速过。我想知道这种加速现在是系统性的,还是只是特定于供应商的。【参考方案2】:GDI 加速了很长一段时间。据我记得,它在某种程度上确实取决于您的硬件和驱动程序。为什么您最近才看到性能如此飞跃,这似乎很奇怪。
不过,不要太高兴 - Vista 不再支持 GDI 硬件加速。新的桌面合成引擎不支持它。但是,在 Vista 中,您确实可以快速移动窗口,因为内容并不总是必须由应用程序重新绘制(我认为没有撕裂?)。
【讨论】:
感谢您的回答。关于 Vista 的好提示。我会尽快用我的小测试应用进行检查。【参考方案3】:在某种程度上,GDI 一直在加速。记得以前Win31的时候买的卡(Number9),主要卖点是GDI的硬件加速。
【讨论】:
【参考方案4】:Vista 有一个新的display driver architecture,它将提供一个显着提高性能的机会。您是在比较硬件/操作系统组合吗?
【讨论】:
我测试过的操作系统是 XP service pack 2。【参考方案5】:很多 2D 的东西已经加速了一段时间,每个新的主要版本的 windows 都改变了显示驱动程序的工作方式。我相信是 Windows 修改了它的窗口管理器层。真的很难比较,因为 XP 比任何早期版本都更类似于 windows 2000/NT。
更多关于***的信息,Development of Windows XP。
当然,Windows 2000 是第一个包含 DirectX 的基于 NT 内核的窗口,并且还进行了一些图形改进。 Windows 2000 (wikipedia)
我认为不同版本之间的显示驱动程序模型/2D 子系统不会发生重大变化。因此,如果您注意到这样的变化,很可能是由于 nVidia 所做的。
【讨论】:
以上是关于GDI 已经加速。这是啥时候发生的?的主要内容,如果未能解决你的问题,请参考以下文章