当前位置: 首页 > article >正文

Windows 图形显示驱动开发-概述

今天的图形和显示驱动程序是在 Windows 显示驱动程序模型(WDDM)上开发的。

计算加速器驱动程序使用 Microsoft计算驱动程序模型 (MCDM),这是 WDDM 2.0+ 的子集。

Windows 显示驱动程序模型l (WDDM) 是适用于 Windows 的图形显示驱动程序体系结构。 它是在 Windows Vista (WDDM 1.0) 中引入的,并随着每个 Windows 版本的发布而不断改进。

从 Windows 8 (WDDM 1.2) 开始,WDDM 是必需的。

WDDM 的主要功能包括:

  • WDDM 支持 GPU 计划。 抢占式计划允许更好地管理 GPU 资源,因为多个应用程序可以更高效地共享 GPU。
  • WDDM 支持 GPU 的虚拟内存管理,允许更复杂的和更大的图形工作负载,而不会耗尽物理内存。
  • WDDM 驱动程序由用户模式和内核模式组件组成,降低了由于驱动程序故障导致系统崩溃的可能性。
  • WDDM 与 DirectX 紧密集成。 此集成可确保应用程序能够使用新式 GPU 的全部功能,以及更复杂、更高效的呈现技术。
  • WDDM 支持 TDR(超时检测和恢复),从而提高了系统稳定性。
  • WDDM 支持多个监视器,允许无缝配置和管理多显示器设置。

Windows 显示驱动程序模型 (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 知道的客户端。


http://www.kler.cn/a/544563.html

相关文章:

  • .NET 9.0 的 Blazor Web App 项目,进度条 <progress> 组件使用注意事项
  • 相机闪光灯拍照流程分析
  • 生成式AI应用提示注入攻击防御解决方案(上)
  • 渗透测试--文件包含漏洞
  • 编程语言错误处理机制的演变与 Go 的实践
  • 华为支付-商户基础支付场景开发步骤
  • 2025 西湖论剑wp
  • Baumer集成一体式相机堡盟一体式相机相机如何通过NeoAPI SDK使用自动对焦功能和可分区光源控制功能(C#)
  • 【闲谈集】学网络应用开发好还是学网络安全好?
  • 【Docker】从瀑布开发到敏捷开发
  • 从零开始:Django初学者的实战之旅
  • iMC U-Center开局部署、备份方案及授权介绍
  • 像指针操作、像函数操作的类
  • 【视频总结】Deep Dive into LLMs like ChatGPT 深入探索像ChatGPT这样的大语言模型|Andrej Karpathy
  • Vulhub靶机 MinIO信息泄露漏洞(CVE-2023-28432)(渗透测试详解)
  • CPP集群聊天服务器开发实践(二):点对点聊天和添加好友
  • 【Linux】玩转Linux操作系统(十二)网络访问和管理
  • 八.springboot集成mybatis+druid数据库连接池
  • 海外服务器都有什么作用?
  • 怎么用DeepSeek批量生成抖音脚本