WDDM显卡驱动
+ -

WDDM显卡驱动

2021-06-30 1496 42

WDDM,全称是Windows Display Driver Model(WDDM),是微软从Vista(包括)之后的新一代图形驱动程序模型。用于代替老的图形驱动程序模型XDDM(XPDM)。

名词解释:

  • XPDM - Windows XP Display Driver Model
  • WDDM - Windows Vista Display Driver Model.

WDDM版本V1.0

WDDM最早应用于WIndows Vista系统中V1.0。
WDDM1.0版本下不允许多个显示驱动同时工作,即只能运行一个显示驱动程序。而WDDM1.1则无此限制。

WDDM 1.0版不支持多显示器,多显示适配器条件下的多驱动设置。在有多个显示器的条件下,如果有两个或以上的显示适配器同时进行信号输出,所有的显示适配器都必须使用相同的WDDM驱动。

WDDM版本V1.1

Windows 7 支持 WDDM 1.1;
WDDM1.1对图形、接口、加密、压缩等方面都有了更多的支持。

可用GDI 支持硬件 2D 加速 (无 GDI+) 以及 Direct2D/DirectWriteBitBlt, StretchBlt, TransparentBltAlphaBlend, ColorFillClearType 字型支持Direct3D 11 装置驱动接口 (DDI)DXVA-HD DDI Hardware video overlay DDI 可选用 AES 128 加密可选用加密后的图形压缩支持 multiple drivers 在于一个 multi-adapter 以及 multi-monitor 的设定之上DXGI 1.1, Direct3D 11,Direct2D和DirectWrite也将提供与Windows Vista平台更新。

WDDM版本 1.2

WDDM 1.2还引入了三种显卡驱动版本,分为Full Graphics Driver、Display Only Driver和Render Only Driver,区别如下:

  • 1)Full Graphics Driver:功能完整版本,支持2D和3D硬件加速,拥有完整的渲染(Render)、显示(Display)和视频(Video)功能。这一驱动是WDDM 1.0/1.1支持且唯一支持的必备功能,所有Win8系统上的显卡都必须支持Full Graphics Driver,具备作为主卡启动的能力。
  • 2) Display Only Driver:顾名思义,硬件厂商编写的这一版本的驱动只有显示功能,2D和3D加速功能是操作系统用软件模拟的,使用这个驱动就不能作为主卡 [1] 。
  • 3) Render Only Driver:只有最基本的渲染功能,同样不能作为主卡启动。

这三种驱动中第一种是所有WDDM中都必须要有的,也是功能最完整的,第二、第三种是WDDM 1.2中才出现的,之前的WDDM并不支持。另外,这个功能变化对普通用户并没有什么影响,主要是方便厂商编写驱动用的。

WDDM 1.2对普通用户的影响体现在两个地方,第一是性能和用户体验改进,第二个层次则是对DirectX的改进,进而影响游戏性能。

WDM1.2支持 Direct3D 10、10.1、11或11.1功能的硬件(或更高版本)。

WDDM2.0版本

从Win10的第一个版本开始支持WDM2.0,后续现在升级到WDDM2.1
提供有关GPU虚拟内存的、常驻内存,CPU和GPU的高级同步。

WDDM2.1

现在的WDDM2支持D3D版本: D3D9, D3D10, D3D10.1, D3D11, D3D11.x, D3D12。

XDDM与WDDM对DirextX的支持

从下图可以看到,WDDM(XPDM)最高支持到DirectX9,而WDDM支持从DirectX9开始后的所有版本。

XDDM与WDDM对DirextX的支持

0 篇笔记 写笔记

WDDM 设置电源状态
电源状态使用DxgkDdiSetPowerState来实现 InitialData.DxgkDdiSetPowerState = BddDdiSetPowerState;当驱动工作时方可进行电源状态的设置NTSTATUSBddDdiSetPowerStat......
WDDM 官方开发参考示例
微软提供的WDDM驱动代码托管在GitHub中,目录为:Windows Driver Kit (WDK) 8.1 Samples,说实在的,挺难找的。工程名字为:Kernel mode display-only miniport driver (KMDOD) sample后续我们将对照参考示例代码......
WDDM 适配器复位和资源的释放
通过获取的适配器信息将SupportNonVGA置为TRUE,表示支持使用DxgkDdiStopDeviceAndReleasePostDisplayOwnership函数重置显示设备并释放当前开机自检(POST)设备的所有权。 InitialData.DxgkDdiStopDeviceAn......
WDDM显卡驱动
WDDM,全称是Windows Display Driver Model(WDDM),是微软从Vista(包括)之后的新一代图形驱动程序模型。用于代替老的图形驱动程序模型XDDM(XPDM)。名词解释:XPDM - Windows XP Display Driver ModelWDDM - ......
WDDM 模型架构
WDDM驱动模型架构从Windows Vista开始支持,由内核模块和应用模块组成。微软图形显示子系统架构如下所示:根据上图可知,我们开发WDDM驱动并不是从头开始全部,而是配合Windows已经提供的现有的显示驱动架构的基础上开发内核态的显示MiniPort驱动、用户模式的显示驱动和用于支持O......
WDDM 子设备描述符
子设备的描述信息是能过函数BddDdiQueryDeviceDescriptor实现的。 InitialData.DxgkDdiQueryDeviceDescriptor = BddDdiQueryDeviceDescriptor;严格来说,这个DxgkDdiQueryDev......
WDDM KMDOD驱动介绍及驱动初始化
KMOD驱动是微软提供的一个Display Only驱动。WDDM KMOD驱动初始化Windows驱动的入口函数是DriverEntry,所以显示Mini小端口驱动程序也不例外。和其它Mini小端口驱动的入口函数实现一致,在其DriverEntry只做一件事,就是分配系统指定的一个结构体,然后......
WDDM KMOD驱动设备的创建与启动
创建设备 DxgkDdiAddDevice/BddDdiAddDeviceWDM驱动的一个核心思想是代码的重用,这样如果是同一型号的显卡芯片,可以使用同一套代码,而对于每一个芯片,只需要保留相关的上下文即可。这里“代码”就是WDM驱动架构中的DRIVER_OBJECT,而每个芯片就叫做DEVICE_......
WDDM 子设备的枚举过程
这里的子设备指的是显示适配器(display adapter)的子设备。显示适配器子设备的枚举是通过显示端口驱动程序(display port driver), 显示Mini端口驱动程序(display miniport driver), and video present network (Vi......
WDDM 停止、复位、移除设备及驱动卸载
说完了驱动的创建与启动,这里顺使说一下设备的停止、复位、卸载设备设备的停止/BddDdiStopDevice设备停止的回调函数为BddDdiStopDevice InitialData.DxgkDdiStopDevice = BddDdiStopDevi......
WDDM 与XDDM开发的区别
和XDDM驱动开发一样,在新的WDDM驱动模型架构下,需要编写与之适配的Mini小端口驱动。和XDDM驱动不一致的是,WDDM的显示驱动运行于应用层,并且其不使用GDI引擎,而是使用的是Direct3D 运行时库和DirectX图形内核子系统(Dxgkrnl.sys).WDDM与XDDM开发的区......
WDDM 显卡及显卡驱动的分类
随着显卡的技术的发展,对于三维图形处理的功能越来越强,所以直接导致的一个结果就是显卡的数学处理能力(浮点计算)的功能越来越强。所以对于一些需要进行大量数学计算的模块,将这些功能交由显卡来进行处理相比较CPU更能大幅度提高效率。如现在的人功智能AI,还有前几年火热的挖矿…这些都是需要复杂的数学计算......
WDDM 子设备关状态
WDDM中使用来DxgkDdiQueryChildStatus查询子设备的状态 InitialData.DxgkDdiQueryChildStatus = BddDdiQueryChildStatus;和其它的回调函数一样,最终的处理函数其实是BASIC_DIS......
WDDM IOCTL请求
WDDM也支持IOCTL请求,只是现在的作用大幅度下降了 InitialData.DxgkDdiDispatchIoRequest = BddDdiDispatchIoRequest;函数原型为:NTSTATUS DxgkddiDispatchIoRequest(......
WDDM 时序调用流程图
下图显示了从创建呈现设备到将内容呈现给显示器期间WDDM的时序调用流程图。创建渲染设备1.在应用程序请求创建呈现设备后,MIni小端口驱动程序将接收 DxgkDdiCreateDevice 调用。 Mini端口驱动程序通过返回指向DXGKARG_CREATEDEVICE结构的pInfo成员中的......
作者信息
我爱内核
Windows驱动开发,网站开发
好好学习,天天向上。
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!