本页介绍在早期版本的 WDDM 2.X for Windows 10 中添加的显示和图形驱动程序的功能。 若要查看为最新 WDDM 2.X 版本添加的功能,请参阅 Windows 10 显示和图形驱动程序的新增功能。
WDDM 2.6
超级湿墨迹
Super-Wet Ink 是以 前缓冲绘制 为中心的一个特性。 IHV 驱动程序可以支持创建硬件不支持的格式或模式的“可显示”纹理。 他们可以通过分配应用程序请求的纹理,并分配一个格式/布局可以显示的“阴影”纹理,然后在实时情况下在两者之间进行复制来进行此操作。 这种“阴影”可能不一定是我们通常所理解的那种纹理,而可能只是压缩数据。 此外,它可能不是必需的,而是作为一种优化存在。
运行时将演变为理解显示表面的各个方面。
是否必须存在阴影才能在特定 VidPnSource/平面上显示。
是否更适合阴影的存在。
何时将内容从应用程序图面传输到阴影图面。 运行时将明确表示此操作,而不是在 Present 中隐式处理。
如何请求设置模式或在原始图面和阴影图面之间动态翻转。
扫描过程可能在 VBlank 之后不久开始,从图像的顶部到底部垂直进行,并在下一个 VBlank 之前不久完成。 这并非总是如此,具体取决于像素时钟的计时以及纹理中的数据布局:特别是当实际存在压缩可用时。
添加了新的 DDI(直接设备接口),以隔离并了解在扫描之前发生的转换,以便在可能的情况下启用前缓冲区渲染。 请参阅 D3DWDDM2_6DDI_SCANOUT_FLAGS 和 PFND3DWDDM2_6DDI_PREPARE_SCANOUT_TRANSFORMATION。
可变速率着色
可变速率底纹或粗糙像素底纹是一种机制,用于在呈现的图像之间以不同的速率分配渲染性能/电源。
在前一个模型中,为了使用 MSAA(多重采样抗锯齿)来减少几何锯齿:
- 在分配目标之前,需要提前知道要减少几何混叠的量。
- 一旦目标被分配,减少几何别名的幅度就不能更改。
在 WDDM 2.6 中,新模型通过添加新的粗着色概念,将 MSAA 扩展到相反的粗糙像素方向。 这样,着色可按比一个像素更粗糙的频率执行。 可以将一组像素着色为单个单元,然后结果将广播到组中的所有样本。
应用程序可以使用粗糙着色 API 来指定属于某个着色组的像素(粗糙像素)数目。 分配渲染器目标后,可以改变粗糙像素大小。 因此,屏幕的不同部分或不同的绘制传递可以有不同的着色率。
可以通过两个用户可查询的上限来实现多层结构。 对于第 1 层和第 2 层,粗着色可用于单采样资源和 MSAA 资源。 对于 MSAA 资源,可以像往常一样按粗像素或按样本执行着色。 但是,对于 MSAA 资源,在第 1 层和第 2 层上,粗采样不能用于以每像素和每样本之间的频率进行着色。
第 1 层:
底纹速率只能按绘制指定;没有什么比这更精细的
着色速率统一应用于绘制的内容,无论它位于渲染目标内的哪个位置。
第 2 层:
与第 1 层一样,可以按绘制指定着色速率。 可以通过每次绘图的基础,或者通过以下组合指定:
- 每个驱动顶点的语义,以及
- 屏幕空间图像
三个来源的着色率通过一组组合器进行合并
屏幕空间图像磁贴大小为 16x16 或更小。 保证应用请求的着色率会被精确交付(以确保时间和其他重建筛选器的精度)
支持 SV_ShadingRate PS 输入。 引发顶点速率(也称为每基元速率)仅在使用一个视口且未对SV_ViewportIndex进行写入时才有效。
如果 SupportsPerVertexShadingRateWithMultipleViewports cap 标记为 true,则每个引发顶点速率(也称为按基元速率)可以与多个视区一起使用。 此外,在这种情况下,写入 SV_ViewportIndex 时可以使用该速率。
请参阅 PFND3D12DDI_RS_SET_SHADING_RATE_0062 和 D3D12DDI_SHADING_RATE_0062。
收集诊断信息
通过收集诊断信息 ,OS 可以从图形适配器的驱动程序收集专用数据,这些驱动程序包括呈现和显示函数。 此新功能是 WDDM 2.6 中的一项要求。
新的 DDI 应允许 OS 在加载驱动程序时收集信息。 目前,OS 使用微型端口实现的 DxgkDdiCollectDebugInfo 函数来查询 TDR(超时检测和恢复)相关情况的驱动程序专用数据。 新的 DDI 将用于出于各种原因收集数据。 当需要诊断时,OS 将调用此 DDI,以提供所请求的信息类型。 驱动程序应收集所有重要信息,以调查问题并将其提交到 OS。 DxgkDdiCollectDebugInfo 最终将被弃用,并替换为 DxgkDdiCollectDiagnosticInfo。
请参阅 DXGKDDI_COLLECTDIAGNOSTICINFO。
后台处理
后台处理允许用户模式驱动程序表达所需的线程处理行为,以及运行时来控制/监视它。 用户模式驱动程序会启动后台线程,并将这些线程设置为尽可能低的优先级,依赖于 NT 调度器来确保这些线程不会中断关键路径线程,通常能够成功实现。
API 允许应用调整适合其工作负荷的后台处理量以及何时执行该工作。
请参阅 PFND3D12DDI_QUEUEPROCESSINGWORK_CB_0062。
驱动程序热更新
需要更新 OS 组件时,驱动程序热更新可尽可能减少服务器停机时间。
驱动程序热修补程序用于将安全修补程序应用到内核模式驱动程序。 在这种情况下,系统会要求驱动程序保存适配器内存、停止适配器、卸载驱动程序、加载新驱动程序,并再次启动适配器。
请参阅DXGKDDI_SAVEMEMORYFORHOTUPDATE 和 DXGKDDI_RESTOREMEMORYFORHOTUPDATE。
WDDM 2.5
跟踪的工作负载
跟踪的工作负载是一项实验性功能,可更好地控制更快的处理器执行与降低能耗之间的权衡,在进一步通知之前不可用。 该功能已从 Windows 10 版本 2003 中删除,并在早期操作系统版本中弃用,是安全修复的一部分。
内容更改
主题 | 日期 | DESCRIPTION |
---|---|---|
用于头戴显示设备和专业显示器的 EDID 扩展(VSDB) | 12/03/2018 | 显示制造商规范 |
DirectX 图形内核子系统 (Dxgkrnl.sys) | 12/04/2018 | Windows操作系统通过 Microsoft DirectX 图形内核子系统(Dxgkrnl.sys)实现的内核模式的接口。 |
WDDM 2.1 功能 | 01/10/2019 | 介绍 WDDM 2.1 的新增功能和更新的功能 |
光线追踪
新的 Direct3D DDI 接口与 Direct3D API 接口同时创建,以支持硬件加速的光线跟踪。 示例药物相互作用(DDI)包括:
- PFND3D12DDI_BUILD_RAYTRACING_ACCELERATION_STRUCTURE_0054
- PFND3D12DDI_COPY_RAYTRACING_ACCELERATION_STRUCTURE_0054
- PFND3D12DDI_EMIT_RAYTRACING_ACCELERATION_STRUCTURE_POSTBUILD_INFO_0054
- PFND3D12DDI_GET_RAYTRACING_ACCELERATION_STRUCTURE_PREBUILD_INFO_0054
有关光线跟踪的详细信息,请参阅:
显示同步
当驱动程序向操作系统公开显示设备时,操作系统将检查显示同步能力,因此会在启用显示器之前完成此检查。 对于 TypeIntegratedDisplay 子设备,在适配器初始化期间,通过调用 DxgkDdiQueryAdapterInfo 并使用 TypeDXGKQAITYPE_INTEGRATED_DISPLAY_DESCRIPTOR2 来报告相关信息。 对于自 WDDM 2.5 起支持的 TypeVideoOutput 子设备,这些功能通过 DxgkDdiUpdateMonitorLinkInfo 作为热插即用处理的一部分进行报告,以便功能可能会根据目标显示器或连接的显示器而更改。
操作系统在每个路径DXGK_SET_TIMING_PATH_INFO结构的输入字段中,通过DxgkDdiSetTimingsFromVidPn调用指定显示同步。
WDDM 2.1
WDDM 2.1 支持新方案,并在性能、可靠性、升级复原能力、诊断改进和 Windows 图形子系统的未来系统改进方面提供显著改进。 WDDM 2.0 驱动程序模型是 D3D12 的先决条件。 WDDM 2.0 和 DirectX12 仅适用于 Windows 10 及更高版本。
下面是 WDDM 2.1 的功能添加和更新的列表。
通过减少在内存管理中花费的开销时间以及更高效地使用稀缺图形内存来提高图形性能。 图形性能改进包括:
- 提供和回收资源 - 提供和回收改进,以减少在后台模式下运行的应用程序的内存占用。
- 支持 2MB 页表项编码 - 在 WDDM 2.1 中,已启用 VRAM 中的大页表项(PTE)编码。 此更改可提升支持它的系统上的性能。
- 对 64KB 内存页的支持 - WDDM 2.1 中也支持使用 64KB 粒度的虚拟内存分配。 此更改通过减少访问虚拟内存页的开销,对 APU 和 SoC 尤其有利。
基于硬件的受保护内容改进与显示批处理(PlayReady 3.0)
用于图形驱动程序的驱动程序存储安装以提高驱动程序升级的可靠性。
DXIL,新的着色器编译器语言
D3D12 性能和优化改进
改进了开发人员的诊断选项
有关详细信息,请参阅 WDDM 2.1 功能。
WDDM 2.0
WDDM 2.0 包括内存管理更新。
GPU 虚拟内存
- 所有物理内存都抽象化为可由图形处理单元(GPU)内存管理器管理的虚拟段。
- 每个进程获取自己的 GPU 虚拟地址空间。
- 已删除对交错范围的支持。
有关详细信息,请参阅 WDDM 2.0 中的 GPU 虚拟内存。
驾驶员居住地
- 在将命令缓冲区提交到驱动程序之前,视频内存管理器可确保分配驻留在内存中。 为了实现这一功能,添加了用户模式驱动程序接口(MakeResident、 TrimResidency、 Evict)。
- 分配和修补位置列表已逐步取消,因为在 WDDM 2.0 模型中不需要它。
- 用户模式驱动程序现在负责处理分配跟踪。 添加了多个 DDI 以启用此功能。
- 驱动程序将获得内存预算,并有望在内存压力下进行调整。 这允许通用 Windows 驱动程序跨应用程序平台运行。
- 添加了用于进程同步和上下文监视的 DDI。
有关详细信息,请参阅 WDDM 2.0 中的驱动程序驻留。