Введение

Система рендеринга окон, используемая в macOS. Quartz Compositor — это сервер отображения (и одновременно компоновщик окон) в macOS. Он отвечает за отображение и поддержку растрированной, отрисованной графики из остальной части фреймворка Core Graphics и других модулей рендеринга семейства технологий Quartz.

Обзор

Выходное растровое изображение из Quartz 2D, OpenGL, Core Image, QuickTime или другого процесса записывается в определенное местоположение памяти или буфер обмена. Затем Compositor считывает данные из буферов обмена и собирает их в единое изображение для отображения, записывая это изображение в видеопамять графического процессора. Quartz Compositor принимает только растровые данные и является единственным процессом, имеющим прямой доступ к графическому буферу кадров. При управлении отдельными окнами Quartz Compositor получает растровое изображение содержимого окна от его рендерера вместе с его позицией. Выбор рендерера остается за конкретным приложением, хотя большинство используют Quartz 2D. Затем Quartz Compositor выступает в роли "визуального микшера", добавляя данное окно ко всей сцене для отображения. В качестве менеджера окон Quartz Compositor также имеет очередь событий, которая принимает события, такие как нажатия клавиш и щелчки мыши. Compositor извлекает события из очереди, определяет, какому процессу принадлежит окно, в котором произошло событие, и передает это событие соответствующему процессу.

КварцGL

QuartzGL (изначально называвшийся Quartz 2D Extreme при представлении в Mac OS X Tiger) — это аппаратное ускорение GPU для API Quartz 2D. При включенной QuartzGL все команды рисования Quartz преобразуются в команды OpenGL и выполняются на GPU. Это отличается от Quartz Extreme, который продолжает выполнять команды рисования Quartz на CPU, но использует GPU для финальной композиции. По состоянию на OS X Mountain Lion, QuartzGL по умолчанию остается отключенным. Однако его можно включить с помощью приложения Quartz Debug, входящего в состав Apple Developer Tools. QuartzGL будет отключен повторно при закрытии утилиты Quartz Debug. В качестве обходного пути можно принудительно завершить работу приложения Quartz Debug, что позволит QuartzGL оставаться включенным во всей системе. Все графические карты, поддерживающие Core Image, также поддерживают QuartzGL.