Windows Display Driver Model

Windows Display Driver Model（ウィンドウズ・ディスプレイ・ドライバ・モデル、WDDM）とは、GPU用デバイスドライバ（グラフィックスドライバ）の枠組みである。

2006年にリリースされたWindows Vistaで最初に導入され、Direct3D 9ExやDirect3D 10以降のDirect3Dは、WDDMに対応するよう設計されている。

 概要 
DirectX 9（Direct3D 9）までのバージョンにおいては、DirectXランタイムおよびデバイスドライバ層の設計がシングルタスク前提となっており、同時に複数の3Dアプリケーションを安全かつ安定的に動作させることが困難になってきた。そのため、Windows Vistaのリリースに伴い大幅に設計を変更し、マルチスレッドに対応させ安定度も向上させるべく設計された新しいドライバモデルがWDDMである。WDDMおよび後述のDWMにより、Windows Aeroではオペレーティングシステム (OS) のデスクトップの描画自体にビデオカードやオンボードグラフィックスなどのGPUを活用したハードウェアアクセラレーションを使用することができ、結果としてCPUの負荷を軽減することができるようになる。

 GPUの仮想化
 GPUのスケジューリングやVRAMの割り当ての仮想化で、複数のアプリケーションが互いを意識することなく資源を扱えるようになっている。
 ユーザーモードへの分離
 WDDMではドライバソフトウェアがカーネルモードとユーザーモードに分かれ、不正なドライバ制御などでシステムがクラッシュを起こしにくい設計となっている。
 GPUの回復
 ディスプレイドライバがフリーズしたとしても、Windowsカーネルが検出し、OSの再起動無しにGPUを初期化して、ディスプレイの表示を復活できるようになっている。

並列処理性能の高いGPUに汎用計算を高速実行させるGPGPUという取り組みがあり、プログラマブルシェーダーが登場した頃から試みられてきたが、長時間かかるタスクをGPUに実行させるとシステム全体を巻き込んで不安定化したりクラッシュしてしまったりする問題があった。CUDA（2007年登場）、OpenCL（2008年登場）、DirectCompute（2009年登場）のようなGPGPU対応APIは、ドライバーがWDDMに対応することで、汎用計算のタスクによってGPUに過負荷がかかったとき、強制的にデバイスをリセット・再初期化してシステム全体の安定性を保つことができるようになる。

.NET Framework 3.0以降に含まれるWindows Presentation Foundation (WPF) はDirect3D 9ベースのハードウェアアクセラレーションに対応しているが、Vista以降ではWDDM対応のDirect3D 9Exが使われるWPF and Direct3D9 interop | Microsoft Learn。

 バージョン 

 XDDM/XPDM 
WDDM発表後、従来のグラフィックスドライバの枠組みをWindows 2000 Display Driver Model (XDDM) あるいはWindows XP Display Driver Model (XPDM) と呼んで区別するようになった。

Windows Vista以降のOSでも引き続きXDDM/XPDMドライバを使用することは可能であるが、その場合、Desktop Window Manager (DWM)、ひいてはWindows Aeroテーマが使用できない。DWMがDirect3D 9Exを使用するためである。

XDDM/XPDMのドライバは、Windows 8以降のOSではサポートされなくなり使用できなくなったWDDM 1.2 and Windows 8 - Windows drivers | Microsoft Learn。DWMが常に有効になりDesktop Window Manager is always on - Win32 apps | Microsoft LearnWDDM 1.0以上が必須要件となったためである。

 WDDM 1.0 
Windows Vistaでサポートされた最初のWDDMである。

Windows 7以降のOSでも、引き続きWDDM 1.0のドライバを使用することは可能であるWDDM 1.1（Windows Display Driver Model 1.1）：Windows Insider用語解説 - ＠ITWindows 10 コンピュータシステムの仕様と要件を確認する方法 - MicrosoftHow to Check Windows 10 Computer System Specs & Requirements - Microsoft。ただしその場合、WDDM 1.1以降で追加された機能は利用できない。

WDDM 1.0のドライバは、Windows 11以降のOSではサポートされない。WDDM 2.0以上が必須要件となったWindows 11 requirements - What's new in Windows | Microsoft Learn。

 WDDM 1.1 
Windows 7では、新バージョンのWDDM 1.1がサポートされたWhat's new for Windows 7 display drivers (WDDM 1.1) - Windows drivers | Microsoft Learn。
 BitBltやClearTypeフォント描画などGDI描画への支援の追加実装するかどうかはオプション扱いであり、またネイティブにサポートされるわけではなく、基本的にDirect2D経由での実装となる。
 ビデオオーバーレイへの対応
 OpenGL ICDのための強化Supporting OpenGL Enhancements - Windows drivers | Microsoft Learn
 異なるベンダーのGPUの同時利用に対応ASCII.jp：DirectX 10.1をベースにするWindows 7 (2/2)｜あなたの知らないWindows

テストおよびソースコード管理の複雑さを低減するため、WDDM 1.1ドライバーインターフェイスにはWindows Vistaとの後方互換性があり、（SP2およびプラットフォーム更新プログラムを適用する前の）WDDM 1.0しかサポートしていないWindows Vistaで使用することも可能である。またその場合、単純にWDDM 1.0ドライバーとして動作する。

2009年10月、Windows Vistaに対して「Windows Vista 用のプラットフォーム更新プログラム（KB971644）」が配信された。このアップデートによりWindows VistaでもWDDM 1.1へとアップデートされたMS、Windows Vistaのグラフィック機能をWindows 7相当へ強化するパッチを配布開始 - 窓の杜。DirectX診断ツールでもWDDM 1.1の表記が確認できるVistaにWindows7の新機能、WDDM1.1とDirectX11が搭載される - ぼくんちのTV 別館が、GDIはソフトウェアレンダリングであるなど、一部の動作に差異はあるdoes windows vista support WDDM 1.1? - Microsoft Community。

WDDM 1.1のドライバは、Windows 11以降のOSではサポートされない。WDDM 2.0以上が必須要件となった。

 WDDM 1.2 
Windows 8では、WDDM 1.2がサポートされた。

ビデオメモリのより効率的な利用、Direct3D 11.1のサポートなどが追加されているWDDM 1.2 features - Windows drivers | Microsoft LearnDXGI 1.2 improvements - Win32 apps | Microsoft Learn。

WDDM 1.2には必須機能とオプション機能があるが、ドライバーがWDDM 1.2の必須機能をすべて実装していない場合、ベース（ソフトウェア実装）のMicrosoft Basic Display Driver (MSBDD) にフォールバックされるWDDM 1.2 driver enforcement - Windows drivers | Microsoft LearnMicrosoft Basic Display Driver - Windows drivers | Microsoft LearnChanges in DX9 legacy hardware support - Win32 apps | Microsoft Learn。

なお、Windows 7 SP1およびWindows Server 2008 R2 SP1に対して、「Windows 7 SP1 および Windows Server 2008 R2 SP1 用のプラットフォーム更新プログラム（KB2670838）」を適用することでDirect3D 11.1やDirect2D 1.1などの一部機能が使えるようになるが、ドライバーモデルがWDDM 1.2対応になるわけではないDirectX 11.1 and Windows 7 | Games for Windows and the DirectX SDK blogPlatform Update for Windows 7 - Win32 apps | Microsoft Docs。

WDDM 1.2のドライバは、Windows 11以降のOSではサポートされない。WDDM 2.0以上が必須要件となった。

 WDDM 1.3 
Windows 8.1では、WDDM 1.3がサポートされた。

タイル化されたリソース（）や、Direct3Dレンダリングパフォーマンスの改善、Direct3D 11.2のサポートなどが追加されているWhat's new for Windows 8.1 display drivers (WDDM 1.3) - Windows drivers | Microsoft Learn。

また、Miracastのサポートもオプションとして追加されたSupporting Miracast wireless display drivers - Windows drivers | Microsoft Learn。Windows 8.1やWindows 10でMiracast機能を利用するにはWDDM 1.3以降に対応したドライバが必要になる。

WDDM 1.3のドライバは、Windows 11以降のOSではサポートされない。WDDM 2.0以上が必須要件となった。

 WDDM 2.0 
Windows 10では、WDDM 2.0がサポートされた。

Direct3D 11.3およびDirect3D 12のサポートなどが追加されている。また、GpuMmuGpuMmu model - Windows drivers | Microsoft LearnおよびIoMmuIoMmu model - Windows drivers | Microsoft Learnと呼ばれる2つの仮想アドレッシングモデルを持つGPU仮想メモリ機能などをサポートする。なお、この仮想メモリ機能はかつて 2006にて"WDDM v2"の機能として発表された"Windows Display Driver Model (WDDM) v2 And Beyond", Steve Pronovost, Microsoft, Henry Moreton, NVIDIA, Tim Kelley, ATIが、実際にWDDM 1.0の後継としてWindows 7に搭載されたWDDM 1.1では実現していなかった。

 WDDM 2.1 
Windows 10 Anniversary Update (version 1607) では、WDDM 2.1がサポートされた。

同時にDirect3D 12およびDXGI 1.5の更新も行なわれ、シェーダーモデル6.0のサポート、およびUWPアプリケーションにおける可変リフレッシュレートのサポートVariable refresh rate displays - Win32 apps | Microsoft Learnなどが追加される。

 WDDM 2.2 

Windows 10 Creators Update (version 1703) では、WDDM 2.2がサポートされた。

Windows Mixed Realityの仮想/拡張/複合現実の立体視レンダリングのサポートなどが追加された。

 WDDM 2.3 

Windows 10 Fall Creators Update (version 1709) では、WDDM 2.3がサポートされた。

 WDDM 2.4 

Windows 10 April 2018 Update (version 1803) では、WDDM 2.4がサポートされた。

 WDDM 2.5 

Windows 10 October 2018 Update (version 1809) では、WDDM 2.5がサポートされた。

 WDDM 2.6 

Windows 10 May 2019 Update (version 1903) では、WDDM 2.6がサポートされた。

 WDDM 2.7 

Windows 10 May 2020 Update (version 2004) では、WDDM 2.7がサポートされた。

 WDDM 2.9 

 WDDM 3.0 

 WDDM 3.1 

 WDDM 3.2 

 DXGI 
DXGI (DirectX Graphics Infrastructure) は、DirectX 10 (Direct3D 10) 以降で利用可能になる新しいグラフィックス共通基盤およびそのAPI集合である。カーネルモードドライバーやハードウェアとの通信といった低レベルのタスクを担当するDXGI overview - Win32 apps | Microsoft DocsDXGI の概要 | Microsoft Docs。

DXGIは、アダプター（グラフィックスカードあるいはリファレンスラスタライザーなど）やアウトプット（モニター）といったデバイス概念を抽象化する。さらに、以前のバージョンのDirect3Dでもおなじみとなっているダブルバッファリングシステムは、スワップチェーンと呼ばれる概念に集約される。

DXGIを導入することで、変化の頻繁なDirect3D APIやDirect2D APIによる実際のレンダリング部分と、変化の緩やかなデバイス通信部分を分離して考えることが可能となる。また、DXGI層を経由したDirect3DとDirect2Dの相互運用が可能となるDirect2D and Direct3D Interoperability Overview - Win32 apps | Microsoft Docs。そのほか、DirectComputeでは、DXGIアダプターの列挙によって、プライマリモニター出力に利用されるデフォルトアダプターだけでなく、セカンダリアダプターも統一的に分散コンピューティング用演算リソースとして活用することが可能である。

DXGIのバージョンは、WDDMおよびDirectXのバージョンとともにアップデートされている。例えばWDDM 1.1とDirectX 11をサポートするWindows 7には、DXGI 1.1ランタイムが導入される。Windows Vista SP2 Platform Updateでも、WDDM 1.1のサポートは完全ではないものの、DXGI 1.1ランタイムはDirectX 11ランタイムと同時にバックポートされているため、DXGI 1.1 API自体の使用は可能であるDirectX Graphics Infrastructure (DXGI) Best Practices - Windows applications | Microsoft Docs。

Windows 8にてDirectX 11.1に対応するDXGI 1.2が導入された。Windows 7 SP1 Platform Updateでも、WDDMのバージョンは1.1のままだが、DXGI 1.2ランタイムはDirectX 11.1ランタイムと同時にバックポートされており、一部のAPI機能が使える。

DirectX 11.2に対応するのはDXGI 1.3 (Windows 8.1以降)、そしてDirectX 11.3とDirectX 12に対応するのはDXGI 1.4 (Windows 10) となる。

Windows 10 November 2015 Update (version 1511, build 10586) にてDirectX 11.4とともにDXGI 1.5が導入されたWindows 10 SDK (November 2015) | Games for Windows and the DirectX SDK blog。

Windows 10 Creators Update (version 1703, build 15063) にてDXGI 1.6が導入されたWindows 10 Creators Update SDK | Games for Windows and the DirectX SDK blog。以降はDXGI自体のバージョン番号は1.6で据え置きのまま、Windows 10の機能更新リリースとともにDXGIにも機能が追加されているDXGI 1.6 improvements - Win32 apps | Microsoft Docs。

 脚注 

 注釈 

 出典 

 関連項目 

 マイクロソフトのAPIとフレームワークの一覧
 デバイスドライバ
 Windows Driver Model
 DirectX
 Direct3D
 Direct2D
 Quartz
 X Window System
 ダイレクト・レンダリング・インフラストラクチャ

 外部リンク 
 Windows Vista ディスプレイ ドライバ モデル
 Windows Vista のグラフィック API
 Windows Display Driver Model (WDDM) Design Guide (Windows Drivers)

ていすふれいとらいはもてる
Category:デバイスドライバ
Category:マルチメディアソフトウェア