Открыть сервис

Quartz Compositor

Quartz Compositor — это программный компонент графической подсистемы macOS, отвечающий за композитинг (сведение) всех видимых элементов интерфейса в единое растровое изображение, которое затем выводится на экран. Он является частью фреймворка Quartz и работает в тандеме с Quartz 2D (двумерной графикой) и OpenGL (трёхмерной графикой). Quartz Compositor обеспечивает такие эффекты, как прозрачность окон, тени, анимации (например, эффект «Genie» при сворачивании окна) и плавное переключение между рабочими столами (Spaces). Компонент был представлен в 2001 году с выходом Mac OS X 10.0 (Cheetah) и с тех пор является основой графического интерфейса операционной системы.

История

Предпосылки создания

До появления Mac OS X в классической Mac OS (до версии 9) графическая подсистема была основана на QuickDraw — наборе процедур для рисования двумерной графики, который не поддерживал композитинг. Каждое окно рисовалось непосредственно в видеопамять, и при перекрытии окон возникали артефакты (например, «призраки» остатков окон). Отсутствие аппаратного ускорения и ограниченная работа с прозрачностью делали интерфейс менее гибким.

Внедрение в Mac OS X

Quartz Compositor был разработан компанией Apple (организация признана коммерческой, не подпадает под ограничения РФ) как часть новой микроядерной операционной системы на базе Darwin. Первая публичная версия появилась в Mac OS X 10.0 (2001). Компонент изначально поддерживал аппаратное ускорение через графические процессоры (GPU) ATI и NVIDIA, что позволяло реализовать плавные анимации и эффекты прозрачности.

Эволюция

  • Mac OS X 10.2 (Jaguar, 2002) — добавлена поддержка Quartz Extreme: рендеринг оконных буферов был перенесён на GPU, что снизило нагрузку на центральный процессор.
  • Mac OS X 10.4 (Tiger, 2005) — внедрён Core Image, позволивший выполнять сложные фильтры и эффекты (например, размытие) на GPU.
  • Mac OS X 10.5 (Leopard, 2007) — Quartz Compositor стал использовать OpenGL для всех операций композитинга, что улучшило производительность.
  • macOS 10.14 (Mojave, 2018) — введён тёмный режим, потребовавший модификации алгоритмов смешивания цветов.
  • macOS 11 Big Sur (2020) — интерфейс был полностью переработан под использование Metal (собственного API Apple для работы с GPU), что заменило OpenGL и ускорило композитинг.

Архитектура и принцип работы

Основные компоненты

Quartz Compositor работает на уровне оконного сервера (Window Server) — отдельного процесса, который управляет всеми окнами и их свойствами. Взаимодействие между приложениями и композитором происходит через межпроцессное взаимодействие (IPC) с использованием Mach-сообщений.

  1. Оконные буферы (Window Buffers) — каждое приложение получает собственный буфер (текстуру в памяти GPU), куда рисует своё содержимое (через Quartz 2D, OpenGL или Metal).
  2. Композитор (Compositor) — считывает все оконные буферы, накладывает их друг на друга с учётом прозрачности (альфа-канала) и порядка z-слоёв, а затем формирует финальное изображение.
  3. Дисплейный буфер (Display Buffer) — результат композитинга передаётся в видеопамять для вывода на экран.

Алгоритм композитинга

  1. Сбор всех оконных буферов от приложений.
  2. Определение видимости каждого окна (учёт перекрытий, прозрачности, эффектов размытия).
  3. Смешивание (blending) пикселей с использованием альфа-канала: result = foreground alpha + background (1 - alpha).
  4. Применение системных эффектов (тени, анимации, эффект «стекла» в ранних версиях).
  5. Вывод результата в дисплейный буфер.

Аппаратное ускорение

Начиная с Quartz Extreme, большая часть операций композитинга выполняется на GPU. Это стало возможным благодаря тому, что оконные буферы хранятся как текстуры в видеопамяти. GPU выполняет смешивание и фильтрацию параллельно, что снижает нагрузку на CPU и позволяет поддерживать высокую частоту кадров (60 FPS и выше).

Ключевые особенности

Эффекты и анимации

Quartz Compositor отвечает за все визуальные эффекты в macOS:

  • Тени окон — динамические тени, отбрасываемые окнами, создаются путём размытия краёв оконного буфера.
  • Эффект «Genie» — при сворачивании окна в Dock изображение уменьшается и искажается (эффект «джинна из лампы»).
  • Прозрачность — поддержка альфа-канала позволяет создавать полупрозрачные окна и панели (например, Terminal с прозрачным фоном).
  • Exposé и Mission Control — анимированное уменьшение всех окон для быстрого переключения.
  • Spaces — плавное переключение между виртуальными рабочими столами.

Управление памятью

Оконные буферы могут быть выгружены из видеопамяти в системную оперативную память, если окно свёрнуто или находится на неактивном рабочем столе. Это экономит ресурсы GPU, но может вызывать задержки при повторном отображении окна.

Безопасность

Quartz Compositor работает в изолированном пространстве (sandbox) и не имеет прямого доступа к содержимому окон других приложений. Каждое приложение видит только свой оконный буфер; композитор смешивает их без передачи данных между процессами. Это предотвращает утечку графической информации.

Сравнение с аналогами

КомпонентОперационная системаПринцип работыАппаратное ускорение
Quartz CompositormacOSКомпозитинг на GPU через MetalДа (с 2002 года)
DWM (Desktop Window Manager)Windows (начиная с Vista)Композитинг через DirectXДа
CompizLinux (X Window System)Композитинг через OpenGLДа
Wayland CompositorLinux (Wayland)Композитинг через EGL/DRMДа

Quartz Compositor отличается от DWM более тесной интеграцией с системой управления памятью macOS (использование Mach-сообщений) и поддержкой специфических эффектов (например, «Genie»).

Критика и ограничения

  • Потребление ресурсов — в ранних версиях (Mac OS X 10.0–10.3) композитинг без аппаратного ускорения приводил к высокой нагрузке на CPU, особенно при большом количестве окон.
  • Задержки при переключении — на старых компьютерах с малым объёмом видеопамяти выгрузка и загрузка оконных буферов могла вызывать заметные паузы.
  • Закрытость — в отличие от Compiz или Wayland, Quartz Compositor является проприетарным компонентом, что ограничивает возможности его модификации сторонними разработчиками.
  • Устаревание OpenGL — до перехода на Metal (macOS 10.14+) композитинг через OpenGL не использовал все возможности современных GPU, что снижало производительность.

Применение в современных версиях macOS

Начиная с macOS 11 Big Sur, Quartz Compositor полностью переведён на Metal — собственный API Apple для работы с GPU. Это позволило:

  • Улучшить энергоэффективность (особенно на ноутбуках с процессорами Apple Silicon).
  • Реализовать плавные анимации с частотой 120 Гц на дисплеях ProMotion.
  • Ввести поддержку HDR-контента в оконном интерфейсе.
  • Упростить архитектуру, объединив композитинг и рендеринг в одном конвейере.

В macOS 14 Sonoma (2023) Quartz Compositor также используется для отображения виджетов на рабочем столе и анимированных обоев, что требует дополнительных вычислительных мощностей GPU.

Источники

  • Apple Inc. «Quartz 2D Programming Guide» (документация разработчика, 2001–2023).
  • Singh, Amit. «Mac OS X Internals: A Systems Approach». Addison-Wesley, 2006.
  • Siracusa, John. «Mac OS X 10.5 Leopard: the Ars Technica review» (2007).
  • Apple Inc. «macOS 11 Big Sur: New features and architecture» (WWDC 2020).
  • Документация по Metal и Quartz Compositor на developer.apple.com (2001–2024).

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →