# Quartz Compositor

Quartz Compositor est un serveur d'affichage (et en même temps le gestionnaire de fenêtres de composition) dans macOS. Il est responsable de la présentation et de la maintenance des graphiques rendus rastérisés du reste du framework Core Graphics et d'autres moteurs de rendu de la famille Quartz.

## Aperçu

La sortie bitmap de Quartz Compositor du Quartz 2D, OpenGL, Core Image, QuickTime ou d'autres processus est écrite dans un emplacement mémoire spécifique ou dans un magasin de soutien . Le compositeur lit ensuite les données des mémoires de sauvegarde et les assemble en une seule image pour l'affichage, écrivant cette image dans la mémoire tampon de trame de la carte graphique. Quartz Compositor accepte uniquement les données raster et est le seul processus qui peut accéder directement au tampon d'image graphique.
Lors de la gestion des fenêtres individuelles, Quartz Compositor accepte une image bitmap (matricielle) du contenu de la fenêtre à partir de son moteur de rendu, ainsi que sa position. Le choix du moteur de rendu dépend de l'application individuelle, bien que la plupart des utilisateurs utilisent Quartz 2D. Quartz Compositor agit alors comme une "table de mixage visuelle", en ajoutant la fenêtre donnée à l'ensemble de la scène pour l'affichage.
Dans son rôle de gestionnaire de fenêtres, Quartz Compositor dispose aussi d'une file d'attente d'événements qui reçoit des événements, tels que des frappes de touches et des clics de souris. Quartz Compositor prend les événements de la file d'attente, détermine quel processus possède la fenêtre où l'événement s'est produit et transmet l'événement au processus.

## Quartz Extrême

Mac OS X v10.2 par Apple a introduit Quartz Extreme : accélération du processeur graphique (GPU) pour Quartz Compositeur. Avec Quartz Extreme, beaucoup moins de cycles d'unité centrale (CPU) sont nécessaires pour la composition de la scène. Plutôt, Quartz Compositeur encapsule chaque magasin de support rendu dans une carte de texture ou une surface OpenGL. Il ordonne ensuite au GPU de composer les surfaces et les cartes pour fournir l'image finale, qui est délivrée au frame buffer.
Quartz Extreme n'utilise que des commandes OpenGL et nécessite une carte graphique connectée à un Port AGP 2X ou plus rapide (y compris AGP 4X, 8X et PCI Express ), prenant en charge les textures et les cartes de taille arbitraire, car de nombreux moteurs de rendu n'ont aucune limitation de taille ( Quartz 2D par exemple). Dans Mac OS X v10.4, il est automatiquement activé sur les systèmes Mac avec l'un des types de cartes graphiques suivants:
* AMD (ATI) Radeon, basé sur AGP, 16 Mo de VRAM minimum, ou plus récent
* NVIDIA GeForce2 MX, 16 Mo de VRAM minimum, ou plus récent
Depuis OS X El Capitan, Quartz Extreme est activé sur tous les Mac pris en charge.

## QuartzGL

QuartzGL (appelé Quartz 2D Extreme lorsqu'il a été introduit dans Mac OS X Tiger ) est l'accélération GPU pour Quartz 2D API. Avec QuartzGL activé, toutes les commandes de dessin Quartz sont traduites en commandes OpenGL et exécutées sur le GPU. Cela diffère de Quartz Extreme, qui exécute toujours les commandes de dessin Quartz sur le CPU mais effectue la composition finale à l'aide du GPU.
Depuis OS X Mountain Lion, QuartzGL n'est toujours pas activé par défaut. Cependant, il est possible de l'activer à l'aide de l'application Quartz Debug incluse dans les outils de développement Apple . QuartzGL sera à nouveau désactivé lorsque vous quitterez l'utilitaire Quartz Debug. Une solution de contournement consiste à forcer la fermeture de l'application Quartz Debug, ce qui laissera QuartzGL activé à l'échelle du système.
Toutes les cartes graphiques qui est capables de prendre en charge Core Image fonctionneront aussi avec QuartzGL.