WDDM

WDDM

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版本。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則無此限制。

WDDM 1.1


Windows 7 支持 WDDM 1.1; 最早在 WinHEC 2008發布此一訊息. 新功能有:
DXGI 1.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平台更新。GDI / GDI +在Vista將繼續依靠軟體渲染。
WDDM 1.1向後兼容WDDM 1.0規範,1.0和1.1的驅動程序可直接用於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加速功能是操作系統用軟體模擬的,使用這個驅動就不能作為主卡。
3) Render Only Driver:只有最基本的渲染功能,同樣不能作為主卡啟動。
這三種驅動中第一種是所有WDDM中都必須要有的,也是功能最完整的,第二、第三種是WDDM 1.2中才出現的,之前的WDDM並不支持。另外,這個功能變化對普通用戶並沒有什麼影響,主要是方便廠商編寫驅動用的。
WDDM 1.2對普通用戶的影響體現在兩個地方,第一是性能和用戶體驗改進,第二個層次則是對DirectX的改進,進而影響遊戲性能。

性能提升

1. 減少內存佔用進而提高系統響應速度
內存佔用過多會明顯降低系統響應速度,特別是在集顯平台,由於還要劃分內存做顯存之用,如何管理好被佔用的內存也會影響系統速度。Win8通過先進的內存分配與回收機制減少了內存佔用,系統休眠及恢復速度也得以優化。
2. 提高GPU容錯以改善系統可靠性
WDDM
WDDM
這個前面也提到過一點,驅動程序因為各種意
外無響應時,Vista/Win7系統會嘗試自動恢復驅動,減少藍屏、死機等現象。Win8系統中,微軟改進了GPU優先權(GPU preemption)和TDR(Timeout Detection and Recovery,超時檢測和恢復處理),系統的可靠性有望進一步提升。
3. 提高出現性能問題時的診斷能力
越來越多的程序和應用開始使用GPU資源,因此提高性能診斷問題的能力愈發重要。在這點上,微軟通過用戶模式驅動日誌、禁用FPO(Frame Pointer Omission)優化、XPS光柵化等方式提高了診斷能力。
在提升參數的同時,微軟也在不斷提升用戶體驗,意在讓參數的提升真正轉換為用戶實際體驗的提升。
功能與改進
1. 支持3D立體顯示
WDDM
WDDM
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待機和活躍時的功耗。

1.2版本總結

WDDM 1.2雖然版本號變化不大,其實功能改進還是很多的,特別是Win8還要支持平板電腦這樣的智能設備,所以在視頻播放、續航時間、功耗管理、屏幕旋轉、外設管理這一類問題上重點加強,對PC而言,3D立體顯示、可靠性加強、降低內存佔用等改進也是非常重要的。
另外,WDDM不僅影響用戶的操作體驗,它還牽涉到DirectX API,即WDDM的改進還會對D3D遊戲性能產生一定影響。