Quartz Compositor es el servidor de visualización (y al mismo tiempo el gestor de ventanas de composición ) de macOS . Es responsable de presentar y mantener gráficos rasterizados y renderizados del resto del marco Core Graphics y otros renderizadores de la familia de tecnologías Quartz . [1]
La salida de mapa de bits de Quartz 2D , OpenGL , Core Image , QuickTime u otro proceso se escribe en una ubicación de memoria específica o memoria de respaldo . Luego, el Compositor lee los datos de las memorias de respaldo y ensambla cada uno de ellos en una imagen para la pantalla, escribiendo esa imagen en la memoria de búfer de cuadros de la tarjeta gráfica. Quartz Compositor solo acepta datos rasterizados y es el único proceso que puede acceder directamente al búfer de cuadros de gráficos. [2]
Para gestionar ventanas individuales, Quartz Compositor acepta una imagen de mapa de bits del contenido de la ventana desde su renderizador, junto con su posición. La elección del renderizador depende de cada aplicación, aunque la mayoría utiliza Quartz 2D. Quartz Compositor actúa entonces como una "mesa de mezclas visual", añadiendo la ventana dada a toda la escena para su visualización.
En su función de administrador de ventanas, Quartz Compositor también tiene una cola de eventos que recibe eventos, como pulsaciones de teclas y clics del ratón. Quartz Compositor toma los eventos de la cola, determina qué proceso es el propietario de la ventana en la que se produjo el evento y pasa el evento al proceso. [3]
Mac OS X v10.2 introdujo Quartz Extreme: aceleración del procesador gráfico (GPU) para Quartz Compositor. Con Quartz Extreme, se necesitan muchos menos ciclos de la unidad central de procesamiento (CPU) para la composición de la escena. En cambio, Quartz Compositor encapsula cada fondo renderizado en un mapa o superficie de textura OpenGL. Luego, le indica a la GPU que componga las superficies y los mapas para proporcionar la imagen final, que se envía al búfer de cuadros.
Quartz Extreme sólo utiliza comandos OpenGL, y requiere una tarjeta gráfica conectada a un bus AGP 2X o más rápido (incluyendo AGP 4X, 8X y PCI Express ), que admita texturas y mapas de tamaño arbitrario, ya que muchos de los renderizadores no tienen limitación de tamaño (Quartz 2D por ejemplo). [2] En Mac OS X Tiger , se habilita automáticamente en sistemas Mac con uno de los siguientes tipos de tarjetas gráficas : [4]
A partir de OS X El Capitan , Quartz Extreme está habilitado en todas las Mac compatibles.
QuartzGL (llamado Quartz 2D Extreme cuando se introdujo en Mac OS X Tiger ) es una aceleración de GPU para la API Quartz 2D. Con QuartzGL habilitado, todos los comandos de dibujo de Quartz se traducen a comandos OpenGL y se ejecutan en la GPU. Esto difiere de Quartz Extreme, que aún ejecuta los comandos de dibujo de Quartz en la CPU, pero realiza la composición final utilizando la GPU.
A partir de OS X Mountain Lion , QuartzGL aún no está habilitado de forma predeterminada. Sin embargo, es posible habilitarlo mediante la aplicación Quartz Debug incluida en Apple Developer Tools . QuartzGL se deshabilitará nuevamente al salir de la utilidad Quartz Debug. Una solución alternativa es forzar el cierre de la aplicación Quartz Debug, lo que dejará QuartzGL habilitado en todo el sistema.
Todas las tarjetas gráficas compatibles con Core Image también admiten QuartzGL.