WDDM 体系结构

Windows 显示驱动程序模型 (WDDM) 具有用户模式和内核模式组件。 下图显示 WDDM 体系结构的各个组件。

显示具有用户模式和内核模式组件的 WDDM 体系结构的关系图。

系统提供的模块以白框形式显示在图中。 灰色框表示合作伙伴可以提供的模块。 应用程序可由系统提供或合作伙伴开发。

系统提供的模块

以下系统提供的模块是 WDDM 体系结构的一部分:

  • Direct3D 运行时是一个用户模式组件,它为应用程序提供应用程序 API。 它提供各种服务,负责管理应用程序、用户模式图形驱动程序 (UMD) 和 gdi32.dll 之间的交互。

  • gdi32.dll 是 D3D 运行时或合作伙伴图形客户端链接所针对的用户模式库。 运行时或客户端调用 gdi32“thunk”,用于将调用路由到 DirectX 内核子系统 (Dxgkrnl) 中的相应内核模式函数。

  • Dxgkrnl 是 Windows 操作系统内核模式图形子系统的核心组件。 它有助于操作系统、UMD 和内核模式显示微型端口驱动程序 (KMD) 之间的通信。 Dxgkrnl 包括显示端口驱动程序、内存管理器 (VidMm) 和计划程序 (VidSch) 等子组件。 Dxgkrnl 由以下系统文件组成:

    • dxgmms2.sys,它实现 WDDM 2.0 及更高版本的 GPU/NPU 计划程序及视频内存管理器。
    • dxgmms1.sys,它实现 WDDM 2.0 之前的 WDDM 版本的 GPU/NPU 计划程序及视频内存管理器。
    • dxgkrnl.sys,它处理 DirectX 内核子系统中的其他所有内容,包括加载所需的 dxgmms.sys 文件、用户模式、显示模式、GPU 虚拟化、电源管理、内核执行接口等 D3DKMTXxx 调用的初始处理。
  • Win32 GDI 和 Win32k.sys 是某些应用程序仍使用的旧组件。

第三方提供的模块

  • UMD 是 Direct3D 运行时加载的动态链接库 (DLL)。

  • KMD 与 Dxgkrnl 和图形硬件通信。

图形硬件供应商必须同时提供 UMD 和 KMD。

  • 第三方合作伙伴图形客户端是具有其自己的 API 和框架的用户模式组件。 它调用 gdi32 thunk 来与内核模式图形子系统通信。 D3DKMT_CLIENTHINT 列出了Microsoft 知道的客户端。