Mozilla Flux

Mozilla関係の情報に特化したブログです。

Firefox 3でカラーマネジメント機能がオフの理由

Firefox 3.1では、カラーマネジメント機能がデフォルトでオンになる。Webブラウザのカラーマネジメントとは、ディスプレイの情報を使い、場合によっては画像に埋め込まれた情報も使って、画像の色をより正確に再現しようとする機能のことだ。この機能の説明に関しては既にMozilla Links日本語版に秀逸な記事が上がっているし、Hide Kei氏が詳細なレビューを書いていらっしゃるので、カラーマネジメントそれ自体のことをもっと深く知りたい方は、ぜひそちらを参照していただきたい。なお、テストとして"Is your system ICC Version 4 ready?"を挙げておく。

ここで取り上げたいのは、この機能がFirefox 3で既に実装されていたのに、なぜデフォルトでオンにならなかったのかということだ。オプションのパネルにも項目がなく、いわば隠し設定になっていた理由は何なのか。

最大の理由は、パフォーマンスの低下にあった。レンダリングが乱れるバグや、プラグイン(FlashやJava)がする描画との整合性といった問題もあったけれども、それらよりはるかに厄介な懸案だった。開発担当者の解説によれば、Firefox 3でカラーマネジメント処理をさせると、パフォーマンスが20〜30%も悪化したという。画像のピクセル一つひとつに処理をかけなければならないためだ。

本来ならGPUアクセラレーションが働けばこうした問題は解決できるはずなのだが、Firefoxが採用するcairoバックエンドにはあいにくそうした機能が実装されていない。Firefox 3.1では、プログラムのアーキテクチャを見直し、プリキャッシュの方法を工夫し、SSE2最適化用のコードをチューニングすることで、何とか4〜5%のパフォーマンスダウンに押さえ込んだ。

それでも、パフォーマンスは確実に低下している。担当者はこの時点で常にカラーマネジメントをかける設定をデフォルトにしたかったのだが、それは見送られた。現在のデフォルトは、画像ファイルにICCプロファイルが埋め込まれている(=タグ付き画像である)場合にのみ、カラーマネジメント処理を行うというもの。Firefoxに先行してカラーマネジメントをオンにしているSafariでも、同様の設定になっているそうだ。この結果、パフォーマンスの低下はわずか1%にとどまった。

Firefox 3.1でようやくカラーマネジメントがオンになるのは、こうした経緯による。開発プロセスでパフォーマンスの問題がいかに重視されているかよくわかるエピソードだ。