Windows Display Driver Model(WDDM),是微软新一代的图形驱动程序模型。
WDDM是改良旧有的Windows XP上的XPDM架构,XPDM是使用2D 的GDI(Graphics Device Interface)或 GDI+,与XPDM相比,WDDM是3D加速桌面,最早适用于WIndows Vista之上。Window7 上支持 WDDM 1.1。windows8 的出现,使得WDDM再次更新,支持 WDDM1.2。
功能
WDDM 使用户能够同时运行多个 GPU 密集型应用程序。 一个Direct3D的图形表面(surface)的内存区域,包含纹理网格(textured meshes)用于呈现2D或3D场景。WDDM 允许不同的行程(process)共享整个Direct3D表面。在WDDM 推出之前, 进程之间共享纹理是困难的,因为这将需要复制的数据,从显存到系统内存,然后返回到视频内存的新设备。 一旦某个WDDM驱动程式故障时,图形堆栈(stack)将重新启动驱动程式。图形硬件故障时也会被拦截,必要时驱动程式将被重新设定。 WDDM还允许在显示驱动出错时,重置显示设备,而不用重新启动 在WindowsXP时代有20%的系统蓝屏机会是因为显卡驱动造成的。WDDM显示器驱动程序在技术水平上有两个组件:一个非常先进的内核模式驱动程序(KMD)和一个执行大部分密集计算的用户模式驱动程序。有了此模型,已将代码的大部分移出了内核模式。由于日常显示相关操作只在用户模式下动作,所以大大提高了系统稳定性。限制
新的驱动程序模型要求有图形硬件支持Shader Model 2.0。根据微软2009年的调查,大约只有1-2%的硬件使用的XPDM,其余已具备WDDM的能力。 WDDM 1.0版不支持多个驱动器在多适配器,多显示器设置。如果一个多监控系统有多个图形适配器供电的显示器,无论是适配器必须使用相同的WDDM驱动程序。WDDM 1.1没有这种限制。
提升用户体验,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加速功能是操作系统用软件模拟的,使用这个驱动就不能作为主卡。
3) Render Only Driver:只有最基本的渲染功能,同样不能作为主卡启动。
这三种驱动中第一种是所有WDDM中都必须要有的,也是功能最完整的,第二、第三种是WDDM 1.2中才出现的,之前的WDDM并不支持。另外,这个功能变化对普通用户并没有什么影响,主要是方便厂商编写驱动用的。
WDDM 1.2对普通用户的影响体现在两个地方,第一是性能和用户体验改进,第二个层次则是对DirectX的改进,进而影响游戏性能,下面我们就对照这两处分别来看WDDM 1.2的变化及影响。
首先,性能提升部分主要有:
1. 减少内存占用进而提高系统响应速度
内存占用过多会明显降低系统响应速度,特别是在集显平台,由于还要划分内存做显存之用,如何管理好被占用的内存也会影响系统速度。Win8通过先进的内存分配与回收机制减少了内存占用,系统休眠及恢复速度也得以优化。
2. 提高GPU容错以改善系统可靠性
这个前面也提到过一点,驱动程序因为各种意外无响应时,Vista/Win7系统会尝试自动恢复驱动,减少蓝屏、死机等现象。Win8系统中,微软改进了GPU优先权(GPU preemption)和TDR(Timeout Detection and Recovery,超时检测和恢复处理),系统的可靠性有望进一步提升。
Win8系统中处理驱动停止响应(右)又有了进步,虽然出现的提示信息一样 |
3. 提高出现性能问题时的诊断能力
越来越多的程序和应用开始使用GPU资源,因此提高性能诊断问题的能力愈发重要。在这点上,微软通过用户模式驱动日志、禁用FPO(Frame Pointer Omission)优化、XPS光栅化等方式提高了诊断能力。
上面介绍的性能提升有些枯燥,用户看不到而且也不一定体验得到,不过在用户体验上微软也是花了心思的,而且每个用户都会有直观感受的。
1. 支持3D立体显示
3D显示是目前的热门,也是未来的大趋势,Win8也顺理成章地推出了Stereoscopic 3D立体显示技术。不过要实现立体显示依然需要软硬件条件的支持,比如3D显示器、3D显卡(目前的DX11显卡基本上都支持了)、3D驱动以及相应的应用程序。
满足条件后Win8系统中可以开启3D显示 |
预览版Win8中U2311因为不支持3D,所以选项中还看不到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游戏性能产生一定影响,这也是下面要介绍的WDDM对DX性能的影响。