ブラウザのCanvasハードウェアアクセラレーションを軽く調べた

いまどきのブラウザはハードウェアアクセラレーションするのは当たり前。

とはいえ、すべての環境で有効になるわけではない。

いろいろと調べてみたところ、古いOSと古いハードではGPUの性能がよかろうと有効にならなかったりするみたい。

CPU内蔵の遅いGPUであっても最新のハードとOSを使えばばっちりきく。


というわけでブラウザ別に見ていく。対象はCanvasのみで。

IE9

OSがVista以降専用。ただし、垂直同期もきいていて非常に滑らかに動く。
ブラウザでCanvasを利用したゲームをしたいと思った場合、最有力だ。

CPU使用率はWindows7+1.6GHzのSandyBridge Celeronで手元のベンチマークで25%程度。
ハードウェアアクセラレーションはしっかりきいているようで、CTRL+マウスホイールで拡大縮小してもCPU仕様率は変わらない。

XPで動かないというのだけが癌。また、WebGLは未対応。

Firefox11

OSがXPでも動くのはメリット。
さほど古くないGPU/ドライバであればハードウェアアクセラレーション(HA)対応。
Windows7+1.6GHzのSandyBridge CeleronでCPU使用率5%。CanvasHA有効。WebGL有効。
XP+Wolfdale Core2Duo/3GHz + RadeonHD6570でCPU使用率15%。CanvasHA有効。WebGL有効。CPU使用率はOSの差か。
XP+Core duo/1.6GHz + GeForce GO 7400でCPU使用率15%。CanvasHA無効。WebGL無効。拡大縮小するとその描画範囲以上にすぐにCPU使用率が跳ね上がる。

Chrome

タイマーの精度がいいとかでアニメーションが綺麗に動く感じがメリット。

Windows7+1.6GHzのSandyBridge CeleronでCPU使用率30%。CanvasHA有効。WebGL有効。
XP+Wolfdale Core2Duo/3GHz + RadeonHD6570でCPU使用率10%。CanvasHA無効。WebGL有効。拡大縮小するとその描画エリアに応じてCPU負荷が増えていく。それでもCPU性能がいいため画面いっぱいに拡大しても60fps維持できていた。
XP+Core duo/1.6GHz + GeForce GO 7400でCPU使用率15%。CanvasHA無効。WebGL無効。そのほかのアクセラレーションも全部無効。

XPだとCanvasアクセラレーションは有効にならないみたい。そのかわり、WebGLCanvas以外のHTMLなどはアクセラレーションがきく。

まとめ

古いGPUだとだめなようだ。DirectX9以上できくとかかかれていたりするんだけど、これらのハードはどれもDirectX9対応している。ドライバの日付ではねているかもしれない。

また、XPというだけでChromeはCanvasHA有効をあきらめるようだ。しかしWebGLは一定以上のGPUならHA有効になる。また、HAが無効であってもソフトウェアレンダラを用意した。

というわけでCanvasに関しては

  • XPを利用していてFirefoxでHAが有効になる環境、またはWindows7でCPUの性能が低い場合はFirefoxがオススメ。
  • OSがWindows7で滑らかさ重視ならIE9がオススメ。
  • どの環境でもハードウェアアクセラレーションが有効にならないのならChromeがソフトウェア描画の速度でダントツの性能をもつ上にWebGLのソフトウェア描画も対応した。

となった。

ちなみにどの環境でも、ハードウェアアクセラレーションが無効でも320x320-60fpsは安定してだせた。また、ソフト描画の場合回転描画はCPU負荷が増えやすいので、より動作環境を増やす目的があるなら回転済みのテクスチャを用意しておくなども有効かもしれない。