おお まひまひよ! かぜをひいてしまうとは なさけない!
旅先で風邪をもらってきたらしく、なんか喉の調子がおかしかったのでここ数日はおとなしくしてました。
いや別に寝込んでいたとかじゃないですが。悪くなる前に養生して復活。よかったよかった。
さて、すっかり遅くなりましたが、先日のIE9のおはなしの続き。
「IE9でCPU内臓GPUなどでも強制的にGPUアクセラレーションを有効にする方法」です。
(今日の記事はレジストリ弄るんでちょいと知識のある方向けです。決して難しくはありませんが、
自己責任で。)
IE9といえばGPUアクセラレーションに対応したことがひとつのトピックになっていますね。
注意する必要があるのはDirectWriteとDirect2DがGPUアクセラレーションされるわけであって、
JavaScriptの実行速度が上がるわけではないこと。意外と勘違いしている方がいるみたいです。
要はグラフィックレンダリングの部分だけGPUでできますよ、と。憶えておくと不要なことで
悩まなくて済みます。
さて、そのGPUアクセラレーションですが、基本的にグラフィックカードなどでアクセラレーション
に対応していないと使えない機能だったりします。具体的にはWDDM 1.1ドライバでDirect3D 10
以上(9でもOK?)をサポートしたGPUが必要ということになります。
具体例ですが、実際に先日導入したウチのノートPC、こいつはGPUはCPUに内臓(Core-i5 M460)
されている、一昔前のPCでいうところのいわゆる「オンボードグラフィック」系だったりするわけ
ですが、上に書いたようにこの世代、つまりArrandale・Clarkdale世代のCPU内臓GPUについては、
DirectX 10世代なのでスペック上は一応満たしていることになります。最新のSandy Bridgeは
DirectX 10.1なのでもちろんOK。
というわけで、ウチのノートPCの場合GPUアクセラレーションの恩恵にあずかれるはずなのですが、
IE9のインターネットオプションを見てみますと、
あれ?
「GPU レンダリングではなく、ソフトウェア レンダリングを使用する」のチェックボックス
がグレーアウトしていて操作できない?しかもソフトウェアレンダリングになってる!?
ということで、なんと有効にできないことが判明。がーん。
……で、ここからが本題ですが、ここの項目を弄れる環境の方はこのチェックボックスのチェック
を外してブラウザを再起動させればよろしい。それでGPUレンダリングになります。
じゃあ私のようなケースの方はどうすればいいのか?
はい、ここでレジストリを弄ってしまうわけですね。
以下の記事に詳細が記載されており、今回はこれを参考にさせていただきました。
◆Force Enable GPU Hardware Acceleration Graphics Rendering on Old GPU in IE9 [My Digital Life]
http://www.mydigitallife.info/force-enable-gpu-hardware-acceleration-graphics-rendering-on-old-gpu-in-ie9/
手順は以下の通り。
まず、デバイスマネージャを開いて[ディスプレイアダプタ]から、
使用しているグラボのプロパティを開いて「詳細」タブを選びます。
次にプルダウンメニューから「ハードウェアID」を選択します。
値の項目にいくつかリストが出てくると思いますが、今回必要なのはこの文字列の中の
「VEN」から始まる数字と、「DEV」からはじまる数字。
このあたりの数字を控えておきましょう。
ちなみに上の画像の場合(うちのノートのやつですが)、VENは8086、DEVは0046になります。
さあ、ここからいよいよレジストリを弄っていきます。
お約束の文言ですが、レジストリを安易に触ったり設定を間違えたりするとPCが起動しなく
なったり思わぬ不具合が生じる可能性があります。また、今回のTipsによってPCに何らかの問題が
発生することも否定できませんので、あくまで自己責任でお願いします。
レジストリエディタを起動し、
「
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\GPU」に移動します。
使っているWindowsが32bitなのか64bitなのかによってレジストリ設定項目が変わります。
●32bitOSの場合
「DeviceId」の項目にDEVの値を入力 (ウチの例だと「8086」を入力)
「VendorID」の項目にVENの値を入力 (ウチの例だと「0046」を入力)
「SoftwareFallback」の値を1から0に変更
●64bitOSの場合
「Wow64-DeviceId」の項目にDEVの値を入力 (ウチの例だと「8086」を入力)
「Wow64-VendorID」の項目にVENの値を入力 (ウチの例だと「0046」を入力)
「Wow64-SoftwareFallback」の値を1から0に変更
レジストリを保存したらIE9を再起動して、再度インターネットオプションから先ほどの項目を
チェックしてみませう。
おお、グレーアウトがなくなってチェックが外せるようになりました。
チェックを外して、あらためてブラウザを再起動させれば、これでめでたく完了です。
さて、実際どんなメリットがあるのかということですが、てっとり早く確認する方法があります。
IE9ベータ時代からMSが用意してくれているTestDriveのサイトでレンダリングのベンチマークが
行えます。
◆Internet Explorer 9 Test Drive
http://ie.microsoft.com/testdrive/
このサイト内の
Speed Readingテストを使って確認してみませう。
このテストはHTML5のcanvas要素を使ったレンダリングを試すことができます。
まず、GPUレンダリングではなく、ソフトウェアレンダリングで実行した場合。
表示が完了するのに1449秒ですから、えーと、24分かかってます(汗)。
これはまだ最近のPCだからこれで済んでるわけで、PCスペックによってはさらに悲惨なことに。
(初めてテストした時は遅すぎて途中であきらめそうになったよ:笑)
次。
今回設定したGPUレンダリングを有効にした場合。
13秒。早っ。
ソフトレンダリングではパラパラ漫画だったのが、どわーーーっっと滝のように流れてあっという
間に終了します。単純で100倍の差。こりゃすげぇ。同じPCとは思えん。
ちなみに巷で流行のSVG女子のムービーなんかもこの設定で滑らかさに明確な差がでてきます。
これは利用しない手はないと思いますね。
このテクニックを使えば(メリットはともかく)GMA950世代のやや古いオンボードグラフィック
でもGPUアクセラレーションを有効にできるかも、と記事には書いてございますので、自己責任で
試してみるのも面白いかもしれませんね。
(ちなみにウチの自作デスクトップ、Core-i7 860+GeForce GTS250環境だとデフォルトでGPU
アクセラレーションは有効になっていて、レジストリを弄らなくてもチェックボックスのオン・オフ
はできました。今回のTipsはあくまでスペックは満たしているのに、GPUレンダリングを有効に
できない、してみたいという方のためのものです)
そんな感じで自己責任でカスタマイズしてみてくださいませという今回のご紹介でした。
以下余談。本日のお説教。
どうでもいいけどこの項目ね。
「GPU レンダリングではなく、ソフトウェア レンダリングを使用する」
WindowsというかPCらしからぬ表現が使われていてすごく違和感がありますね。
PCのコンフィグ項目のお作法としてはまったくもって悖る表現だと思う。
非常に紛らわしいというか、操作ミスを誘発する文言で、この項目は本来、
「GPUレンダリングを有効にする」としてチェックボックスのオン・オフの効果を逆にすべきです。
誰だこんな変な表現採用したやつは。ぷんすか。