Tile rendering pour Maxwell et Pascal ?

Tags : Maxwell; Nvidia; Pascal;
Publié le 01/08/2016 à 16:03 par
Imprimer

David Kanter de real world technologies  nous a indiqué ce matin avoir publié une analyse intéressante concernant les GPU Maxwell et Pascal de Nvidia. Un test ciblé a permis de mettre en évidence une progression de la rastérisation de plusieurs triangles par blocs plus ou moins petits de l'image (appelés tiles) en opposition à un rendu classique pour les GPU de bureau qui consiste à traiter le rendu d'un triangle sur toute l'image avant de passer au suivant.

De quoi pouvoir faire un rapprochement avec le tile based rendered ou le tiled based deffered renderer des GPU mobiles Adreno, Mali ou PowerVR ? Il y a trop peu d'informations pour y répondre avec certitude, mais en l'état actuel des choses notre interprétation diverge quelque peu de celle de notre confrère. Nous pensons donc que ce n'est pas le cas, une telle approche généralisée aurait d'ailleurs peu de sens, ces types de rendu ayant tendance à être contreproductifs avec l'augmentation de la complexité géométrique, ce qui est justement un point fort des GPU Nvidia.

Tous les GPU fonctionnent à un niveau ou à un autre sur des tiles, ne serait-ce que pour harmoniser les accès mémoire et pouvoir mettre en place des techniques de compression. Le terme tiles est cependant souvent source de confusion puisqu'il peut ne pas avoir de lien avec ce qui est généralement compris quand on parle de tiled based rendering, à savoir un rendu en deux passes avec un tri de la géométrie après transformation pour lier chaque primitive à une ou plusieurs tiles. De quoi pouvoir effectuer le rendu sur de petits blocs qui resteront en cache durant toutes les opérations pour n'être écrits en mémoire qu'une seule fois en toute fin. Pour en savoir plus sur les différents modes de rendu, nous vous invitons à consulter cette actualité : GDC: Architecture GPU : IMR, TBR ou TBDR ?

Alors que se passe-t-il avec les GPU Maxwell et Pascal ? Nous pensons que ce qu'a mis en lumière David Kanter est plutôt une optimisation opportuniste par exemple pour le traitement des gros triangles, et peut-être d'autres cas, et non un rendu à base de tiles comme on l'entend en général et qui implique un tri des primitives au préalable. Tous les GPU Nvidia depuis Fermi doivent d'ailleurs travailler sur des tiles avec les gros triangles puisqu'ils doivent être segmentés pour être traités par plusieurs GPC et donc par plusieurs moteurs de rastérisation. Progressivement Nvidia en a probablement profité pour apporter quelques optimisations.

Nous supposons qu'avec de gros triangles, dont la couverture représente une partie importante de l'image, les GPU Nvidia récents font en sorte d'éviter de devoir écrire d'emblée en mémoire une quantité énorme de pixels dont une partie pourrait s'avérer par la suite être masquée et donc inutile, ce qui représenterait un gaspillage de bande passante et d'énergie. Etant donné que ces gros triangles sont en principe peu nombreux, il est relativement aisé d'en garder les données en cache ou dans une mémoire spécifique, pour les traiter par morceaux à un moment plus opportun.

Si notre supposition est correcte, cette approche peut sembler similaire à ce que l'on entend en général par tiled based rendering, mais uniquement dans des cas très particuliers, le mode de traitement de la géométrie restant fondamentalement différent. Ce type d'approche fait partie d'un ensemble de techniques qui ont permis à Nvidia d'augmenter le rendement de ses GPU, tant sur le plan énergétique que sur celui des performances en exploitant la bande passante disponible à meilleur escient.

Vos réactions

Top articles