Windows Display Driver Model
Windows Display Driver Model(ウィンドウズ・ディスプレイ・ドライバ・モデル、WDDM)とは、GPU用デバイスドライバの枠組みである。
Windows Vistaで最初に導入され、Direct3D 9ExやDirect3D 10以降のDirect3Dは、WDDMに対応するよう設計されている。
DirectX 9までのバージョンにおいては、DirectXランタイムおよびデバイスドライバ層の設計がシングルタスク前提となっており、GPGPUや同時に複数の3Dアプリケーションを安全かつ安定的に動作させることが困難になってきた。そのため、Windows Vistaのリリースに伴い大幅に設計を変更し、マルチスレッドに対応させ安定度も向上させるべく設計された新しいドライバモデルがWDDMである。WDDM・DWMにより、Windows AeroではOSのデスクトップの描画自体にビデオカードなどのGPUを活用したハードウェアアクセラレーションを使用することができ、結果としてCPUの負荷を軽減することができるようになる。
GPUのスケジューリングやVRAMの割り当ての仮想化で、複数のアプリケーションが互いを意識することなく資源を扱えるようになっている。
WDDMではドライバソフトウェアがカーネルモードとユーザーモードに分かれ、不正なドライバ制御などでシステムがクラッシュを起こしにくい設計となっている。
ディスプレイドライバがフリーズしたとしても、Windowsカーネルが検出し、OSの再起動無しにGPUを初期化して、ディスプレイの表示を復活できるようになっている。
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を使用するためである。
Windows 8以降のOSでは、XDDM/XPDMはサポートされなくなり、使用できなくなった。
Windows Vistaでサポートされた最初のWDDMである。
Windows 7以降のOSでも、引き続きWDDM 1.0のドライバを使用することは可能である。ただしその場合、WDDM 1.1以降で追加された機能は利用できない。
Windows 7では、新バージョンのWDDM 1.1がサポートされた。
OpenGL ICDのための強化
テストおよびソースコード管理の複雑さを低減するため、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へとアップデートされた。DirectX診断ツールでもWDDM 1.1の表記が確認できるが、GDIはソフトウェアレンダリングであるなど、一部の動作に差異はある。
Windows 8では、WDDM 1.2がサポートされた。
ビデオメモリのより効率的な利用、Direct3D 11.1のサポートなどが追加されている 。
なお、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対応になるわけではない。
Windows 8.1では、WDDM 1.3がサポートされた。
タイル化されたリソース(メガテクスチャ)や、Direct3Dレンダリングパフォーマンスの改善、Direct3D 11.2のサポートなどが行なわれている。
また、Miracastのサポートも追加され、Windows 8.1やWindows 10でMiracast機能を利用するにはWDDM 1.3以降に対応したドライバが必要になる。
Windows 10では、WDDM 2.0がサポートされた。
Direct3D 11.3およびDirect3D 12のサポートなどが行なわれる。また、GpuMmuおよびIoMmuと呼ばれる2つの仮想アドレッシングモデルを持つGPU仮想メモリ機能などをサポートする。なお、この仮想メモリ機能はかつてWinHEC 2006にて"WDDM v2"の機能として発表されたが、実際にWDDM 1.0の後継としてWindows 7に搭載されたWDDM 1.1では実現していなかった。
Windows 10 Anniversary Update (version 1607) では、WDDM 2.1がサポートされた。
同時にDirect3D 12およびDXGI 1.5の更新も行なわれ、シェーダーモデル6.0のサポート、およびUWPアプリケーションにおける可変リフレッシュレートのサポートなどが追加される。
Windows 10 Creators Update (version 1703) では、WDDM 2.2がサポートされた。
Windows Mixed Realityの仮想/拡張/複合現実の立体視レンダリングのサポートなどが追加された。
Windows 10 Fall Creators Update (version 1709) では、WDDM 2.3がサポートされた。
Windows 10 April 2018 Update (version 1803) では、WDDM 2.4がサポートされた。
Windows 10 October 2018 Update (version 1809) では、WDDM 2.5がサポートされた。
Windows 10 May 2019 Update (version 1903) では、WDDM 2.6がサポートされた。
Windows 10 May 2020 Update (version 2004) では、WDDM 2.7がサポートされた。
DXGI (DirectX Graphics Infrastructure) は、DirectX 10 (Direct3D 10) 以降で利用可能になる新しいグラフィックス共通基盤およびそのAPI集合である。カーネルモードドライバーやハードウェアとの通信といった低レベルのタスクを担当する。
DXGIは、アダプター(グラフィックスカードあるいはリファレンスラスタライザーなど)やアウトプット(モニター)といったデバイス概念を抽象化する。さらに、以前のバージョンのDirect3Dでもおなじみとなっているダブルバッファリングシステムは、スワップチェーンと呼ばれる概念に集約される。
DXGIを導入することで、変化の頻繁なDirect3D APIやDirect2D APIによる実際のレンダリング部分と、変化の緩やかなデバイス通信部分を分離して考えることが可能となる。また、DXGI層を経由したDirect3DとDirect2Dの相互運用が可能となる。そのほか、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自体の使用は可能である。
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 Creators Update (version 1703, build 15063) にてDXGI 1.6が導入された。以降はDXGI自体のバージョン番号は1.6で据え置きのまま、Windows 10の機能更新リリースとともにDXGIにも機能が追加されている。