Electronic Joint Business

Solution for E-Business

dwm

WDDM 编程与调试 (1) — GPU 架构概览

从 Vista 开始, Windows 的显示驱动全面采用新的编程框架,WDDM 即 Windows Display Driver Model。 WDDM 在 Windows 中之所以不可或缺,是因为 WDDM 与全新的桌面窗口管理器 DWM (Desktop Window Manager) 紧密相联。从技术的角度上来看, DWM 与 Mac OS X 中的 Quartz Compositor 类似。在 DWM 中,应用窗口不再像以前的 Windows 被直接绘制在屏幕上,而是经后台渲染后放入缓存中,再由 DWM 进行组合并最终呈现在屏幕上,即所谓“桌面组合”的概念。由于每个窗口分别在不同的视频内存区进行渲染,这使得 Aero 能够将窗口与桌面背景图像混合创建出类似霜冻玻璃之类的图形效果,为此,在设计上需要对每个窗口都使用图形加速,而不再仅限于 DirectX® 应用程序。

在 Vista 中,最终呈现操作是由 DWM 中的独立线程处理,而应用程序窗口的呈现则由窗口的 UI 线程负责操作。DWM 通过窗口列表,在树结构中管理各个窗口位图,然后将其组合到最终桌面。换言之,应用程序的主窗口线程呈现其场景,DWM 呈现线程对该场景进行访问,并通过其 DirectX 接口更新桌面。为了实现这一点,DWM 需要与 WDDM 通信,后者是图形处理器和显存的最终所有者。

WDDM 引入了显存管理器 ( VidMM — Video Memory Manager),可以在系统内存和显存之间进行交换。这意味着 WDDM 可以虚拟化显卡的资源,因而在共享和交换显存方面以及在线程间对 GPU 进行上下文切换方面可以做得更好。

WDDM 的版本随 Windows 有所不同:Windows Vista 支持 WDDM 1.0 ,而 Window7 支持 WDDM 1.1, Windows 8 支持 1.2版本。Windows 8.1 则将 WDDM 的版本更新到 1.3。目前最新的 windows10 中,WDDM 更新至 2.0 版本,将支持 DX12。

WDDM 的新变化
要了解 WDDM 有什么新变化,我们先看一下在 Windows XP 显卡驱动程序是如何工作的。对于 Windows XP 来说,绝大多数显示驱动程序都驻留在操作系统的内核空间,以便直接与图形硬件进行通讯,只有一小部分组件(如驱动程序中的 OpenGL) 留在了用户空间中且不直接访问硬件。这个模型的问题在于,操作系统内核空间的错误(包括驱动)可能会导致整个系统崩溃。图 1-1 是 ATI 显卡的 XP 驱动程序模型。

>>> 阅读全文

 

, , , , , , ,