Quartz Compositor

Quartz CompositormacOSウィンドウシステム。他のQuartzフレームワークやQuartzファミリのレンダラーが生成しラスタライズしたグラフィックスを管理し表示する役割を担う。

概要

[編集]

Quartz Compositorは、生成されたビットマップ画像ビデオカードのメモリへの配置を単独で管理する。Quartz 2DOpenGLCore ImageQuickTimeなどが出力したビットマップは一旦、特定のメモリ位置、すなわち「バッキングストア」に置かれる。Compositor はバッキングストアからデータを読み込み、それらから画面全体のイメージを組み立て、ビデオカードのフレームバッファにそのイメージを書き込む。Quartz Compositorはラスタ形式のデータだけを受け取り、フレームバッファに直接アクセスする唯一のプロセスとして動作する[1]

個々のウィンドウの管理においては、Quartz Compositorはそのウィンドウのビットマップ画像と位置情報をレンダラーから受け取る。レンダラーの選択はアプリケーションに一任されているが、通常はQuartz 2Dを使用する。Quartz Compositorは「視覚ミキシングボード」として動作し、そのウィンドウを画面全体のシーンに追加する。

Quartz Compositorはウィンドウマネージャのような役割も果たし、キー押下やマウスクリックといったイベントを受け取るイベントキューも持っている。Quartz Compositorはそのキューからイベントを取出し、そのイベントが発生したウィンドウに対応するプロセスを特定し、そのプロセスにイベントを渡す[2]

Quartz Extreme

[編集]

Mac OS X v10.2Quartz Extremeが導入された。これは、Quartz CompositorのGPUアクセラレーション機能である。Quartz Extremeを使うと、シーンの合成にCPUのサイクルを全く使わなくなる。Quartz Compositorは、描画済みのバッキングストアをOpenGLのテクスチャマップまたはサーフェイスにカプセル化し、GPUを使って動作する。すると、GPUはそのサーフェイスやマップを合成して最終的イメージを作り、自身のフレームバッファにそれを供給する。

Quartz ExtremeはOpenGLコマンドだけを使い、AGP 2Xかそれ以上のバス(AGP 4X、8X、PCI Express)に接続されたグラフィックスカードを必要とする。また、レンダラー(例えばQuartz 2D)にはサイズ制限がないため、グラフィックスカードは任意の大きさのテクスチャやマップをサポートしている必要がある[1]。以下のグラフィックスカードを搭載したMacシステムでは自動的に有効となる[3]

QuartzGL

[編集]

QuartzGLMac OS X v10.4ではQuartz 2D Extreme)は、Quartz 2D API用GPUアクセラレーション機能である。デフォルトではMac OS X v10.4でもMac OS X v10.6でも有効になっていない。しかし、macOSデベロッパーツールにある "quartz debug" アプリケーションを使うと、どちらのバージョンでも有効にできる。ただし、AppleはQuartzGLを正式サポートしていないので、quartz debugユーティリティを終了させると同時に無効となる。ワークアラウンドとしてquartz debugユーティリティを強制終了させるとQuartzGLを有効のままにしておくことも可能である。

Leopardでは、アプリケーションのinfo.plistにQuartzGLEnabledというエントリを追加でき、アプリケーション単位の有効化が可能である。ただし、その前にシステム全体で有効にしておかないと、アプリケーション単位の "QuartzGLEnabled" も効果がない。

Core ImageをサポートしているグラフィックスカードならQuartzGLもサポートできる。

脚注・出典

[編集]

関連項目

[編集]

外部リンク

[編集]