Mozilla デベロッパー リレーションズ チームのエンジニアであるLin Clark氏は、Rust で書かれた新しい GPU アクセラレーション レンダリング エンジン「WebRender」により、Firefox がまもなく非常にスムーズになることを明らかにしました。
Firefox のパフォーマンスを徹底的に改善
過去1年ほど、Firefoxはアーキテクチャを大幅に刷新しました。Firefoxはまず、マルチプロセスアーキテクチャであるElectrolysisに移行し、パフォーマンスを大幅に向上させました。ユーザーインターフェース、コンテンツ、アドオンはそれぞれ異なるCPUスレッドで動作する異なるプロセスで実行できるため、互いに速度を低下させる必要がなくなりました。
分離メカニズムの強化により、セキュリティも大幅に向上しているはずですが、どの程度改善されたかはまだ分かりません。ホワイトハットハッカーとブラックハットハッカーの両方が新しいFirefoxをテストすれば、より詳しいことがわかるでしょう。
Mozillaは最近、Firefoxの次期バージョン(v57)が2倍高速化すると発表しました。この高速化は、ブラウザエンジンのコア部分を、より高速で安全な(メモリセーフなRust言語で記述された)コンポーネントに置き換えることで実現しました。このプロジェクトは、ジェット機がまだ飛行中にエンジンを交換することに例えられています。
60FPSでのWebレンダリング
ページのレンダリングとは、画面上のピクセルの描画とレイヤーの合成という2つのプロセスを指します。CPUサイクルを節約し、パフォーマンスを向上させるために、ブラウザはページ内の特定の要素を異なるレイヤーに描画し、最終的にそれらのレイヤーを合成します。これが合成です。
このアプローチの欠点は、ユーザーがページをスクロールしたり、いくつかの単語をハイライトしたりすると、一部のピクセルとレイヤーを再度描画する必要があることです。スクロールとアニメーションをスムーズに表示するには、60フレーム/秒(fps)で実行する必要があります。
クラーク氏はこれを、静止画が詰まった本に例えました。ページを素早くめくると、まるでアニメーションが動いているように見えるのです。この例では、アニメーションを滑らかに見せるには、アニメーションの1秒ごとに60ページめくる必要があります。「60」という数字が滑らかなアニメーションの魔法の数字である理由は、ほとんどのコンピューター画面が1秒間に60回更新されるからです。
Tom's Hardware の最高のニュースと詳細なレビューをあなたの受信箱に直接お届けします。
Mozilla は、ペイントとレイヤーの合成の両方に GPU アクセラレーションを使用することで、現在他のブラウザが達成できない 60fps レンダリングを自社の Web ブラウザに導入する予定です。
GPUによる合成処理の高速化はそれほど難しくなかったため、最終的には他のブラウザもそれを採用しました。しかし、GPUアクセラレーションによるペイント処理は、特にクロスプラットフォームブラウザではより困難だったため、一部のブラウザがこの移行を始めたのはごく最近のことだとClark氏は言います。
WebRenderはゲームエンジンのように動作します
ペイントと合成の両方がGPUによって高速化されているにもかかわらず、2つのプロセスの分離によってパフォーマンスのボトルネックが生じます。Mozillaは、ペイントと合成の区別をなくす「WebRender」でこの問題を解決しようとしています。代わりに、PCゲームと同様に、フレームごとにすべてのピクセルが画面上に描画されます。
この改善により、Web レンダリングが高速化されるだけでなく、ジャンクもなく、よりスムーズになります。この機能強化のメリットは、4K ディスプレイや WebVR 対応ヘッドセットでのレンダリング時にさらに顕著になります。
画面全体を直接描画する処理がこれまで行われていなかったのは、より計算負荷の高い処理だったためです。以前は、ブラウザのすべての処理を単一のCPUスレッドが担っていたため、「スクロールの滑らかさ」といった「不要な」あるいは優先度の低い機能をレンダリングエンジンに追加するのは理にかなっていませんでした。
しかし、ブラウザベンダーがGPUを活用してブラウザを高速化する方法を学び始めた今、これはもはや問題ではありません。結局のところ、GPUは画面上のピクセル描画においてCPUよりも桁違いに効率的です。
MozillaがWebレンダリングエンジンをゲームエンジンのように動作させることの副次的なメリットとして、Firefoxが3D Webゲームに最適なブラウザになる可能性が挙げられます。ゲーム開発者がC++ 3Dゲームを移植し、ネイティブに近い速度で実行できるようにするWebAssemblyと組み合わせることで、Firefoxはゲーム開発者にとって魅力的なデプロイメントプラットフォームになる可能性があります。
Clark 氏によれば、WebRender は Firefox Quantum の最初のリリース (v57) から数バージョン後に Firefox に導入される予定で、それは 2018 年前半になる可能性があるとのことです。
ルシアン・アルマスは、Tom's Hardware USの寄稿ライターです。ソフトウェア関連のニュースやプライバシーとセキュリティに関する問題を取り上げています。