Macにも地デジ時代が到来しました。夏頃には、ピクセラから視聴のみ可能なハード/ソフトが出ていましたが、先日専用ソフト「CaptyTV Hi-Vision」の録画対応アップデータが公開。時期を前後して、アイ・オー・データが録画対応の「m2TV」を発売開始。地デジ対応ではPCに大きく後れを取っていたMacですが、ようやく同じ土俵に立つことができそうです。

さて、今回は「QuartzGL」について。Tigerデビュー当時、一部好事家 (?) の間で話題となった「Quartz 2D Extreme」のLeopardにおける名称だ。いつか取り上げようと考えていたが、ついズルズルと後回しにしてしまい、Snow Leopardもそろそろという時期になってしまった。それでも新味ある機能なはずなので、しばしお付き合い願いたい。

QuartzGLとは

Tigerで登場した「Quartz 2D Extreme」は、従来CPUが担当してきた2D描画をGPUに振り向け、CPU負荷を軽減することでシステム全体の高速化を図る、というGPUの高い演算能力を生かした機能だ。

しかしこの機能、デフォルトでは無効に設定され、有効にすると描画に問題を生じることがあるという、かなり実験的性格の濃い存在だった。正式な機能として認知されないままTigerが終わりを迎えたことは、やむを得なかったといえる。

続くLeopardでは、そのQuartz 2D Extremeが「QuartzGL」と名称を変更。使い方もTigerのとき (当コラム「第139回 虎飼い日記 その6 - その名はQuartz 2D Extreme」参照) と同様、Developer Toolsに付属の「Quartz Debug」を利用すればOKだ。デフォルトで無効という"隠し機能状態"は変わらずだが、改良が施されたのか、Tigerの頃に比べ妙な描画に出くわす確率は減少したように思える。不具合の多くは再現性が低いもので、どの程度向上したかを定量的に検証することは難しいが、安定性が向上したことは確かだろう。

ただし、defaultsコマンドを利用した機能のオン / オフは変更されている。システム全体でQuartzGLを有効にしたい場合には、以下のとおりコマンドを実行してみよう。繰り返しになるが、Leopardの現在も非公式な機能であることに変わりはないため、At your own riskで臨んでほしい。

・QuartzGLをオンにする (要再起動)
$ sudo defaults write /Library/Preferences/com.apple.windowserver QuartzGLEnabled -boolean YES



・QuartzGLをオフにする (要再起動)
$ sudo defaults write /Library/Preferences/com.apple.windowserver QuartzGLEnabled -boolean NO

グラフィックスカードがQuartzGL対応かどうかは、Quartz DebugでQuartzGLをONにしたあと、システムプロファイラを起動すれば確認できる

QuartzGLでどれだけ速くなる?

QuartzGLの動作環境はOS X 10.5以降、かつ「GL_ARB_fragment_program」と「GL_ARB_texture_non_power_of_two」という拡張機能に対応したグラフィックスカードが必要 (Technical Q&A QA1536を参照)。複数のグラフィックスカードを装着したマシンも動作対象外。こちらを見るかぎり、Intel移行後のMacは基本的にカバーされると考えてよさそうなものの、すべての環境でOKというわけではないので注意したい。

その効果は、2D描画をGPUに委譲するという性質上多くのアプリケーション全般に有効なはずだが、情報量が多いほど (QuartzGL無効時にCPU負荷が高いほど) 測定しやすいと考えられる。言い換えれば、Quartzで描画するアプリケーション全般である程度の効果が期待できるが、データ量の大きい画像を頻繁に書き換える機能のほうが効果がわかりやすいはずなのだ。

念のためXbenchで測定してみたところ、グラフィック機能を測る「Quartz Graphics Test」では、QuartzGL有効時が無効時を約9%上回るという結果が得られた。その内訳を見てみると、BezierやTextでは差が現れにくかった一方、LineやCircleではQuartzGL無効時を大幅に上回るというもので、2D描画すべてで効果的なわけではなく、ある分野の処理についてのみ顕著な高速化が確認できることがわかる。

表1 : QuartzGL有効 / 無効時のXbench 1.3の結果
(MacBook Pro 2.33GHz / 2GB RAM)
QuartzGL ON OFF
Quartz Graphics Test 195.79 179.45
Line 278.6 159.21
Rectangle 183.18 217.11
Circle 194.52 174.73
Bezier 171.88 71.59
Text 181.91 184.9
OpenGL Graphics Test 232.01 229.12
User Interface Test 286.14 295.86

グラフ1 : QuartzGL有効 / 無効時のXbench 1.3の結果 (MacBook Pro 2.33GHz / 2GB RAM)

QuartzGL有効時のSafariは?

一般的なアプリでの効果も気になるところだが、とりあえずジニーエフェクト (ウインドウをDock領域へ格納する表示効果) は軽くなった印象。しかしSafariやMailの操作感に体感できるほどの違いはなく、iPhotoについてもJPEGを読み込む速度がネックとなるのか、変化を体感できるレベルではない。前掲のTechnical Q&A QA1536でも示唆されているが、システム全体で有効にするのではなく、QuartzGLの機能が必要なアプリケーションで有効化することが妥当な使われ方となるのだろう。

折角なので、ブラウザのレンダリング速度を測定するベンチマーク「GUIMark」を利用し、Safari 3.1.2使用時におけるQuartzGLの効果を調べてみた。HTMLとFlexの各テストは以下のとおりで、いずれもQuartzGL有効時には5%程度スピードアップしていることがわかる。もっとも、ブラウザを操作しているとき延々と描画が続くことはない (間断的に発生する) わけで……不安定になるリスクを冒してまで有効にする必要はないと思われる。

表2 : QuartzGL有効 / 無効時のSafari 3.1.2のレンダリング速度
(MacBook Pro 2.33GHz / 2GB RAM)
QuartzGL ON OFF
HTML 16.63fps 17.54fps
Flex 25.81fps 27.23fps

グラフ2 : QuartzGL有効 / 無効時のSafari 3.1.2のレンダリング速度 (MacBook Pro 2.33GHz / 2GB RAM)