- Pipeline graphique
- Terminologie de la compression des couleurs
- Le bloc de couleur
- Compression des couleurs
- Schéma de compression des couleurs
- Anticrénelage de qualité améliorée (EQAA)
- Compatibilité des fonctionnalités
- API de compression des couleurs
- Performances et débogage
Pipeline graphique
Le diagramme suivant illustre le pipeline graphique logique. Les blocs de profondeur et de couleur sont les deux dernières opérations logiques avant la sortie du rendu.
Terminologie de la compression des couleurs
Voici les termes courants utilisés pour décrire les systèmes de compression.Le bloc de couleur
Le bloc de couleur est responsable du transfert en mémoire des données de couleur produites par le nuanceur de pixels. Ce processus comprend la gestion de la compression MSAA, le mélange des couleurs, le formatage des couleurs, la ROP et l’écriture en mémoire. Le bloc de couleur permet de combiner la couleur de sortie du nuanceur pour un pixel (couleur source, CS) avec la couleur actuelle de ce pixel dans la cible de rendu (couleur de destination, CD) à l’aide de facteurs de mélange (BF(S,D)) et d’une fonction de combinaison spécifiée. L’équation générale de ce mélange est appelée équation de mélange.- Un mode de mélange spécial appelé mélange à double source. Alors que la plupart des facteurs de mélange sont fonction de la couleur source, de la couleur de destination ou de la couleur constante de mélange, le mélange à double source utilise une deuxième couleur de sortie du nuanceur (affectée à MRT1) comme facteurs de mélange. La couleur source de l’équation de mélange provient de MRT0.
- MSAA 2x, 4x et 8x. Le bloc de couleur comporte plusieurs fonctionnalités propres au MSAA, comme une résolution matérielle de toute surface pouvant être mélangée à l’aide d’un filtre boîte (calcul de la moyenne des sous-échantillons d’un pixel pour obtenir sa couleur finale) et la compression des couleurs (décrite dans la section suivante).
- Une mémoire tampon d’image à correction gamma utilisant le format 8_8_8_8 sRGB.
- L’effacement rapide de la surface de couleur. Cela s’effectue en effaçant uniquement les bits CMask associés à chaque tuile de la surface. À mesure que des quads sont dessinés dans des tuiles effacées rapidement, le bloc de couleur dispose d’un matériel spécial pour remplir après coup les parties des tuiles qui n’ont pas été touchées.
- Le cache CMask gère les informations de compression au niveau des tuiles.
- Le cache FMask gère les informations de compression au niveau des quads.
- Le cache de couleur et le mélangeur effectuent les mises à jour des pixels.
Compression des couleurs
L’anticrénelage multiéchantillonné (MSAA) est une méthode visant à réduire les artefacts visuels causés par la résolution limitée des pixels. Avec le MSAA, la valeur finale de chaque pixel est déterminée par 2, 4 ou 8 échantillons de couleur prélevés à l’intérieur du pixel. Chacun de ces échantillons reçoit la même couleur du nuanceur de pixels, mais chaque échantillon fait l’objet d’un test de profondeur distinct. Il en résulte des détails plus fins pour les arêtes de la géométrie. Les pixels multiéchantillonnés exigent plus de mémoire et de traitement que les pixels à échantillon unique, c’est pourquoi un schéma de compression des couleurs est mis en œuvre. La compression des couleurs est un schéma sans perte, par pixel, dont l’objectif est d’économiser la bande passante mémoire et de réduire au minimum le nombre de cycles d’horloge nécessaires pour traiter un pixel multiéchantillonné. En MSAA 8x (8 échantillons par pixel), chaque pixel peut nécessiter 8 fois la bande passante mémoire et 8 fois la puissance de traitement d’un simple pixel à échantillon unique. En général, les échantillons d’un pixel sont très redondants, et ne contiennent qu’une ou deux valeurs de couleur uniques. Il est rare que tous les échantillons d’un pixel MSAA 8x aient 8 valeurs uniques. Une grande disparité entre les échantillons n’est pas impossible. Elle peut se produire dans une scène comportant une géométrie finement pavée, ou simplement par hasard. L’objectif du schéma de compression est de tirer parti de la redondance des échantillons dans une scène typique.Schéma de compression des couleurs
Pour compresser un pixel MSAA, on tire parti de la redondance en ne stockant chaque couleur unique qu’une seule fois. Par exemple, en MSAA 8x, les 8 échantillons pourraient ressembler aux couleurs présentées dans le tableau suivant. Il n’y a que trois couleurs uniques, mais elles occupent actuellement l’espace de 8.


Anticrénelage de qualité améliorée (EQAA)
L’anticrénelage de qualité améliorée (EQAA) est une compression avec perte pour l’anticrénelage. Il s’agit d’une extension de l’algorithme de compression des couleurs sans perte. Le stockage des couleurs est réduit de sorte qu’il n’y a pas assez d’espace pour avoir une couleur unique par échantillon. La plupart du temps, un pixel ne comporte qu’un petit nombre de couleurs uniques. Le FMask peut les mapper pour couvrir tout le pixel. Pour l’EQAA, le bloc de couleur prend en charge jusqu’à 16 échantillons. Le bloc de couleur ne prend pas en charge 16 échantillons pour le MSAA normal en raison de l’empreinte mémoire excessive. Le bloc de couleur ne tente pas de deviner ni d’interpoler les couleurs. Lorsqu’il ne peut pas déterminer ce que devrait être une couleur ou qu’il n’a pas les moyens de la stocker, le bloc de couleur marque l’échantillon correspondant comme inconnu dans le FMask. Le rendu pour l’EQAA se déroule normalement comme en MSAA, mais il est soumis à la limitation selon laquelle seul un certain nombre d’échantillons sont exacts. Le nombre d’échantillons par surface est limité.Compatibilité des fonctionnalités
Le tableau suivant présente les combinaisons d’opérations autorisées dans le bloc de couleur.
