Les cartes graphiques/Les architectures de type tiled rendering

Un livre de Wikilivres.
Tiled rendering architecture.

Les architectures en tiles sont une classe de carte 3D légèrement différente de celles vues précédemment. Sur ces architectures, l'écran/image à rendre est découpé en rectangles, rendus indépendamment, uns par uns. Ces rectangles sont appelés des tiles, d'où le nom d'architectures à tiles donné à ce type de cartes graphiques.Le rendu commence par calculer tout ce qui a trait à la géométrie, en général, sans tenir compte des tiles. Le résultat des calculs géométriques est alors mémorisé en mémoire vidéo dans une display list, où les triangles sont répartis suivant leur tile de destination. Ensuite, les tiles sont rastérisées et texturées indépendamment, l'une après l'autre.

L'architecture globale d'une carte graphique à tiles change peu comparé à une carte à rastérisation, si ce n'est que l'étape de primitive assembly est modifiée pour devenir une pahse où les triangles sont répartis dans des tiles de destination. Le vrai changement tient dans le fait que le rendu d'une tile se fait avec l'aide d'une mémoire intégrée qui mémorise la tile en cours de rendu et dans laquelle on effectue les tests de profondeur et autres opérations.

Les avantages et inconvénients[modifier | modifier le wikicode]

L'avantage des architectures en tiles est qu'elles réduisent fortement l'utilisation de la mémoire. De nombreux accès mémoire disparaissent, notamment tous les accès effectués par le ROP pour les calculs de profondeur et de transparence. Une architecture à tile a juste besoin d'un Z-Buffer pour la tile en cours de traitement, là où les cartes graphiques normales ont besoin d'un Z-buffer pour toute l'image. De plus, les tiles sont tellement petites que l'on peut stocker tout le Z-Buffer dans une mémoire cache intégrée dans l'ISP. La carte graphique finalise le calcul du tile dans ce cache et n'écrit que la tile finale en mémoire vidéo. Ce cache réduit fortement les besoins en bande passante et en débit mémoire, ce qui rend inutile de nombreuses optimisations, comme la compression du Z-buffer et élimine de nombreux caches, comme le cache de couleur ou le cache de profondeur. Le rendu en mode immédiat ne permet pas ce genre de facéties

De plus, elles permettent d'éliminer rapidement les portions non-affichées de la scène 3D, dès la sortie de la rastérisation. L'élimination des pixels et triangles cachés s'effectue dès que la profondeur est disponible, c'est à dire à l'étape de rastérisation. L'Image Synthesis Processor remplace en quelque sorte le Z-Buffer et les circuits d'élimination des pixels cachés.

Le principal défaut du rendu en tiles est que le rendu se fait en deux passes, avec une mémorisation du résultat de la première passe en mémoire vidéo. Et cette mémorisation demande beaucoup de lectures et d'écritures : d'écritures pour mémoriser le résultat de la première passe, de lectures pour l'utiliser dans la seconde passe. La mémoire vidéo est donc beaucoup utilisée, ce qui est un désavantage pour les cartes graphiques à haute performance. L'usage de mémoires cache compense cependant ce désavantage pour les architectures à tiles. Finalement, ce qui est économisé d'un côté est gaspillé de l'autre et tout est histoire de compromis. De plus, diverses optimisations spécifiques permettent d'éliminer des lectures/écritures "superflues", ce qui complexifie la comparaison avec une carte graphique normale.