「Windows Display Driver Model」の版間の差分
Ienoienosan (会話 | 投稿記録) WDDM 2.1の追加。 |
m Bot作業依頼#Cite webの和書引数追加 |
||
(13人の利用者による、間の30版が非表示) | |||
1行目: | 1行目: | ||
'''Windows Display Driver Model'''(ウィンドウズ・ディスプレイ・ドライバ・モデル、'''WDDM''')とは、 |
'''Windows Display Driver Model'''(ウィンドウズ・ディスプレイ・ドライバ・モデル、'''WDDM''')とは、[[Graphics Processing Unit|GPU]]用[[デバイスドライバ]](グラフィックスドライバ)の枠組みである。 |
||
2006年にリリースされた[[Microsoft Windows Vista|Windows Vista]]で最初に導入され、Direct3D 9ExやDirect3D 10以降の[[Direct3D]]は、WDDMに対応するよう設計されている。 |
|||
Windows Vistaでは、WDDMではなく、Windows 2000/XPのドライバモデル (XPDM) によるディスプレイドライバも使用可能である。ただし、その場合、[[Desktop Window Manager]] (DWM)、ひいては[[Windows Aero]]テーマが使用できない。DWMがDirect3D 9Exを使用するためである。Windows Server 2008やWindows 7でも同様である。 |
|||
== 概要 == |
== 概要 == |
||
DirectX |
[[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 の回復| |
: ディスプレイドライバがフリーズしたとしても、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>。 |
|||
== バージョン == |
== バージョン == |
||
{{節stub}} |
|||
=== 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> と呼んで区別するようになった。 |
|||
Windows Vista以降のOSでも引き続きXDDM/XPDMドライバを使用することは可能であるが、その場合、[[Desktop Window Manager]] (DWM)、ひいては[[Windows Aero]]テーマが使用できない。DWMがDirect3D 9Exを使用するためである。 |
|||
[[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 === |
|||
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以降で追加された機能は利用できない。 |
|||
=== WDDM 1.1 === |
=== WDDM 1.1 === |
||
[[Microsoft Windows 7|Windows 7]]では、新バージョンのWDDM 1.1が |
[[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>[ |
* 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 |
* 異なるベンダーの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ドライバーインターフェイスには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>。 |
|||
なお、Windows Vistaにおいては、2009年10月のWindows Updateで「Windows Vista 用のプラットフォーム更新プログラム(KB971644)」の配布が始まり、これを導入することでWDDM 1.1対応になるとの誤解があるが、DirectX 11やDirect2Dなど、Windows 7に標準実装されている機能の一部がバックポートされるだけであり、ドライバモデルそのものがWDDM 1.1になるわけではない。従って、バックポートされた機能を使わないアプリケーションの動作は特に変化はないので注意が必要である<ref>HOTFIX配布サイトにおいても、WDDM 1.1対応とは一切謳われておらず、DxDiagでもWDDM 1.0扱いのままである。</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>。 |
|||
=== WDDM 1.2 === |
=== WDDM 1.2 === |
||
[[Microsoft Windows 8|Windows 8]]では、WDDM 1.2がサポートされた。 |
|||
[[Microsoft Windows 8|Windows 8]]では、WDDM 1.2にアップデートされた。また、XPDM (XDDM) は廃止されている<ref>[http://msdn.microsoft.com/en-us/library/windows/hardware/dn653369.aspx WDDM 1.2 and Windows 8 (Windows Drivers)]</ref>。ビデオメモリのより効率的な利用、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>。 |
|||
なお、Windows 7 SP1およびWindows Server 2008 R2 SP1において、「Platform Update for Windows 7 Service Pack 1 and Windows Server 2008 R2 Service Pack 1 (KB 2670838)」(Windows 7 SP1 および Windows Server 2008 R2 SP1 用のプラットフォーム更新プログラム)を適用することで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>。 |
|||
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>[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>[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]]のサポートもオプションとして追加された<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>が、実際にWindows 7に搭載されたWDDM 1.1では実現していなかった。 |
|||
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」に関する言及はない。加筆する際は出典の内容と時期をよく吟味すること。 --> |
|||
{{節stub}} |
|||
=== WDDM 2.1 === |
=== WDDM 2.1 === |
||
Windows 10 Anniversary Update (version 1607) では、WDDM 2.1がサポートされた。 |
|||
Windows 10 Anniversary Update (version 1607)では、WDDM 2.1にアップデートされた。Shader Model 6.0のサポート(要Feature level12_0、12_1対応GPU)、 DXGI 1.5及び[[ユニバーサル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 === |
|||
{{出典の明記|section=1|date=2019-04}} |
|||
Windows 10 Creators Update (version 1703) では、WDDM 2.2がサポートされた。 |
|||
[[Windows Mixed Reality]]の仮想/拡張/複合現実の立体視レンダリングのサポートなどが追加された。 |
|||
=== WDDM 2.3 === |
|||
{{出典の明記|section=1|date=2021-04}} |
|||
{{節stub}} |
|||
Windows 10 Fall Creators Update (version 1709) では、WDDM 2.3がサポートされた。 |
|||
=== WDDM 2.4 === |
|||
{{出典の明記|section=1|date=2021-04}} |
|||
{{節stub}} |
|||
Windows 10 April 2018 Update (version 1803) では、WDDM 2.4がサポートされた。 |
|||
=== WDDM 2.5 === |
|||
{{出典の明記|section=1|date=2021-04}} |
|||
{{節stub}} |
|||
Windows 10 October 2018 Update (version 1809) では、WDDM 2.5がサポートされた。 |
|||
=== WDDM 2.6 === |
|||
{{出典の明記|section=1|date=2021-04}} |
|||
{{節stub}} |
|||
Windows 10 May 2019 Update (version 1903) では、WDDM 2.6がサポートされた。 |
|||
=== WDDM 2.7 === |
|||
{{出典の明記|section=1|date=2021-04}} |
|||
{{節stub}} |
|||
Windows 10 May 2020 Update (version 2004) では、WDDM 2.7がサポートされた。 |
|||
== DXGI == |
== DXGI == |
||
DXGI (DirectX Graphics Infrastructure) は、[[DirectX]] 10 ([[Direct3D]] 10) 以降で利用可能になる新しいグラフィックス共通基盤およびそのAPI集合である。カーネルモードドライバーやハードウェアとの通信といった低レベルのタスクを担当する<ref>[https:// |
DXGI (DirectX Graphics Infrastructure) は、[[DirectX]] 10 ([[Direct3D]] 10) 以降で利用可能になる新しいグラフィックス共通基盤およびそのAPI集合である。カーネルモードドライバーやハードウェアとの通信といった低レベルのタスクを担当する<ref>[https://docs.microsoft.com/en-us/windows/win32/direct3ddxgi/d3d10-graphics-programming-guide-dxgi DXGI overview - Win32 apps | Microsoft Docs]</ref><ref>[https://docs.microsoft.com/ja-jp/previous-versions/direct-x/ee415671(v=vs.85) DXGI の概要 | Microsoft Docs]</ref>。 |
||
DXGIは、アダプター([[グラフィックスカード]]あるいはリファレンスラスタライザーなど)やアウトプット([[モニター]])といったデバイス概念を抽象化する。さらに、以前のバージョンの[[Direct3D]]でもおなじみとなっている[[ダブルバッファリング]]システムは、スワップチェーンと呼ばれる概念に集約される。 |
|||
DXGIを導入することで、変化の頻繁な[[Direct3D]] APIや[[Direct2D]] APIによる実際のレンダリング部分と、変化の緩やかなデバイス通信部分を分離して考えることが可能となる。また、DXGI層を経由したDirect3DとDirect2Dの相互運用が可能となる<ref>[https://docs.microsoft.com/en-us/windows/win32/direct2d/direct2d-and-direct3d-interoperation-overview Direct2D and Direct3D Interoperability Overview - Win32 apps | Microsoft Docs]</ref>。そのほか、[[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自体の使用は可能である<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機能が使える。 |
|||
DXGIは、アダプター([[グラフィックスカード]]あるいはリファレンスラスタライザーなど)やアウトプット([[モニター]])といったデバイス概念を抽象化する。 |
|||
さらに、以前のバージョンの[[Direct3D]]でもおなじみとなっている[[ダブルバッファリング]]システムは、スワップチェーンと呼ばれる概念に集約される。 |
|||
<!-- |
|||
DXGIを導入することで、変化の頻繁な[[Direct3D]] APIや[[Direct2D]] APIによる実際のレンダリング部分と、変化の緩やかなデバイス通信部分を分離して考えることが可能となる。また、DXGI層を経由したDirect3DとDirect2Dの相互運用が可能となる<ref>[https://msdn.microsoft.com/ja-jp/library/windows/desktop/dd370966.aspx Direct2D と Direct3D の相互運用性の概要 (Windows)]</ref>。そのほか、[[DirectCompute]]では、DXGIアダプターの列挙によって、プライマリモニター出力に利用されるデフォルトアダプターだけでなく、セカンダリアダプターも統一的に分散コンピューティング用演算リソースとして活用することが可能である。 |
|||
ここで述べている「対応」は導入時期やペア的な意味での「対応」に近い。"DirectX"はDXGIをも包括している。 |
|||
なお、上位のDXGIは下位のDirect3D 10/11/12もサポートする。 |
|||
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.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>。 |
|||
DXGIのバージョンは、WDDMおよびDirectXのバージョンとともにアップデートされている。例えばWDDM 1.1とDirectX 11をサポートするWindows 7には、DXGI 1.1ランタイムが導入される。ただし、Windows Vista SP2 Platform Updateでも、(WDDMバージョンは1.0のままであるものの)DXGI 1.1ランタイムはDirectX 11ランタイムと同時にバックポートされているため、DXGI 1.1 API自体の使用は可能である<ref>[https://msdn.microsoft.com/ja-jp/library/ee417025.aspx DirectX Graphics Infrastructure (DXGI):ベスト プラクティス]</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>。 |
|||
DirectX 11.1に対応するのはDXGI 1.2、DirectX 11.2に対応するのはDXGI 1.3、そしてDirectX 11.3とDirectX 12に対応するのはDXGI 1.4及び1.5となる。 |
|||
== 脚注 == |
== 脚注 == |
||
{{脚注ヘルプ}} |
{{脚注ヘルプ}} |
||
=== 注釈 === |
|||
{{Notelist}} |
|||
=== 出典 === |
|||
{{Reflist}} |
{{Reflist}} |
||
<!-- == 参考文献 == --> |
|||
== 関連項目 == |
== 関連項目 == |
||
64行目: | 143行目: | ||
* [[Direct3D]] |
* [[Direct3D]] |
||
* [[Direct2D]] |
* [[Direct2D]] |
||
* [[Quartz]] |
|||
* [[X Window System]] |
|||
* [[ダイレクト・レンダリング・インフラストラクチャ]] |
|||
== 外部リンク == |
== 外部リンク == |
||
75行目: | 157行目: | ||
{{DEFAULTSORT:ういんとうすていすふれいとらいはもてる}} |
{{DEFAULTSORT:ういんとうすていすふれいとらいはもてる}} |
||
[[Category:Microsoft Windows|ていすふれいとらいはもてる]] |
[[Category:Microsoft Windows|ていすふれいとらいはもてる]] |
||
[[Category:デバイスドライバ]] |
|||
[[Category:マルチメディアソフトウェア]] |
[[Category:マルチメディアソフトウェア]] |
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]。
- BitBltやClearTypeフォント描画など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]。
脚注[編集]
注釈[編集]
出典[編集]
- ^ “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
- ダイレクト・レンダリング・インフラストラクチャ