コンテンツにスキップ

「Windows Display Driver Model」の版間の差分

出典: フリー百科事典『ウィキペディア(Wikipedia)』
削除された内容 追加された内容
→‎DXGI: リンク切れになっていたURLの代替を記述。
m Bot作業依頼#Cite webの和書引数追加
 
(2人の利用者による、間の9版が非表示)
1行目: 1行目:
'''Windows Display Driver Model'''(ウィンドウズ・ディスプレイ・ドライバ・モデル、'''WDDM''')とは、[[Graphics Processing Unit|GPU]]用[[デバイスドライバ]]の枠組みである。
'''Windows Display Driver Model'''(ウィンドウズ・ディスプレイ・ドライバ・モデル、'''WDDM''')とは、[[Graphics Processing Unit|GPU]]用[[デバイスドライバ]](グラフィックスドライバ)の枠組みである。


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


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


; GPUの仮想化
; GPUの仮想化
11行目: 11行目:
: WDDMではドライバソフトウェアがカーネルモードとユーザーモードに分かれ、不正なドライバ制御などでシステムがクラッシュを起こしにくい設計となっている。
: WDDMではドライバソフトウェアがカーネルモードとユーザーモードに分かれ、不正なドライバ制御などでシステムがクラッシュを起こしにくい設計となっている。
; GPUの回復
; GPUの回復
: ディスプレイドライバがフリーズしたとしても、Windowsカーネルが検出し、OSの再起動無しにGPUを初期化して、ディスプレイの表示を復活できるようになっている<ref>{{Cite web|date=2009-04-27|url=http://www.microsoft.com/japan/whdc/device/display/wddm_timeout.mspx|title=WDDM によるタイムアウトの検出と GPU の回復|website=WHDC|publisher=マイクロソフト|accessdate=2009-06-06|language=ja-jp|archiveurl=https://web.archive.org/web/20090629165322/http://www.microsoft.com/japan/whdc/device/display/wddm_timeout.mspx|archivedate=2009-06-29|deadlinkdate=2021-04-04}}</ref><ref>{{Cite web|date=2020-10-06|url=https://docs.microsoft.com/en-us/windows-hardware/drivers/display/timeout-detection-and-recovery|title=Timeout detection and recovery (TDR) - Windows drivers|website=Microsoft Docs|publisher=マイクロソフト|accessdate=2021-04-04|language=en-us}}</ref>。
: ディスプレイドライバがフリーズしたとしても、Windowsカーネルが検出し、OSの再起動無しにGPUを初期化して、ディスプレイの表示を復活できるようになっている<ref>{{Cite web|和書|date=2009-04-27|url=http://www.microsoft.com/japan/whdc/device/display/wddm_timeout.mspx|title=WDDM によるタイムアウトの検出と GPU の回復|website=WHDC|publisher=マイクロソフト|accessdate=2009-06-06|language=ja-jp|archiveurl=https://web.archive.org/web/20090629165322/http://www.microsoft.com/japan/whdc/device/display/wddm_timeout.mspx|archivedate=2009-06-29|deadlinkdate=2021-04-04}}</ref><ref>{{Cite web|date=2020-10-06|url=https://docs.microsoft.com/en-us/windows-hardware/drivers/display/timeout-detection-and-recovery|title=Timeout detection and recovery (TDR) - Windows drivers|website=Microsoft Docs|publisher=マイクロソフト|accessdate=2021-04-04|language=en-us}}</ref>。

並列処理性能の高い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が使われる<ref>[https://learn.microsoft.com/en-us/dotnet/desktop/wpf/advanced/wpf-and-direct3d9-interoperation?view=netframeworkdesktop-4.8 WPF and Direct3D9 interop | Microsoft Learn]</ref>。


== バージョン ==
== バージョン ==
18行目: 22行目:


=== XDDM/XPDM ===
=== XDDM/XPDM ===
WDDM発表後、従来のビデオカード用デバイスドライバの枠組みをWindows 2000 Display Driver Model(XDDM)<ref>{{Cite web|title=Windows 2000 Display Driver Model (XDDM) Design Guide - Windows drivers|url=https://docs.microsoft.com/en-us/windows-hardware/drivers/display/windows-2000-display-driver-model-design-guide|website=Microsoft Docs|accessdate=2019-02-16|language=en-us}}</ref>あるいはWindows XP Display Driver Model (XPDM) <ref>{{Cite web|title=XPDM vs. WDDM - Windows applications|url=https://docs.microsoft.com/en-us/windows/desktop/direct3d9/xpdm-vs-wddm|website=Microsoft Docs|accessdate=2019-02-16|language=en-us}}</ref>と呼んで区別するようになった。
WDDM発表後、従来のグラフィックスドライバの枠組みをWindows 2000 Display Driver Model (XDDM)<ref>{{Cite web|title=Windows 2000 Display Driver Model (XDDM) Design Guide - Windows drivers|url=https://docs.microsoft.com/en-us/windows-hardware/drivers/display/windows-2000-display-driver-model-design-guide|website=Microsoft Docs|accessdate=2019-02-16|language=en-us}}</ref> あるいはWindows XP Display Driver Model (XPDM)<ref>{{Cite web|title=XPDM vs. WDDM - Windows applications|url=https://docs.microsoft.com/en-us/windows/desktop/direct3d9/xpdm-vs-wddm|website=Microsoft Docs|accessdate=2019-02-16|language=en-us}}</ref> と呼んで区別するようになった。


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


Windows 8以降のOSでは、XDDM/XPDMはサポートされなくなり、使用できなくなった<ref>[http://msdn.microsoft.com/en-us/library/windows/hardware/dn653369.aspx WDDM 1.2 and Windows 8 (Windows Drivers)]</ref>。
[[Windows 8]]以降のOSでは、XDDM/XPDMはサポートされなくなり、使用できなくなった<ref>[https://learn.microsoft.com/en-us/windows-hardware/drivers/display/wddm-in-windows-8 WDDM 1.2 and Windows 8 - Windows drivers | Microsoft Learn]</ref>。WDDM 1.0以上が必須要件となった。また、Windows 8以降ではDWMが常に有効になる<ref>[https://learn.microsoft.com/en-us/windows/win32/w8cookbook/desktop-window-manager-is-always-on Desktop Window Manager is always on - Win32 apps | Microsoft Learn]</ref>。

[[Windows 11]]では、WDDM 2.0以上が必須要件となった<ref>[https://learn.microsoft.com/en-us/windows/whats-new/windows-11-requirements Windows 11 requirements - What's new in Windows | Microsoft Learn]</ref>。


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


Windows 7以降のOSでも、引き続きWDDM 1.0のドライバを使用することは可能である<ref>[https://www.atmarkit.co.jp/ait/articles/0908/31/news152.html WDDM 1.1(Windows Display Driver Model 1.1):Windows Insider用語解説 - @IT]</ref><ref>[https://www.microsoft.com/ja-jp/windows/windows-10-specifications Windows 10 コンピュータシステムの仕様と要件を確認する方法 - Microsoft]</ref><ref>[https://www.microsoft.com/en-us/windows/windows-10-specifications How to Check Windows 10 Computer System Specs & Requirements - Microsoft]</ref>。ただしその場合、WDDM 1.1以降で追加された機能は利用できない。
Windows 7以降のOSでも引き続きWDDM 1.0のドライバを使用することは可能である。


=== WDDM 1.1 ===
=== WDDM 1.1 ===
[[Microsoft Windows 7|Windows 7]]では、新バージョンのWDDM 1.1がサポートされた<ref>[http://msdn.microsoft.com/en-us/library/windows/hardware/dn528564.aspx What's new for Windows 7 display drivers (WDDM 1.1) (Windows Drivers)]</ref>。
[[Microsoft Windows 7|Windows 7]]では、新バージョンのWDDM 1.1がサポートされた<ref>[https://learn.microsoft.com/en-us/windows-hardware/drivers/display/what-s-new-for-windows-7-display-drivers--wddm-1-1- What's new for Windows 7 display drivers (WDDM 1.1) - Windows drivers | Microsoft Learn]</ref>。
* [[Bit Block Transfer|BitBlt]]や[[ClearType]]フォント描画など[[Graphics Device Interface|GDI]]描画への支援の追加<ref>実装するかどうかはオプション扱いであり、またネイティブにサポートされるわけではなく、基本的にDirect2D経由での実装となる。</ref>
* [[Bit Block Transfer|BitBlt]]や[[ClearType]]フォント描画など[[Graphics Device Interface|GDI]]描画への支援の追加<ref>実装するかどうかはオプション扱いであり、またネイティブにサポートされるわけではなく、基本的にDirect2D経由での実装となる。</ref>
* ビデオオーバーレイへの対応
* ビデオオーバーレイへの対応
* OpenGL ICDのための強化<ref>[http://msdn.microsoft.com/en-us/library/windows/hardware/ff569877.aspx Supporting OpenGL Enhancements (Windows Drivers)]</ref>
* OpenGL ICDのための強化<ref>[https://learn.microsoft.com/en-us/windows-hardware/drivers/display/supporting-opengl-enhancements Supporting OpenGL Enhancements - Windows drivers | Microsoft Learn]</ref>
* 異なるベンダーのGPUを混在して利用可能なった<ref>[http://ascii.jp/elem/000/000/438/438414/index-2.html ASCII.jp:DirectX 10.1をベースにするWindows 7 (2/2)|あなたの知らないWindows]</ref> <ref>WDDM 1.0では、同時に1つしかグラフィックドライバをロードできない制約がある。このため、同じドライバを使うGPUならば、グレードを問わず混在ることは可能だが、ドライバが異なるGPUを混在ることはできない(プライマリ側が優先され、セカンダリ以降に装着されたGPUはドライバ読込みエラーとなる)。なお、使用ドライバをXPDMで統一すれば混在ることは可能。</ref>
* 異なるベンダーのGPUの同時利用に対応<ref>[http://ascii.jp/elem/000/000/438/438414/index-2.html ASCII.jp:DirectX 10.1をベースにするWindows 7 (2/2)|あなたの知らないWindows]</ref>{{efn|WDDM 1.0では、同時に1つしかグラフィックドライバをロードできない制約がある。このため、同じドライバを使うGPUならば、グレードを問わず混在させることは可能だが、ドライバが異なるGPUを混在させることはできない(プライマリ側が優先され、セカンダリ以降に装着されたGPUはドライバ読込みエラーとなる)。なお、使用ドライバをXPDMで統一すれば混在させることは可能。}}


ドライバとして下位互換性があり、WDDM 1.1ドイバWDDM 1.0しかサポートしていないWindows Vistaで使用することも可能である<ref>[http://download.microsoft.com/download/7/E/7/7E7662CF-CBEA-470B-A97E-CE7CE0D98DC2/GraphicsGuideWin7.docx][null Graphics Guide for Windows 7]</ref>。
テストおよびソースコード管理の複雑さを低減するため、WDDM 1.1ドライバーインターフェイスにWindows Vistaとの後方互換性があり、(SP2およびプットフォーム更新プログラム適用する前の)WDDM 1.0しかサポートしていないWindows Vistaで使用することも可能である。またその場合、単純にWDDM 1.0ドライバーとして動作する<ref>{{Cite web|url=https://download.microsoft.com/download/7/E/7/7E7662CF-CBEA-470B-A97E-CE7CE0D98DC2/GraphicsGuideWin7.docx|title=Graphics Guide for Windows 7 (A Guide for Hardware and System Manufacturers)|date=2009-06-12|quote=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.|accessdate=2021-04-05}}</ref>。


2009年10月、Windows Vistaに対して「Windows Vista 用のプラットフォーム更新プログラム(KB971644)」が配信された。このアップデートによりWindows VistaでもWDDM 1.1へとアップデートされた<ref>[https://forest.watch.impress.co.jp/docs/news/325089.html MS、Windows Vistaのグラフィック機能をWindows 7相当へ強化するパッチを配布開始 - 窓の杜]</ref>。DirectX診断ツールでもWDDM 1.1の表記が確認できる<ref>[https://freesoft.tvbok.com/old-tips/windows/other/vista_kb971644.html VistaにWindows7の新機能、WDDM1.1とDirectX11が搭載される - ぼくんちのTV 別館]</ref>が、GDIはソフトウェアレンダリングであるなど、一部の動作に差異はある<ref>[https://answers.microsoft.com/en-us/windows/forum/windows_vista-hardware/does-windows-vista-support-wddm-11/8a6b4fd7-fd6d-4ba2-9ba4-654d8833cb6a does windows vista support WDDM 1.1? - Microsoft Community]</ref>。
2009年10月、Windows Vistaに対して「Windows Vista 用のプラットフォーム更新プログラム(KB971644)」が配信された。このアップデートによりWindows VistaでもWDDM 1.1へとアップデートされた<ref>[https://forest.watch.impress.co.jp/docs/news/325089.html MS、Windows Vistaのグラフィック機能をWindows 7相当へ強化するパッチを配布開始 - 窓の杜]</ref>。DirectX診断ツールでもWDDM 1.1の表記が確認できる<ref>[https://freesoft.tvbok.com/old-tips/windows/other/vista_kb971644.html VistaにWindows7の新機能、WDDM1.1とDirectX11が搭載される - ぼくんちのTV 別館]</ref>が、GDIはソフトウェアレンダリングであるなど、一部の動作に差異はある<ref>[https://answers.microsoft.com/en-us/windows/forum/windows_vista-hardware/does-windows-vista-support-wddm-11/8a6b4fd7-fd6d-4ba2-9ba4-654d8833cb6a does windows vista support WDDM 1.1? - Microsoft Community]</ref>。
43行目: 49行目:
[[Microsoft Windows 8|Windows 8]]では、WDDM 1.2がサポートされた。
[[Microsoft Windows 8|Windows 8]]では、WDDM 1.2がサポートされた。


ビデオメモリのより効率的な利用、Direct3D 11.1のサポートなどが追加されている<ref>[http://msdn.microsoft.com/en-us/library/windows/hardware/dn653373.aspx WDDM 1.2 features (Windows Drivers)]</ref> <ref>[http://msdn.microsoft.com/en-us/library/windows/desktop/hh404490.aspx DXGI 1.2 Improvements (Windows)]</ref>。
ビデオメモリのより効率的な利用、Direct3D 11.1のサポートなどが追加されている<ref>[https://learn.microsoft.com/en-us/windows-hardware/drivers/display/wddm-v1-2-features WDDM 1.2 features - Windows drivers | Microsoft Learn]</ref><ref>[https://learn.microsoft.com/en-us/windows/win32/direct3ddxgi/dxgi-1-2-improvements DXGI 1.2 improvements - Win32 apps | Microsoft Learn]</ref>。


WDDM 1.2には必須機能とオプション機能があるが、ドライバーがWDDM 1.2の必須機能をすべて実装していない場合、{{仮リンク|Windows Advanced Rasterization Platform|en|Windows Advanced Rasterization Platform|label=WARP}}ベース(ソフトウェア実装)のMicrosoft Basic Display Driver (MSBDD) にフォールバックされる<ref>[https://learn.microsoft.com/en-us/windows-hardware/drivers/display/wddm-v1-2-driver-enforcement WDDM 1.2 driver enforcement - Windows drivers | Microsoft Learn]</ref><ref>[https://learn.microsoft.com/en-us/windows-hardware/drivers/display/microsoft-basic-display-driver Microsoft Basic Display Driver - Windows drivers | Microsoft Learn]</ref><ref>[https://learn.microsoft.com/en-us/windows/win32/w8cookbook/changes-in-dx9-legacy-hardware-support Changes in DX9 legacy hardware support - Win32 apps | Microsoft Learn]</ref>。
なお、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対応になるわけではない<ref>[http://blogs.msdn.com/b/chuckw/archive/2012/11/14/directx-11-1-and-windows-7.aspx DirectX 11.1 and Windows 7 - Games for Windows and the DirectX SDK - Site Home - MSDN Blogs]</ref>。

なお、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対応になるわけではない<ref>[https://walbourn.github.io/directx-11-1-and-windows-7/ DirectX 11.1 and Windows 7 | Games for Windows and the DirectX SDK blog]</ref><ref>[https://docs.microsoft.com/en-us/windows/win32/direct3darticles/platform-update-for-windows-7 Platform Update for Windows 7 - Win32 apps | Microsoft Docs]</ref>。


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


タイル化されたリソース({{仮リンク|メガテクスチャ|en|MegaTexture}})や、Direct3Dレンダリングパフォーマンスの改善、Direct3D 11.2のサポートなどが行なわれている<ref>[http://msdn.microsoft.com/en-us/library/windows/hardware/dn265512.aspx What's new for Windows 8.1 display drivers (WDDM 1.3) (Windows Drivers)]</ref>。
タイル化されたリソース({{仮リンク|メガテクスチャ|en|MegaTexture}})や、Direct3Dレンダリングパフォーマンスの改善、Direct3D 11.2のサポートなどが追加されている<ref>[https://learn.microsoft.com/en-us/windows-hardware/drivers/display/what-s-new-for-windows-8-1-display-drivers--wddm-1-3- What's new for Windows 8.1 display drivers (WDDM 1.3) - Windows drivers | Microsoft Learn]</ref>。


また、[[Miracast]]のサポートも追加されWindows 8.1やWindows 10でMiracast機能を利用するにはWDDM 1.3以降に対応したドライバが必要になる<ref>{{Cite web|title=“ワイヤレスディスプレイ”がWindows 10で実現、タブレットもディスプレイに?【本当にWindows 10って使えるの?】|url=http://forest.watch.impress.co.jp/docs/serial/win10useful/755283.html|website=窓の杜|date=2016-05-06|accessdate=2019-02-23|language=ja|last=株式会社インプレス}}</ref>。
また、[[Miracast]]のサポートもオプションとして追加された<ref>[https://learn.microsoft.com/en-us/windows-hardware/drivers/display/wireless-displays--miracast- Supporting Miracast wireless display drivers - Windows drivers | Microsoft Learn]</ref>。Windows 8.1やWindows 10でMiracast機能を利用するにはWDDM 1.3以降に対応したドライバが必要になる<ref>{{Cite web|和書|title=“ワイヤレスディスプレイ”がWindows 10で実現、タブレットもディスプレイに?【本当にWindows 10って使えるの?】|url=https://forest.watch.impress.co.jp/docs/serial/win10useful/755283.html|website=窓の杜|date=2016-05-06|accessdate=2019-02-23|language=ja|publisher=株式会社インプレス}}</ref>。


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


Direct3D 11.3およびDirect3D 12のサポートなどが行なわれる。また、'''GpuMmu'''<ref>[https://msdn.microsoft.com/en-us/library/windows/hardware/dn894173.aspx GpuMmu model (Windows Drivers)]</ref>および'''IoMmu'''<ref>[https://msdn.microsoft.com/en-us/library/windows/hardware/dn894176.aspx IoMmu model (Windows Drivers)]</ref>と呼ばれる2つの仮想アドレッシングモデルを持つGPU仮想メモリ機能などをサポートする。なお、この仮想メモリ機能はかつて{{仮リンク|WinHEC|en|Windows Hardware Engineering Conference}} 2006にて"WDDM v2"の機能として発表された<ref>[http://download.microsoft.com/download/5/b/9/5b97017b-e28a-4bae-ba48-174cf47d23cd/PRI103_WH06.ppt "Windows Display Driver Model (WDDM) v2 And Beyond", Steve Pronovost, Microsoft, Henry Moreton, NVIDIA, Tim Kelley, ATI]</ref>が、実際にWDDM 1.0の後継としてWindows 7に搭載されたWDDM 1.1では実現していなかった。<!-- WinHEC 2006時点では「Windows 7」に関する言及はない。加筆する際は出典の内容と時期をよく吟味すること。 -->
Direct3D 11.3およびDirect3D 12のサポートなどが追加さている。また、'''GpuMmu'''<ref>[https://learn.microsoft.com/en-us/windows-hardware/drivers/display/gpummu-model GpuMmu model - Windows drivers | Microsoft Learn]</ref>および'''IoMmu'''<ref>[https://learn.microsoft.com/en-us/windows-hardware/drivers/display/iommu-model IoMmu model - Windows drivers | Microsoft Learn]</ref>と呼ばれる2つの仮想アドレッシングモデルを持つGPU仮想メモリ機能などをサポートする。なお、この仮想メモリ機能はかつて{{仮リンク|WinHEC|en|Windows Hardware Engineering Conference}} 2006にて"WDDM v2"の機能として発表された<ref>[http://download.microsoft.com/download/5/b/9/5b97017b-e28a-4bae-ba48-174cf47d23cd/PRI103_WH06.ppt "Windows Display Driver Model (WDDM) v2 And Beyond", Steve Pronovost, Microsoft, Henry Moreton, NVIDIA, Tim Kelley, ATI]</ref>が、実際にWDDM 1.0の後継としてWindows 7に搭載されたWDDM 1.1では実現していなかった。<!-- WinHEC 2006時点では「Windows 7」に関する言及はない。加筆する際は出典の内容と時期をよく吟味すること。 -->


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


同時にDirect3D 12およびDXGI 1.5の更新も行なわれ、[[シェーダーモデル]]6.0のサポート<ref>Direct3D機能レベル12_0/12_1対応GPUが必要。</ref>、および[[ユニバーサルWindowsプラットフォーム|UWP]]アプリケーションにおける可変リフレッシュレートのサポート<ref>[https://msdn.microsoft.com/en-us/library/windows/desktop/mt742104.aspx Variable refresh rate displays (Windows)]</ref>などが追加される。
同時にDirect3D 12およびDXGI 1.5の更新も行なわれ、[[シェーダーモデル]]6.0のサポート{{efn|Direct3D機能レベル12_0/12_1対応GPUが必要。}}、および[[ユニバーサルWindowsプラットフォーム|UWP]]アプリケーションにおける可変リフレッシュレートのサポート<ref>[https://learn.microsoft.com/en-us/windows/win32/direct3ddxgi/variable-refresh-rate-displays Variable refresh rate displays - Win32 apps | Microsoft Learn]</ref>などが追加される。


=== WDDM 2.2 ===
=== WDDM 2.2 ===
103行目: 111行目:


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自体の使用は可能である<ref>[https://docs.microsoft.com/en-us/windows/desktop/direct3darticles/dxgi-best-practices DirectX Graphics Infrastructure (DXGI) Best Practices - Windows applications | Microsoft Docs]</ref>。
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自体の使用は可能である<ref>[https://docs.microsoft.com/en-us/windows/desktop/direct3darticles/dxgi-best-practices DirectX Graphics Infrastructure (DXGI) Best Practices - Windows applications | Microsoft Docs]</ref>。

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


<!--
<!--
108行目: 118行目:
なお、上位のDXGIは下位のDirect3D 10/11/12もサポートする。
なお、上位のDXGIは下位のDirect3D 10/11/12もサポートする。
Windows 10 build 14393では、Direct3D 12やDXGI 1.5のAPIバージョン番号を変えずに更新・機能追加が行なわれるなど、対応が分かりづらくなっている(ID3D12Device1などの派生インターフェイスが追加され、"Direct3D 12.1"とも呼べる更新が行なわれているが、正式にアナウンスされている名称ではない)。
Windows 10 build 14393では、Direct3D 12やDXGI 1.5のAPIバージョン番号を変えずに更新・機能追加が行なわれるなど、対応が分かりづらくなっている(ID3D12Device1などの派生インターフェイスが追加され、"Direct3D 12.1"とも呼べる更新が行なわれているが、正式にアナウンスされている名称ではない)。
https://docs.microsoft.com/en-us/windows/win32/api/d3d12/nn-d3d12-id3d12device1
Windows 10 build 15063では、DirectX 11.4のAPIバージョン番号は変わっていないものの、ID3D11Device5が追加されている。
https://docs.microsoft.com/en-us/windows/win32/api/d3d11_4/nn-d3d11_4-id3d11device5
-->
-->
DirectX 11.1に対応するのはDXGI 1.2、DirectX 11.2に対応するのはDXGI 1.3、そしてDirectX 11.3とDirectX 12に対応するのはDXGI 1.4となる。
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が導入された<ref>[https://walbourn.github.io/windows-10-sdk-november-2015/ Windows 10 SDK (November 2015) | Games for Windows and the DirectX SDK blog]</ref>。
Windows 10 November 2015 Update (version 1511, build 10586) にてDirectX 11.4とともにDXGI 1.5が導入された<ref>[https://walbourn.github.io/windows-10-sdk-november-2015/ Windows 10 SDK (November 2015) | Games for Windows and the DirectX SDK blog]</ref>。


Windows 10 Creators Update (version 1703, build 15063) にてDXGI 1.6が導入された<ref>[https://walbourn.github.io/windows-10-creators-update-sdk/ Windows 10 Creators Update SDK | Games for Windows and the DirectX SDK blog]</ref>。
Windows 10 Creators Update (version 1703, build 15063) にてDXGI 1.6が導入された<ref>[https://walbourn.github.io/windows-10-creators-update-sdk/ Windows 10 Creators Update SDK | Games for Windows and the DirectX SDK blog]</ref>。以降はDXGI自体のバージョン番号は1.6で据え置きのまま、Windows 10の機能更新リリースとともにDXGIにも機能が追加されている<ref>[https://docs.microsoft.com/en-us/windows/win32/direct3ddxgi/dxgi-1-6-improvements DXGI 1.6 improvements - Win32 apps | Microsoft Docs]</ref>。


== 脚注 ==
== 脚注 ==
{{脚注ヘルプ}}
{{脚注ヘルプ}}
=== 注釈 ===
{{Notelist}}
=== 出典 ===
{{Reflist}}
{{Reflist}}
<!-- == 参考文献 == -->


== 関連項目 ==
== 関連項目 ==

2023年10月1日 (日) 08:11時点における最新版

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]

脚注[編集]

注釈[編集]

  1. ^ WDDM 1.0では、同時に1つしかグラフィックスドライバをロードできない制約がある。このため、同じドライバを使うGPUならば、グレードを問わず混在させることは可能だが、ドライバが異なるGPUを混在させることはできない(プライマリ側が優先され、セカンダリ以降に装着されたGPUはドライバ読み込みエラーとなる)。なお、使用ドライバをXPDMで統一すれば混在させることは可能。
  2. ^ Direct3D機能レベル12_0/12_1対応GPUが必要。

出典[編集]

  1. ^ WDDM によるタイムアウトの検出と GPU の回復”. WHDC. マイクロソフト (2009年4月27日). 2009年6月29日時点のオリジナルよりアーカイブ。2009年6月6日閲覧。
  2. ^ Timeout detection and recovery (TDR) - Windows drivers” (英語). Microsoft Docs. マイクロソフト (2020年10月6日). 2021年4月4日閲覧。
  3. ^ WPF and Direct3D9 interop | Microsoft Learn
  4. ^ Windows 2000 Display Driver Model (XDDM) Design Guide - Windows drivers” (英語). Microsoft Docs. 2019年2月16日閲覧。
  5. ^ XPDM vs. WDDM - Windows applications” (英語). Microsoft Docs. 2019年2月16日閲覧。
  6. ^ WDDM 1.2 and Windows 8 - Windows drivers | Microsoft Learn
  7. ^ Desktop Window Manager is always on - Win32 apps | Microsoft Learn
  8. ^ Windows 11 requirements - What's new in Windows | Microsoft Learn
  9. ^ WDDM 1.1(Windows Display Driver Model 1.1):Windows Insider用語解説 - @IT
  10. ^ Windows 10 コンピュータシステムの仕様と要件を確認する方法 - Microsoft
  11. ^ How to Check Windows 10 Computer System Specs & Requirements - Microsoft
  12. ^ What's new for Windows 7 display drivers (WDDM 1.1) - Windows drivers | Microsoft Learn
  13. ^ 実装するかどうかはオプション扱いであり、またネイティブにサポートされるわけではなく、基本的にDirect2D経由での実装となる。
  14. ^ Supporting OpenGL Enhancements - Windows drivers | Microsoft Learn
  15. ^ ASCII.jp:DirectX 10.1をベースにするWindows 7 (2/2)|あなたの知らないWindows
  16. ^ 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.”
  17. ^ MS、Windows Vistaのグラフィック機能をWindows 7相当へ強化するパッチを配布開始 - 窓の杜
  18. ^ VistaにWindows7の新機能、WDDM1.1とDirectX11が搭載される - ぼくんちのTV 別館
  19. ^ does windows vista support WDDM 1.1? - Microsoft Community
  20. ^ WDDM 1.2 features - Windows drivers | Microsoft Learn
  21. ^ DXGI 1.2 improvements - Win32 apps | Microsoft Learn
  22. ^ WDDM 1.2 driver enforcement - Windows drivers | Microsoft Learn
  23. ^ Microsoft Basic Display Driver - Windows drivers | Microsoft Learn
  24. ^ Changes in DX9 legacy hardware support - Win32 apps | Microsoft Learn
  25. ^ DirectX 11.1 and Windows 7 | Games for Windows and the DirectX SDK blog
  26. ^ Platform Update for Windows 7 - Win32 apps | Microsoft Docs
  27. ^ What's new for Windows 8.1 display drivers (WDDM 1.3) - Windows drivers | Microsoft Learn
  28. ^ Supporting Miracast wireless display drivers - Windows drivers | Microsoft Learn
  29. ^ “ワイヤレスディスプレイ”がWindows 10で実現、タブレットもディスプレイに?【本当にWindows 10って使えるの?】”. 窓の杜. 株式会社インプレス (2016年5月6日). 2019年2月23日閲覧。
  30. ^ GpuMmu model - Windows drivers | Microsoft Learn
  31. ^ IoMmu model - Windows drivers | Microsoft Learn
  32. ^ "Windows Display Driver Model (WDDM) v2 And Beyond", Steve Pronovost, Microsoft, Henry Moreton, NVIDIA, Tim Kelley, ATI
  33. ^ Variable refresh rate displays - Win32 apps | Microsoft Learn
  34. ^ DXGI overview - Win32 apps | Microsoft Docs
  35. ^ DXGI の概要 | Microsoft Docs
  36. ^ Direct2D and Direct3D Interoperability Overview - Win32 apps | Microsoft Docs
  37. ^ DirectX Graphics Infrastructure (DXGI) Best Practices - Windows applications | Microsoft Docs
  38. ^ Windows 10 SDK (November 2015) | Games for Windows and the DirectX SDK blog
  39. ^ Windows 10 Creators Update SDK | Games for Windows and the DirectX SDK blog
  40. ^ DXGI 1.6 improvements - Win32 apps | Microsoft Docs

関連項目[編集]

外部リンク[編集]