Windows Display Driver Model ( WDDM、[ 1 ]最初はLonghorn Display Driver ModelとしてLDDM、その後Windows Vistaの時代にはWVDDM ) は、Windows Vista以降のMicrosoft Windowsバージョンで動作するビデオカードドライバのグラフィックドライバアーキテクチャです。[ 2 ]
これは、以前のWindows 2000およびWindows XPディスプレイ ドライバー モデル XDDM/XPDM [ 3 ]の後継であり、グラフィックスのパフォーマンス向上、新しいグラフィックス機能、および安定性の向上を目的としています。[ 2 ] Windows Vista およびWindows 7のディスプレイ ドライバーは、WDDM または XDDM のいずれかに準拠することを選択できます。[ 4 ]しかし、Windows 8から XDDM が削除されたため、WDDM が統一オプションになりました。 [ 5 ] Windows 2000およびWindows XPでは、XDDM/XPDM はWDMに基づいています。
WDDMは、 Direct3D上で動作する合成ウィンドウマネージャであるデスクトップウィンドウマネージャを使用して、デスクトップとアプリケーションをレンダリングするために必要な機能を提供します。また、基本的なデバイス管理と作成に必要な新しいDXGIインターフェイスもサポートしています。WDDM仕様では、少なくともDirect3D 9に対応したビデオカードが必要であり、従来のDirect3Dアプリケーションを実行するには、ディスプレイドライバがDirect3D 9Exランタイム用のデバイスドライバインターフェイスを実装する必要があります。オプションで、 Direct3D 10以降のランタイムインターフェイスを実装することも可能です。
WDDMドライバは、以前のディスプレイドライバモデルでは一律に提供されていなかった機能領域を可能にします。これには以下が含まれます。
グラフィックスの文脈では、仮想化とは、個々のプロセス(ユーザーモード)が、コマンドストリームに偽造コマンドを挿入することによっても、隣接するプロセスのメモリを見ることができないことを意味します。WDDM ドライバは、ビデオ メモリを仮想化することを可能にし、[ 6 ]、ビデオ データをビデオ メモリからシステム RAM またはページ ファイルにページアウトします。使用可能なビデオ メモリがすべてのビデオ データとテクスチャを格納するのに不十分であることが判明した場合、現在使用されていないデータはシステム RAM またはディスクに移動されます。スワップアウトされたデータが必要になったときに、フェッチされます。仮想化は、以前のドライバ モデル(XP ドライバ モデルなど)でもある程度サポートされていましたが、ランタイム レベルで処理されるのではなく、ドライバの責任でした。
ランタイムは、同時グラフィックス コンテキストのスケジューリングを処理します。[ 7 ]コマンドの各リストは、 GPUによる実行のためにキューに入れられ、より重要なタスクが到着し、実行が開始されていない場合は、ランタイムによってプリエンプトされる可能性があります。これは、1 つのタスクを中断できないため、必要以上に時間がかかり、コンピュータの応答性が低下する可能性がある CPU のネイティブ スレッドとは異なります。ネイティブ スレッドとライト スレッド間の連携によるハイブリッド スケジューリングアルゴリズムにより、シームレスな並列処理が実現されます。スケジューリングは新しい概念ではありませんが、以前は個々のドライバ開発者の責任でした。WDDM は、GPU タスクの実行を制御することで、異なるベンダー間でエクスペリエンスを統一しようとしています。
Direct3Dグラフィックスサーフェスは、 2Dまたは3Dシーンのレンダリングに使用されるテクスチャ付きメッシュに関する情報を含むメモリ領域です。WDDMにより、 Direct3Dサーフェスをプロセス間で共有できます。[ 8 ]そのため、アプリケーションは、別のアプリケーションによって作成されたメッシュを、レンダリング中のシーンに組み込むことができます。WDDM以前は、プロセスをまたいでテクスチャを共有することは困難でした。新しいデバイスのために、ビデオメモリからシステムメモリにデータをコピーし、その後ビデオメモリに戻す必要があったためです。


WDDM ドライバーがハングアップしたり、障害が発生したりした場合、グラフィックス スタックはドライバーを再起動します。[ 2 ] [ 9 ]グラフィックス ハードウェアの障害が検知され、必要に応じてドライバーがリセットされます。
Windows XP のドライバーは、ハードウェア障害が発生した場合、ユーザーに報告するか、サイレントに復旧を試みるかのいずれかの方法で対処することができました。ディスプレイ ドライバーを安全に停止できる場合、Windows XP はディスプレイ ドライバーのクラッシュを警告すると同時にビデオ ドライバーを無効にし、画面解像度を 640x480、色数を 16 色に下げることがあります。WDDM ドライバーの場合、画面解像度はほとんどの場合影響を受けません。すべてのハードウェア障害によってドライバーがリセットされ、ポップアップでユーザーに通知されるため、ベンダーを問わず動作が統一されます。
従来のドライバはカーネルモードで完全に実装されていましたが、WDDMは部分的にユーザーモードで実装されています。ユーザーモード領域で回復不能なエラーが発生した場合、従来のドライバモデルのようにブルースクリーンエラーが発生するのではなく、せいぜいアプリケーションが予期せず終了するだけです。
WDDMでは、再起動を必要とせずにグラフィックハードウェアをリセットしたり、ユーザーがドライバを更新したりすることもできます。[ 2 ]
新しいドライバ モデルでは、固定機能パイプラインが 2.0シェーダーに変換されるため、グラフィックス ハードウェアが少なくとも Shader Model 2.0 をサポートしている必要があります。しかし、2009 年の時点で、Microsoft によると、Windows Vista を実行しているハードウェアのうち XDDM を使用しているのはわずか 1 ~ 2 パーセントで、残りはすでに WDDM に対応しています。 [ 10 ]また、他のハードウェア機能も必要となるため、 Intel GMA 900など、SM 2.0 をサポートするハードウェアの中にはWDDM 認証に合格しないものもあります。[ 11 ]
WDDM ドライバー モデル バージョン 1.0 の制限事項の 1 つは、マルチ アダプター、マルチ モニター構成で複数のドライバーをサポートしていないことです。マルチ モニター システムでモニターに電力を供給するグラフィック アダプターが複数ある場合、両方のアダプターで同じ WDDM ドライバーを使用する必要があります。複数のドライバーを使用すると、Windows はそのうちの 1 つを無効にします。[ 12 ]これは、Windows Vista が Windows "Longhorn" というコードネームで呼ばれていた頃の制限事項です。[ 13 ] WDDM 1.1 にはこの制限事項はありません。[ 14 ]
WDDM 1.0/1.1 では、以前はドライバーで処理されていたスパンニング モード (デスクトップを 2 つのモニターにまたがって引き伸ばす) などの一部のモードは許可されていません[ 15 ] [ 16 ]ただし、デュアル ビューは引き続き利用可能です。[ 12 ] [ 17 ]
Windowsディスプレイドライバモデル(DWM)が実現する主要なシナリオの一つが、デスクトップウィンドウマネージャ( DWM)です。DWMによって管理されるデスクトップおよびアプリケーションウィンドウはDirect3Dアプリケーションであるため、開いているウィンドウの数は必要なビデオメモリ量に直接影響します。開いているウィンドウ数に制限がないため、利用可能なビデオメモリが不足し、仮想化が必要になる場合があります。DWMが最終的なデスクトップに構成するウィンドウの内容は異なるプロセスによって生成されるため、プロセス間のサーフェス共有が必要です。また、DWMが管理するデスクトップ上でDWMと並行して他のDirectXアプリケーションが実行される可能性があるため、それらのアプリケーションはGPUに共有アクセスできなければならず、スケジューリングが必要になります。
これはWindows VistaにおけるMicrosoftのコンポジットデスクトップの実装には当てはまりますが、一方で、コンポジットデスクトップは理論的には期待どおりに動作するために新しいディスプレイドライバモデルを必要とするわけではありません。Windows Vista以前にも、Quartz、Compiz、WindowFXなどの他のプラットフォームでコンポジットデスクトップの実装は成功していました。Microsoftが試みたアプローチは、WDDMの機能とパフォーマンスを標準化することで、複数のベンダーの異なるGPU間で統一されたエクスペリエンスを確保することでした。他のドライバモデルに欠けているソフトウェア機能は、拡張機能によって、あるいはより制限の少ない、または単に異なるドライバモデルを採用することで、問題にならないようにすることができました。
Windows Vistaでは、パフォーマンスの向上、信頼性の向上、 HDCPなどの新技術のサポートを目的とした新しいディスプレイドライバアーキテクチャとしてWDDM 1.0が導入されました。停電時の安定性を高めるために休止状態とスリープモードの機能を組み合わせたハイブリッドスリープもWDDMを必要とします。[ 2 ]
Windows 7 は WDDM 1.1 と呼ばれる WDDM への主要な追加機能をサポートしています。この新バージョンの詳細はWinHEC 2008 で発表されました。新機能には以下が含まれます。[ 10 ]
Windows 7 では、 GDI および Direct2D/DirectWrite 操作のハードウェア アクセラレーションによりメモリ使用量が削減されます。これは、Windows Vista のように DWM コンポジット エンジンが GDI/GDI+ で使用されるすべてのサーフェスのシステム メモリ コピーを保持する必要がなくなったためです。[ 23 ] [ 24 ] [ 25 ]
DXGI 1.1、Direct3D 11、Direct2D、DirectWriteはWindows Vistaプラットフォームアップデートで利用可能になりましたが、VistaのGDI/GDI+は引き続きソフトウェアレンダリングに依存しており[ 26 ] 、デスクトップウィンドウマネージャは引き続きDirect3D 9Exを使用しています[ 27 ] 。
WDDM 1.1 ドライバーは WDDM 1.0 仕様との下位互換性があります。1.0 および 1.1 ドライバーはどちらも、プラットフォーム アップデートの有無にかかわらず Windows Vista で使用できます。[ 10 ]
Windows 8にはWDDM 1.2 [ 28 ] [ 29 ]とDXGI 1.2 [ 29 ] [ 30 ]が含まれています。新機能はBuild 2011カンファレンスで初めてプレビューされ、パフォーマンスの向上、立体視3Dレンダリングおよびビデオ再生のサポートなどが含まれています。
その他の主な機能には、より細かい粒度(DMA バッファ、プリミティブ、三角形、ピクセル、または命令レベル)での GPU のプリエンプティブ マルチタスク、 [ 31 ]メモリ フットプリントの削減、リソース共有の改善、タイムアウト検出と回復の高速化などがあります。 16 ビット カラー サーフェス フォーマット (565、5551、4444) は Windows 8 で必須であり、Direct3D 11 Video は、8、10、および 16 ビット精度の YUV 4:4:4/4:2:2/4:2:0/4:1:1ビデオ フォーマット、および 4 ビットと 8 ビットのパレット フォーマットをサポートしています。[ 32 ]
WDDM 1.2 は、表示専用およびレンダリング専用の WDDM ドライバーをサポートしています。また、Microsoft Basic Display Driver [ 33 ]およびMicrosoft Basic Render Driver はWARPベースであり、カーネルモードVGAドライバーに取って代わりました。
WDDM 1.2 は Direct3D 11 ビデオ アクセラレーション (D3D11VA) をサポートしており、 DXVA2デコーダとEVRレンダラーはどちらもDirect3D 11に基づいています。[ 34 ] WDDM 1.2 より前は、DXVA2 デコーダと EVR レンダラーはどちらも Direct3D 9 に基づいています。
Windows 8では、DWMはWDDM 1.2ドライバーを使用してDirect2D 11およびDirect3D 11を利用できます。
WDDM 1.0/1.1 では、「バッチ キュー」の粒度を使用した基本的なタスク スケジューリングしか許可されていません。マルチタスクの改善、高速なコンテキスト スイッチング、仮想メモリのサポートは、当初はWinHEC 2006で発表された WDDM 2.0 および WDDM 2.1 という仮称のバージョンで期待されていました。[ 35 ] [ 36 ] [ 37 ]
Windows 8.1には WDDM 1.3 [ 38 ]と DXGI 1.3 [ 39 ]が含まれています。新機能には、DXGI アダプタのメモリ使用量のトリミング、マルチプレーンオーバーレイ、オーバーラップするスワップチェーンとスワップチェーンのスケーリング、スワップチェーン用のバックバッファサブ領域の選択、低遅延のスワップチェーン表示機能が含まれます。ドライバ機能の追加には、ワイヤレスディスプレイ ( Miracast )、YUVフォーマット範囲、クロスアダプタリソース、GPU エンジン列挙機能が含まれます。グラフィックスカーネルのパフォーマンスが向上しました。
Windows 10には WDDM 2.0 が含まれています。これは、仮想メモリのアドレッシングをサポートする GPU のカーネルモード ドライバーのワークロードを大幅に削減し、ユーザーモード ドライバーでマルチスレッド並列処理を可能にして CPU 使用率を低下させるように設計されています。[ 40 ] [ 41 ] [ 42 ] [ 43 ] [ 44 ]また、Windows 10 には DXGI 1.4 も含まれています。[ 45 ]
Build 2014で発表されたDirect3D 12 APIは、WDDM 2.0を必要とします。この新しいAPIは、自動的なリソース管理とパイプライン管理タスクを廃止し、開発者がアダプタのメモリとレンダリング状態を完全に低レベルで制御できるようにします。
Windows 8.1とWindows Phoneのディスプレイドライバモデルは、Windows 10の統一モデルに統合されました。[ 46 ]
新しいメモリ モデルが実装され、各 GPU にプロセスごとの仮想アドレス空間が割り当てられるようになりました。これにより、 WDDM 2.0 でGPU 仮想メモリとGPU メモリ ページングが可能になりました。[ 47 ]必要なグラフィックス ハードウェアの場合、ビデオ メモリの直接アドレッシングは WDDMv2 で引き続きサポートされますが、これはレガシー ケースとみなされます。IHV は仮想アドレッシングをサポートする新しいハードウェアを開発することが期待されています。この新しいメモリ モデルを有効にするために、DDI に大幅な変更が加えられました。
Windows 10 Anniversary Update (バージョン 1607) には、シェーダー モデル 6.0 (機能レベル12_0 および 12_1に必須) をサポートする WDDM 2.1 [ 48 ]と、 ITU-T Rec. 2100 / Rec.2020で定義された10 ビットの高ダイナミック レンジ、広色域フォーマットであるHDR10 [ 49 ]および可変リフレッシュ レートをサポートする DXGI 1.5 が含まれています。[ 50 ]
Windows 10 Creators Update (バージョン 1703) には、Windows Mixed Realityプラットフォームの立体視レンダリングによる仮想現実、拡張現実、複合現実向けに調整された WDDM 2.2と DXGI 1.6 が含まれています。[ 51 ]
Windows 10 Fall Creators Update (バージョン 1709) には WDDM 2.3 が含まれています。以下は、Windows 10 バージョン 1709 の Windows ディスプレイ ドライバー開発の新機能の一覧です。[ 52 ]
Windows 10 April 2018 Update (バージョン 1803) には WDDM 2.4 が含まれています。Windows 10 バージョン 1803 のディスプレイ ドライバー開発の更新には、次の機能が含まれています[ 54 ]。:
Windows 10 October 2018 Update (バージョン 1809) には WDDM 2.5 が含まれています。[ 56 ] Windows 10 バージョン 1809 のディスプレイ ドライバー開発の更新には、次の機能が含まれています。[ 57 ]
Windows 10 May 2019 Update (バージョン 1903) には WDDM 2.6 が含まれています。Windows 10 バージョン 1903 のディスプレイ ドライバー開発の更新には、次の機能が含まれています。[ 60 ]
Windows 10 May 2020 Update [ 62 ] (バージョン 2004) には WDDM 2.7 が含まれています。Windows 10 バージョン 2004 のディスプレイ ドライバー開発の更新には、次の機能が含まれています。[ 63 ]
Windows 10 Insider Preview ManganeseにはWDDM 2.8が含まれていましたが、それをサポートするドライバーが公に実証されたことはなく、「Iron」および「Cobalt」の開発リリースではスキップされました。
Windows 10 Insider Preview「Iron」のWDDM 2.9は、Windows Subsystem for Linux 2(WSL 2)[ 73 ]へのGPUハードウェアアクセラレーションのサポート、および機能レベル12_2 [ 74 ]とHLSLシェーダーモデル6.6 [ 75 ]のサポートをもたらします。
Windows 11 RTM Final Retail リリースには WDDM 3.0 [ 76 ] [ 77 ]が含まれており、Windows Subsystem for Linux [ 78 ]および Windows DWM のグラフィックス アーキテクチャが改善され、次の機能が追加されています。[ 79 ]
Windows 11 2022 Update (バージョン 22H2) には WDDM 3.1 が含まれています。[ 85 ] [ 86 ]
Windows 11 2024 Update (バージョン 24H2) には WDDM 3.2 が含まれています。[ 90 ]
および VGA ドライバーは、Windows 8 以降のバージョンではコンパイルされません。
もう1つの大きな変更点: LDDMでは一度に1つのディスプレイドライバーしか使用できません。複数のディスプレイアダプターは引き続き使用できますが、それらは1つのドライバーを共有する必要があります。つまり、同じメーカーのものでなければなりません。これは妥当な制限のように思えます。
{{cite web}}: CS1メンテナンス: アーカイブサービスは非推奨になりました (リンク)