Windows Display Driver Model

GPU用デバイスドライバの枠組み

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を初期化して、ディスプレイの表示を復活できるようになっている[1][2]

並列処理性能の高い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が使われる[3]

バージョン

XDDM/XPDM

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

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

Windows 8以降のOSでは、XDDM/XPDMはサポートされなくなり、使用できなくなった[6]。WDDM 1.0以上が必須要件となった。また、Windows 8以降ではDWMが常に有効になる[7]

Windows 11では、WDDM 2.0以上が必須要件となった[8]

WDDM 1.0

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

Windows 7以降のOSでも、引き続きWDDM 1.0のドライバを使用することは可能である[9][10][11]。ただしその場合、WDDM 1.1以降で追加された機能は利用できない。

WDDM 1.1

Windows 7では、新バージョンのWDDM 1.1がサポートされた[12]

  • BitBltClearTypeフォント描画などGDI描画への支援の追加[13]
  • ビデオオーバーレイへの対応
  • OpenGL ICDのための強化[14]
  • 異なるベンダーのGPUの同時利用に対応[15][注釈 1]

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

2009年10月、Windows Vistaに対して「Windows Vista 用のプラットフォーム更新プログラム(KB971644)」が配信された。このアップデートによりWindows VistaでもWDDM 1.1へとアップデートされた[17]。DirectX診断ツールでもWDDM 1.1の表記が確認できる[18]が、GDIはソフトウェアレンダリングであるなど、一部の動作に差異はある[19]

WDDM 1.2

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

ビデオメモリのより効率的な利用、Direct3D 11.1のサポートなどが追加されている[20][21]

WDDM 1.2には必須機能とオプション機能があるが、ドライバーがWDDM 1.2の必須機能をすべて実装していない場合、WARP英語版ベース(ソフトウェア実装)のMicrosoft Basic Display Driver (MSBDD) にフォールバックされる[22][23][24]

なお、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対応になるわけではない[25][26]

WDDM 1.3

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

タイル化されたリソース(メガテクスチャ英語版)や、Direct3Dレンダリングパフォーマンスの改善、Direct3D 11.2のサポートなどが追加されている[27]

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

WDDM 2.0

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

Direct3D 11.3およびDirect3D 12のサポートなどが追加されている。また、GpuMmu[30]およびIoMmu[31]と呼ばれる2つの仮想アドレッシングモデルを持つGPU仮想メモリ機能などをサポートする。なお、この仮想メモリ機能はかつてWinHEC英語版 2006にて"WDDM v2"の機能として発表された[32]が、実際に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のサポート[注釈 2]、およびUWPアプリケーションにおける可変リフレッシュレートのサポート[33]などが追加される。

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がサポートされた。

DXGI

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

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

DXGIを導入することで、変化の頻繁なDirect3D APIやDirect2D APIによる実際のレンダリング部分と、変化の緩やかなデバイス通信部分を分離して考えることが可能となる。また、DXGI層を経由したDirect3DとDirect2Dの相互運用が可能となる[36]。そのほか、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自体の使用は可能である[37]

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が導入された[38]

Windows 10 Creators Update (version 1703, build 15063) にてDXGI 1.6が導入された[39]。以降はDXGI自体のバージョン番号は1.6で据え置きのまま、Windows 10の機能更新リリースとともにDXGIにも機能が追加されている[40]

脚注

注釈

出典

関連項目

外部リンク

🔥 Top keywords: メインページ宮崎麗果特別:検索豊後水道松本忠久土居志央梨若葉竜也能登半島地震 (2024年)田中雄士長谷部誠井上道義The GazettE若林志穂服部百音黒木啓司REITA虎に翼平井理央出口夏希サーブ (盲導犬)三鷹事件セウォル号沈没事故白眞勲三淵嘉子高橋克也 (オウム真理教)ME:Iルーシー・ブラックマン事件佐藤ありさ杉咲花蜜谷浩弥水野真紀亀井亜紀子 (政治家)熊本地震 (2016年)水原一平井川意高中川安奈 (アナウンサー)内藤剛志いなば食品YOSHIKI