WDDM 的优点

注意

XDDM 和 VGA 驱动程序在 Windows 8 及更高版本的操作系统上无法编译。 如果显示硬件连接到没有经过认证支持 WDDM 1.2 或更高版本的驱动程序的 Windows 8 计算机,则系统默认运行基本显示驱动程序。

由于以下增强功能,使用 WDDM 创建图形/显示驱动程序比使用 Windows 2000 显示驱动程序模型 (XDDM) 更容易。 此外,WDDM 驱动程序有助于提高操作系统的稳定性和安全性。 较少的驱动程序代码在内核模式下运行,在这种模式下,它可以访问系统地址空间,并可能导致崩溃。

  • Direct3D 运行时和 DirectX 图形内核子系统 (Dxgkrnl) 执行更多的显示处理;也就是说,与驱动程序相比,运行时和子系统中有更多的代码。 此处理包括管理视频内存和为 GPU 计划直接内存访问 (DMA) 缓冲区的代码。 有关详细信息,请参阅视频内存管理和 GPU 计划

  • Surface 创建需要更少的内核模式阶段。

    在 Windows Vista 之前的操作系统上创建 Surface 需要以下连续的内核模式调用:

    1. DdCanCreateSurface
    2. DdCreateSurface
    3. D3dCreateSurfaceEx

    WDDM 中的 Surface 创建只需要 CreateResource 用户模式显示驱动程序调用,后者又调用运行时的 pfnAllocateCb 函数。 此调用会导致 Dxgkrnl 调用内核模式驱动程序的 DxgkDdiCreateAllocation 函数。

  • 创建和销毁图面以及锁定和解锁资源的调用配对更为均匀。

  • WDDM 以相同的方式处理视频内存、系统内存和托管图面。 Windows Vista 之前的操作系统处理这些组件的方式略有不同。

  • 着色器转换在显示驱动程序的用户模式部分执行。

    这种方法消除了在内核模式下执行着色器转换时出现的以下复杂性:

    • 与设备驱动程序接口 (DDI) 抽象不匹配的硬件模型
    • 转换中使用的复杂编译器技术

    由于着色器处理完全按进程进行,并且不需要硬件访问,因此不需要内核模式着色器处理。 因此,可以在用户模式下处理着色器转换代码。

    必须围绕用户模式转换代码编写 try/except 代码。 转换错误会导致返回到应用程序处理。

    后台转换(即在与其他显示处理线程分开的线程中运行的转换代码)更容易为用户模式编写。