Windows Internet Explorer 9

2010年に入ってから、GPUの性能を活用してレンダリング性能を引き上げるというのがブラウザ開発のひとつのホットトピックになっている。ChromeFirefoxもこの分野の開発を急いでおり、めまぐるしい勢いでレンダリング性能の向上を発表している。この分野に最初に大きなスポットライトをあて、そしてもっとも先行しているブラウザがある。IE9だ。

IE9はブラウザ内レンダリングからWindowsにおけるディスプレイの描画までの全行程でGPUのハードウェアアクセラレーション機能を活用している。Microsoftではこれを「フルハードウェアアクセラレーション」と呼び、特定の部分のみをH/Wアクセラレーションしているほかのブラウザと区別している。どういった方法でフルH/Wアクセラレーションを実現しているのかがThe Architecture of Full Hardware Acceleration of All Web Page Content - IEBlogで説明されている。どこでどういった技術を採用しているのかがわかり参考になる。

IE9では次の流れでレンダリングを実施しているという。

  1. 画像や動画をダウンロードしてデコードし、中間GPUバッファへ転送。
  2. CanvasやSVGなどの複雑な要素をダウンロードして処理を実施し、中間GPUバッファへ転送。
  3. シンプルなページ要素をWebページバッファへ直接描画。
  4. 中間GPUバッファとWebページバッファの合成を実施。
  5. Windows DWM経由でディスプレイへ描画。

利用している技術で分類すると、1番から3番までがコンテンツのレンダリング、4番がページの合成、5番がデスクトップの配置ということになるという。それぞれ次の技術を活用し、次のような効果があると説明されている。

  1. コンテンツレンダリング (1, 2, 3) - Direct2DおよびDirectWriteサブシステムを活用。よりなめらかなテキストおよびベクタグラフィックの描画が実施されるほか、テキスト、画像、背景、ボーダーなどほとんどの要素の表示性能が向上する。
  2. ページ合成 (4) - Direct3Dを使ってビットマークデータになったすべてのデータを合成。GPUによるH/Wアクセラレーション効果がもっとも見込まれやすい部分。GPUプライベートメモリに画像データがキャッシュされるため、画像の再描画がきわめて高速になる。
  3. デスクトップ配置 (5) - Windows 7およびVistaではDWM (Desktop Windows Manager)経由でGPUの機能を使ってディスプレイへの描画が実施される。IE9はレンダリングにDirectXの技術のみを採用しているためDWMとの連携に優れている。

今のところIE9はほかのブラウザと比較して次のような特徴があるという。

  • DirectX技術という単一のサブシステムを使って描画を実施しており、複数の方法を混在させているほかのブラウザよりも描画が安定している。
  • すべての描画処理にGPUを活用することで、その間のCPUの負荷がきわめて低い。ほかのブラウザはGPUを活用している間もCPUが使われる傾向にあり、かつ、どの程度使われるかはケースバイケースで違っている。
  • Windowsプラットフォーム(特にIE9はWindows 7とVistaのみを対象としている)に特化すればよく、ネイティブ機能を十分に活用できている。

なお、複数のプラットフォームに対応するには描画レイヤになんらかの抽象化レイヤを設ける必要がある。The Architecture of Full Hardware Acceleration of All Web Page Contentでは複数のOSに対応しているほかのブラウザではそれを避けることができないとし、Windowsのみに対応すればよくネイティブAPIを直接利用できるIE9の優位性を主張している。しかしその点に関してはほかのブラウザの関係者から誤った指摘であるという意見もある。

現状はどうあれ、描画処理のすべてをGPUに回すというフルH/Wアクセラレーションのアプローチは今後のブラウザの方向性を示すもので、Firefox、Chrome、Safari、Operaなども最終的に同様の方向で開発を進めていくことになると考えられる。