Windows 7で採用される新しいディスプレイドライバモデルWDDM 1.1では、GPUを使った高速なGDI処理Direct2Dと、必要メモリサイズ量の削減を実現している。
Windows 7およびWindows Server 2008 R2向けの新しいディスプレイ・ドライバの仕様。従来のWindows Vista/Windows Server 2008向けディスプレイ・ドライバであるWDDM 1(WDDM v1)を改良したもの(Windows XP/Windows Server 2003向けのものはXPDMと呼ばれる。関連記事参照)。
WDDM 1.1の特徴としては次のようなものがある。
Windows 7/Windows Server 2008 R2ではWindows Vista/Windows Server 2008用のWDDMのドライバ(WDDM v1)も利用できるが、WDDM 1.1対応ドライバを利用することにより、Direct2Dによる高速な描画や、DWMの使用メモリ量の削減といったメリットがある。
Direct2Dは、Direct3D上にGDI/GDI+ API(2Dの描画API。以下単にGDI)を実装したものである。Windows 7+WDDM 1.1環境ではDirect2Dを使うことにより、高速なGDI(Graphics Device Interface)処理を実現している。
GDIは一般的なWindowsアプリケーションでよく使われる、直線や曲線、図形、文字の描画、スクロール(BitBlt処理)などを行うAPIである。3Dが普及する以前のグラフィックス・カードでは、このGDI処理をハードウェア・サポートして高速なウィンドウ・システムを実現していた。
だがWindows VistaのAero Glass環境では、グラフィックス・カードの持つGPUの機能を駆使してデスクトップを3Dで描画するようになったため、ハードウェアの持つGDI処理機能は使われなくなっていた(先のコラム参照)。3Dと2Dのアクセラレータはメカニズムがまったく異なるため、共存できないからだ。代わりにWindows VistaのAero Glass環境では、完全にソフトウェア(CPU)によってGDI描画を処理をしている。
このGDIをDirect3D上に実装し、再びハードウェア(GPU)上で処理することを可能にしたのがWDDM 1.1である。Windows 7ではDirect2Dを使うことにより、2Dの描画処理もグラフィックス・ドライバ+GPUで処理し、高速な描画を実現している。
DWMは、Aero Glassのデスクトップ画面を実現するためのウィンドウ・マネージャである。各アプリケーションの表示ウィンドウやデスクトップのパーツなどを3D空間上で合成し、2Dのデスクトップを実現している。枠や背景が透けて下のウィンドウが見えるのは、3D的に見ると、本当に後ろ側に配置されているからである。またフリップ3D機能([Windows]−[Tab]キーによるダイナミックな切り替え)は、3D空間中にウィンドウを斜めに重ねて配置することにより、ページをめくるようなアプリケーションの切り替えを実現している。
Windows Vistaにおけるこの仕組みの実現方法は次の通りである。まずアプリケーションのウィンドウ・サイズに相当するバッファを1つ用意し、すべての描画をこのバッファに対して行う(GDI描画命令を呼び出すと、CPUが処理して、このバッファに書き込む)。このバッファは実際には各アプリケーションの共有メモリ・アドレス空間内に配置されている。次にこのバッファを(共有メモリとしてアクセスして)DWMが集め、グラフィックス・カード上にビットマップ・データとして転送する。最後にグラフィックス・カードがそれらのビットマップを3Dモデルにテキスチャ・マッピングする。これが最終的なデスクトップ画面となる。
一度中間的なバッファを使って描画するのは、CPUが直接グラフィックス・カード上のバッファに書き込むのはコストが高いからだ(メイン・メモリへの書き込みと違い、時間がかかり、ペナルティが大きい)。
Windows 7+WDDM 1.1環境では共有メモリ上のバッファを使わず、アプリケーションのGDI描画命令をDirect2D APIとして実行している。これにより、中間的なバッファを使わず、グラフィックス・カード上のバッファに直接書き込むことが可能になった。またメモリを節約しながらも、GPUによる高速なGDI処理を実現している。
Windows Vista(もしくはWindows 7+WDDM 1)環境では、必ず中間的なウィンドウ・サイズに相当するバッファが必要となっていたが、これに必要なメモリ・サイズは決して少ないものではない。例えば1024×1024ドット程度のウィンドウ・サイズを持つアプリケーションの場合、必要なバッファ・サイズは約4Mbytesになる(1ピクセルあたり、RGB+アルファ・チャネルの4bytes)。このようなアプリケーションが50個あったとすると、これだけで4×50=200Mbytesとなる。Windows 7+WDDM 1.1ではこの200Mbytesが不要になり、それだけほかのアプリケーションで利用可能なメモリが増えることになる。実際にはDirect2Dのハードウェア・アクセラレーションによる恩恵もあり、Windows 7はWindows Vistaよりも軽快に利用できるようになっている。
「用語解説」
Copyright© Digital Advantage Corp. All Rights Reserved.