Windows GDI加速的详细支持情况


类型:C++ & Qt4,创建时间:Jan. 23, 2017, 1:20 p.m.

标题无“转载”即原创文章,版权所有。转载请注明来源:http://hgoldfish.com/blogs/article/102/。

自从 Vista 以后,Windows 对于 GDI 加速发生了很大的变化。简单地说,在 Vista 出现时,为了支持 Desktop Window Manager(DWM), GDI 是不加速的。为啥 DWM 不支持 GDI 加速呢。因为 DWM 是使用 DirectX 进行渲染的,它调用 DirectX 将显存里面的两个窗口内容合并渲染出来。不幸地是在 WINXP 的架构里面,GDI 是和 DirectX 分开的,两者没有一致的内存空间。所以 DWM 只好舍弃 GDI 的所有加速功能,让 GDI 程序把内容渲染到内存区域,再把这块内存复制到显存里面进行渲染。Windows 7 做了一些改进,要求驱动程序支持一个特殊的内存区域,能够让 GPU 和 CPU 都同时读取到的内存区域。GDI操作都写入到这个内存区域。这样的话,就不需要再做一次复制了,而且因为那个内存区域也是 GPU 可读的,于是 GDI 又可以支持 GPU 加速了。然而 Windows 7 并不像以前的 GDI 那样子,要求显卡驱动程序支持各种 2D 加速命令,而只要支持 BltBit, AlphaBlend 等几个命令就够了。

具体到底 Windows 7 的 GDI 支持哪些加速呢,看一下以下这几篇文章就知道了:

下面这篇文章是显卡驱动程序支持 GDI 加速的一些说明:

GDI Hardware Acceleration

显卡驱动程序必须实现这个函数以支持GDI加速:

PDXGKDDI_RENDERKM callback function

Specifying GDI Hardware-Accelerated Rendering Operations

下面这篇文章列出了驱动程序需要支持的几种操作:

DXGK_RENDERKM_OPERATION enumeration

很明显,GDI的大多数操作都是使用 CPU 来计算的。

标题无“转载”即原创文章,版权所有。转载请注明来源:http://hgoldfish.com/blogs/article/102/。


暂时还没有任何评论。


何不来发表一下您对本文的看法(使用Markdown语法,分段空两行):