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が使われる。 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はサポートされなくなり、使用できなくなった。WDDM 1.0以上が必須要件となった。また、Windows 8以降ではDWMが常に有効になる。 Windows 11では、WDDM 2.0以上が必須要件となった。 Windows Vistaでサポートされた最初のWDDMである。 Windows 7以降のOSでも、引き続きWDDM 1.0のドライバを使用することは可能である。ただしその場合、WDDM 1.1以降で追加された機能は利用できない。 Windows 7では、新バージョンのWDDM 1.1がサポートされた。 BitBltやClearTypeフォント描画などGDI描画への支援の追加 ビデオオーバーレイへの対応 OpenGL ICDのための強化 異なるベンダーのGPUの同時利用に対応 テストおよびソースコード管理の複雑さを低減するため、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のサポートなどが追加されている。 WDDM 1.2には必須機能とオプション機能があるが、ドライバーがWDDM 1.2の必須機能をすべて実装していない場合、WARP（英語版）ベース（ソフトウェア実装）のMicrosoft Basic Display Driver (MSBDD) にフォールバックされる。 なお、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にも機能が追加されている。 [脚注の使い方] ^ WDDM 1.0では、同時に1つしかグラフィックスドライバをロードできない制約がある。このため、同じドライバを使うGPUならば、グレードを問わず混在させることは可能だが、ドライバが異なるGPUを混在させることはできない（プライマリ側が優先され、セカンダリ以降に装着されたGPUはドライバ読み込みエラーとなる）。なお、使用ドライバをXPDMで統一すれば混在させることは可能。 ^ Direct3D機能レベル12_0/12_1対応GPUが必要。 ^ “WDDM によるタイムアウトの検出と GPU の回復”. WHDC. マイクロソフト (2009年4月27日). 2009年6月29日時点のオリジナルよりアーカイブ。2009年6月6日閲覧。 ^ “Timeout detection and recovery (TDR) - Windows drivers” (英語). Microsoft Docs. マイクロソフト (2020年10月6日). 2021年4月4日閲覧。 ^ WPF and Direct3D9 interop | Microsoft Learn ^ “Windows 2000 Display Driver Model (XDDM) Design Guide - Windows drivers” (英語). Microsoft Docs. 2019年2月16日閲覧。 ^ “XPDM vs. WDDM - Windows applications” (英語). Microsoft Docs. 2019年2月16日閲覧。 ^ WDDM 1.2 and Windows 8 - Windows drivers | Microsoft Learn ^ Desktop Window Manager is always on - Win32 apps | Microsoft Learn ^ Windows 11 requirements - What's new in Windows | Microsoft Learn ^ WDDM 1.1（Windows Display Driver Model 1.1）：Windows Insider用語解説 - ＠IT ^ Windows 10 コンピュータシステムの仕様と要件を確認する方法 - Microsoft ^ How to Check Windows 10 Computer System Specs & Requirements - Microsoft ^ What's new for Windows 7 display drivers (WDDM 1.1) - Windows drivers | Microsoft Learn ^ 実装するかどうかはオプション扱いであり、またネイティブにサポートされるわけではなく、基本的にDirect2D経由での実装となる。 ^ Supporting OpenGL Enhancements - Windows drivers | Microsoft Learn ^ ASCII.jp：DirectX 10.1をベースにするWindows 7 (2/2)｜あなたの知らないWindows ^ “Graphics Guide for Windows 7 (A Guide for Hardware and System Manufacturers)” (2009年6月12日). 2021年4月5日閲覧。 “To reduce the complexity of testing, the Windows 7 WDDM v1.1 driver interfaces are backward compatible with Windows Vista. Therefore, IHVs that implement Windows 7 WDDM v1.1 driver features can integrate them into common driver source code and build a single driver that runs on both Windows 7 and Windows Vista. When installed on Windows Vista, such a driver simply acts as a WDDM v1 driver. When the same driver is installed on Windows 7, it can use the new WDDM v1.1 functionality.” ^ MS、Windows Vistaのグラフィック機能をWindows 7相当へ強化するパッチを配布開始 - 窓の杜 ^ VistaにWindows7の新機能、WDDM1.1とDirectX11が搭載される - ぼくんちのTV 別館 ^ does windows vista support WDDM 1.1? - Microsoft Community ^ WDDM 1.2 features - Windows drivers | Microsoft Learn ^ DXGI 1.2 improvements - Win32 apps | Microsoft Learn ^ WDDM 1.2 driver enforcement - Windows drivers | Microsoft Learn ^ Microsoft Basic Display Driver - Windows drivers | Microsoft Learn ^ Changes in DX9 legacy hardware support - Win32 apps | Microsoft Learn ^ DirectX 11.1 and Windows 7 | Games for Windows and the DirectX SDK blog ^ Platform Update for Windows 7 - Win32 apps | Microsoft Docs ^ What's new for Windows 8.1 display drivers (WDDM 1.3) - Windows drivers | Microsoft Learn ^ Supporting Miracast wireless display drivers - Windows drivers | Microsoft Learn ^ ““ワイヤレスディスプレイ”がWindows 10で実現、タブレットもディスプレイに？【本当にWindows 10って使えるの？】”. 窓の杜. 株式会社インプレス (2016年5月6日). 2019年2月23日閲覧。 ^ GpuMmu model - Windows drivers | Microsoft Learn ^ IoMmu model - Windows drivers | Microsoft Learn ^ "Windows Display Driver Model (WDDM) v2 And Beyond", Steve Pronovost, Microsoft, Henry Moreton, NVIDIA, Tim Kelley, ATI ^ Variable refresh rate displays - Win32 apps | Microsoft Learn ^ DXGI overview - Win32 apps | Microsoft Docs ^ DXGI の概要 | Microsoft Docs ^ Direct2D and Direct3D Interoperability Overview - Win32 apps | Microsoft Docs ^ DirectX Graphics Infrastructure (DXGI) Best Practices - Windows applications | Microsoft Docs ^ Windows 10 SDK (November 2015) | Games for Windows and the DirectX SDK blog ^ Windows 10 Creators Update SDK | Games for Windows and the DirectX SDK blog ^ 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) 表示 編集