WDDM的全名是Windows Display Driver Model,是一种
微软新一代的图形
驱动程序模型。
模型简介
是对旧版的
Windows XP上的XPDM架构的改良,XPDM使用2D 的
GDI(
Graphics Device Interface)或
GDI+,与XPDM相比,WDDM是3D加速桌面,最早应用于WIndows Vista系统中。Window7
系统支持 WDDM 1.1。而随着
windows8 的出现,WDDM再次更新至WDDM1.2版本。Windows8.1(
Windows Blue)则将WDDM的版本更新到1.3,随着windows10 ,WDDM再次更新至WDDM 2.0版本,将支持DX12
功能
WDDM 使用户能够同时运行多个 GPU 密集型
应用程序。
一个
Direct3D的图形表面(surface)的内存区域,包含纹理网格(textured meshes)用于呈现
2D或3D场景。WDDM 允许不同的线程(process)共享整个Direct3D表面。在WDDM 推出之前, 进程之间共享纹理是困难的,因为这个过程需要能够将数据从
视频内存(
显存)复制到
系统内存,然后返回到视频内存的新设备。
一旦某个WDDM驱动程序出现故障,图形
堆栈(stack)将重新启动驱动程序。图形硬件故障时也会被拦截,必要时驱动程序将被重新设定。
WDDM还允许在显示驱动出错时,重置
显示设备,而不用重新启动计算机。
在
WindowsXP时代有20%的系统
蓝屏故障是
显卡驱动问题造成的。WDDM在技术水平上有两个组件:一个
内核模式驱动程序(KMD)和一个执行大部分密集计算的用户模式驱动程序。新版WDDM模型已将代码的大部分移出了内核模式。由于与显示相关的操作只在用户模式下完成,所以大大提高了
系统稳定性。
限制
新版的WDDM模型要求显卡硬件支持Shader Model 2.0。除此之外,对显卡的其他一些硬件特性也有所要求,导致一些硬件上支持SM2.0的显卡也无法通过WDDM的数字驱动认证(例如GMA900
集成显卡就无法通过)。但根据微软2009年的一份调查,98%以上运行
Windows Vista的硬件设备都已具备使用WDDM的条件。
WDDM 1.0版不支持多显示器,多
显示适配器条件下的多驱动设置。在有多个显示器的条件下,如果有两个或以上的显示适配器同时
进行信号输出,所有的显示适配器都必须使用相同的WDDM驱动。但是WDDM1.0版本下不允许多个显示驱动同时工作,即只能运行一个显示驱动程序。而WDDM1.1则无此限制。
模型1.1
Windows 7 支持 WDDM 1.1; 最早在 WinHEC 2008发布此一讯息. 新功能有:
DXGI 1.1, 可用GDI 支持硬件 2D 加速 (无 GDI+) 以及
Direct2D/DirectWrite
BitBlt,
StretchBlt,
TransparentBltAlphaBlend, ColorFill
ClearType 字型支持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平台更新。GDI / GDI +在Vista将继续依靠软件渲染。
WDDM 1.1
向后兼容WDDM 1.0规范,1.0和1.1的
驱动程序可直接用于Windows Vista。
模型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加速功能是操作系统用软件模拟的,使用这个驱动就不能作为主卡。
(3) Render Only Driver:只有最基本的渲染功能,同样不能作为主卡启动。
这三种驱动中第一种是所有WDDM中都必须要有的,也是功能最完整的,第二、第三种是WDDM 1.2中才出现的,之前的WDDM并不支持。另外,这个功能变化对普通用户并没有什么影响,主要是方便厂商编写驱动用的。
WDDM 1.2对普通用户的影响体现在两个地方,第一是性能和
用户体验改进,第二个层次则是对
DirectX的改进,进而影响游戏性能。
性能提升
内存占用过多会明显降低系统响应速度,特别是在
集显平台,由于还要划分内存做显存之用,如何管理好被占用的内存也会影响系统速度。Win8通过先进的
内存分配与回收机制减少了内存占用,系统休眠及恢复速度也得以优化。
外无响应时,Vista/Win7系统会尝试
自动恢复驱动,减少蓝屏、死机等现象。Win8系统中,
微软改进了GPU优先权(GPU
preemption)和TDR(Timeout Detection and Recovery,超时检测和
恢复处理),
系统的可靠性有望进一步提升。
3. 提高出现性能问题时的诊断能力
越来越多的程序和应用开始使用GPU资源,因此提高性能诊断问题的能力愈发重要。在这点上,微软通过用户模式驱动日志、禁用FPO(Frame Pointer Omission)优化、XPS光栅化等方式提高了诊断能力。
在提升参数的同时,微软也在不断提升用户体验,意在让参数的提升真正转换为用户实际体验的提升。
功能与改进
1. 支持3D立体显示
3D显示是目前的热门,也是未来的大趋势,Win8也顺理成章地推出了Stereoscopic 3D立体显示技术。不过要实现立体显示依然需要软硬件条件的支持,比如3D显示器、3D显卡(目前的DX11显卡基本上都支持了)、3D驱动以及相应的应用程序。
2. D3D11视频播放
虽然现在为了兼容不同显卡,视频播放可以使用D3D9、D3D10等
API,但是Win8系统中全部视频播放会统一到D3D11 API中,这样可以简化编程,提高效率。此外,D3D11在3D播放、DXVA
硬解上更有优势,
统一视频播放API好处多多。当然,要想更好地使用Win8系统,DX11显卡是少不了的。
3. 优化屏幕旋转
传统的台机和笔记本上频繁旋转屏幕并不常见,但是Win8还要面向
平板电脑,后者应用中旋转屏幕是家常便饭,这就要求屏幕旋转时桌面能迅速转换。Win8针对此类应用做了大量优化以获得平滑无缝的屏幕旋转体验。
4. 支持以容器ID显示各种设备
近年来丰富的外设产品层出不穷,通过
蓝牙、
USB、WiFi等各种方式连接到电脑上,容器ID是Win7上使用的外设
分类管理的方法,Win8将之扩大,可以通过容器ID分门别类显示各种不同外设,使用和管理更方便。
5. 支持Windows与WDDM驱动之间
无缝切换部分场合中软件或者硬件需要重置,比如升级驱动时屏幕会闪光或者抖动几次以适应变化,Win8系统中就可以在这几种状态中无缝切换。
6. 优化驱动以降低能耗
这个功能也主要针对平板这样的
智能设备,不过电脑一样可以从中受益。通过DirectFlip和GPU Power Management技术降低GPU待机和活跃时的功耗。
版本总结
WDDM 1.2虽然
版本号变化不大,其实功能改进还是很多的,特别是Win8还要支持平板电脑这样的智能设备,所以在视频播放、
续航时间、功耗管理、屏幕旋转、外设管理这一类问题上重点加强,对PC而言,3D立体显示、可靠性加强、降低内存占用等改进也是非常重要的。
另外,WDDM不仅影响用户的操作体验,它还牵涉到DirectX API,即WDDM的改进还会对D3D游戏性能产生一定影响。