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