Quartz Compositor — это сервер отображения (и одновременно менеджер окон композитинга ) в macOS . Он отвечает за представление и поддержку растрированной , отрендеренной графики из остальной части Core Graphics framework и других рендереров в семействе технологий Quartz . [1]
Вывод растрового изображения из Quartz 2D , OpenGL , Core Image , QuickTime или другого процесса записывается в определенное место памяти или резервное хранилище . Затем Compositor считывает данные из резервных хранилищ и собирает их в одно изображение для отображения, записывая это изображение в память кадрового буфера графической карты. Quartz Compositor принимает только растровые данные и является единственным процессом, который может напрямую обращаться к графическому кадровому буферу. [2]
При управлении отдельными окнами Quartz Compositor принимает растровое изображение содержимого окна от своего рендерера вместе с его позицией. Выбор рендерера зависит от конкретного приложения, хотя большинство используют Quartz 2D. Затем Quartz Compositor действует как «визуальный микшерный пульт», добавляя заданное окно ко всей сцене для отображения.
В своей роли оконного менеджера Quartz Compositor также имеет очередь событий , которая получает события, такие как нажатия клавиш и щелчки мыши. Quartz Compositor берет события из очереди, определяет, какой процесс владеет окном, в котором произошло событие, и передает событие процессу. [3]
Mac OS X v10.2 представила Quartz Extreme: ускорение графического процессора (GPU) для Quartz Compositor. С Quartz Extreme для композиции сцены требуется гораздо меньше циклов центрального процессора (CPU). Вместо этого Quartz Compositor инкапсулирует каждое отрисованное резервное хранилище в текстурную карту или поверхность OpenGL. Затем он направляет GPU на компоновку поверхностей и карт для предоставления окончательного изображения, которое доставляется в буфер кадра.
Quartz Extreme использует только команды OpenGL и требует графической карты, подключенной к шине AGP 2X или более быстрой (включая AGP 4X, 8X и PCI Express ), поддерживающей текстуры и карты произвольного размера, поскольку многие из рендереров не имеют ограничений по размеру (например, Quartz 2D). [2] В Mac OS X Tiger он автоматически включается на системах Mac с одним из следующих типов графических карт : [4]
Начиная с OS X El Capitan , Quartz Extreme включен на всех поддерживаемых компьютерах Mac.
QuartzGL (называемый Quartz 2D Extreme, когда он был представлен в Mac OS X Tiger ) — это ускорение GPU для Quartz 2D API. При включении 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.