第5章 Windows 8を支える機能たち - 描画能力の基盤となる「DirectX 11.1」とDWMの扱い

まずは図375~376をご覧いただきたい。Windows 7およびWindows 8の「パフォーマンスオプション」ダイアログだが、オプション項目が異なることにお気付きだろうか。具体的には<Aeroプレビューを有効にする><ウィンドウとボタンに視覚スタイルを使用する><デスクトップコンポジションを有効にする><透明感を有効にする>が削除され、<プレビューを有効にする>が追加。<タスクバーとスタートメニューでアニメーションを表示する>は<タスクバーでアニメーションを表示する>はスタートメニュー廃止に伴い改称されている(図375~376)。

図375 Windows 7の「パフォーマンスオプション」ダイアログ

図376 Windows 8の「パフォーマンスオプション」ダイアログ

注目すべきは<デスクトップコンポジションを有効にする>が廃止されている点だ。Windows Vista以降のユーザーはご存じのとおり、デスクトップコンポジションはDWM(Desktop Windows Manager)の一機能であり、GPUのメモリ上で描画内容を合成してからディスプレイなどに描画する方式を指す。基本的にWindows 8におけるDWMに大きな変化はない。

だが、技術資料を確認すると、DWMの有無を制御するAPI「DwmEnableComposition」が非推奨に切り替わっている。そのため、冒頭のオプション項目が廃止された。また、その他のオプション項目はAero Glassやスタートメニューの廃止に伴う変更と思われる。このDWMと直結するのがWDDM(Windows Display Driver Model)。ビデオドライバーに分類され、Windows Vista以降に導入された枠組みである。

Windows Vistaは1.0。Windows 7では1.1とバージョンを繰り返し、Windows 8は1.2にバージョンアップ。前述したReclaiming Memoryと同じくビデオメモリを再利用する機能や、GPUに対する実行プロセスを一時的に中断するGPU preemption(プリエンプション)機能を新搭載。ただし、DMA(Direct Memory Access)パケットに対する無効化機能は備わっていない。この他にもDirect3D 11.0を用いたビデオ再生の改善や、前述したXPSのラスター化にGPUを利用する機能も追加されている(図377~378)。

図377 対応するGPUを搭載していれば、WDDM 1.2が使用可能になる

図378 DWWM 1.2がサポートする主な機能(Windows Display Driver Model Enhancements in Windows Developer Previewより)

これらの描画機能を支えるのが、DirectX(ダイレクトエックス)。ゲームやマルチメディア用のAPI(Application Programming Interface:簡潔にプログラムを記述するためのインタフェース)として、Windows OSと共に進化してきた。Windows 7やWindows Vista Service Pack 2では、DirectX 11.0という機能を大幅に向上させたバージョンを搭載しているが、Windows 8に用いられるのはDirectX 11.1というマイナーバージョンアップ版。当初はパフォーマンスの向上は次バージョンとなるDirectX 12の役割と言われていたが、Windows 8のパフォーマンス向上にも一役買っているという。

グラフィックチームのグループプログラムマネージャーであるRob Copeland(ロブ・コープランド)氏は、Building Windows 8で「Windows 8におけるグラフィック機能の向上は各所に反映されている」と述べ、Windowsストアアプリで使用するテキストやグラフ、記号などの描画パフォーマンスを向上させるため、DirectWriteが対応。同社ではWindows 7とWindows 8の描画速度を測定し、約二倍のパフォーマンス向上を確認したという(図379)。

図379 文字描画スピードをWindows 7とWindows 8で比較。平均すると二倍程度のスピードアップにつながっている

この他にも、空間におかれた立体モデルの座標をスクリーン座標に変換するジオメトリ処理も向上している。動的な二次元ビットマップ画像を描画するためのHTML5 Canvasや、二次元ベクター画像描画時のSVG(Scalable Vector Graphics)の技術を取り込み、WindowsストアアプリやInternet Explorer 10のWebページ表示機能を向上させた。内部的には、ポリゴンの隙間が重ならないように単純な複数の図形に分割するTessellation(テッセレーション)の機能向上も図られているものの、エンドユーザーから見れば単純に"速くなった"と捉えて構わないだろう(図380~381)。

図380 単純な図形のレンダリングスピードを数値化したグラフ。四倍程度の向上が確認できる

図381 複雑なSVGファイルの描画スピードを数値化したグラフ。こちらも三倍程度の向上が確認できる

この他にもあらゆる面でパフォーマンスの向上を実現している。Windows 8の従来のデスクトップOSとして使い続けるユーザーにとって興味深いのは、JPEG形式などの画像ファイルを描画する際のスピードが改善している点。Copeland氏が行ったデモ動画を見ると、Windows 7とWindows 8で同一の画像ファイルの表示スピード比較では、前者が64枚の画像を表示させるのに7秒ほどかかっているのに対し、Windows 8は4秒ほどで完了している。この他にも動画ではテキスト描画速度やシェープ処理の速度を比較するデモが行われ、DirectXの更新が全体的な機能向上につながっているのは確実だ(図382)。

図382 Windows 7とWindows 8の画像ファイルの表示要した時間を比較した動画から抜粋。Windows 7が約7秒に対し、Windows 8は約4秒で処理を終えている

これらの恩恵を享受するには、DirectX 11.1対応のGPUを用意しなければならず、NVIDIAであればGeForce GTX 600シリーズ、AMDならRadeon HD 7xxxシリーズのGPUが必要となる。これら高性能GPUカードを用意するのは少々面倒だが、描画パフォーマンスの向上を求めるユーザーはハードウェアのアップグレードも考慮すべきだろう(図383)。

図383 筆者の使用するGPUでは、DirectX 11.0までしかサポートされていなかった