Radeon HD 2600 & 2400

Publié le 28/06/2007 par
Imprimer
DirectX 10
Pour ce test, nous avons décidé de n'intégrer aucun des jeux DirectX 10 disponibles puisque l'un est développé dans le camp Nvidia et l'autre dans le camp AMD. Nous préférons donc attendre pour y voir plus clair.

Néanmoins, nous pouvons maintenant confirmer sans le moindre doute que les GeForce 8 souffrent d'un gros problème de performances lorsque l'amplification de la géométrie est utilisée dans les geometry shaders. La raison est que ces GPUs doivent garder toutes les données dans le GPU, or l'amplification de la géométrie peut en générer énormément. Pour leur permettre de rester dans le GPU, les GeForce 8 doivent réduire le nombre d'éléments traités en parallèle. Ainsi, un groupe de 8 processeurs scalaires, pour avoir un rendement optimal, doit selon Nvidia contenir au moins 192 éléments (vertices ou pixels) qui se répartissent les 8192 registres 32 bits disponibles. Avec l'amplification géométrique qui permet de générer 1024 valeurs 32 bits par polygone, on comprend aisément que le nombre d'éléments sera bien inférieur à 192, ce qui réduit fortement la puissance de calcul effective.

Du côté d'AMD, un cache L2 général qui permet de cacher les lectures écritures est utilisé pour offrir au GPU un nombre virtuellement illimité de registres accessibles plus ou moins efficacement. Ils permettent au GPU de continuer à fonctionner d'une manière optimale en écrivant les valeurs générées par le geometry shader dans la mémoire vidéo dès qu'il n'y a plus assez de registres "hardware".

Le gain en performances peut être énorme, nous avons remarqué des différences de l'ordre de 50X (pas %!) entre AMD et Nvidia. Bien entendu reste à voir ce que vont faire les développeurs de cette possibilité. Nvidia ne les incitera bien entendu pas à en abuser.

Notez que la Radeon HD 2400 ne dispose pas de ce cache L2. Les accès à la mémoire vidéo ne sont donc pas cachés ce qui doit réduire les performances. Reste que de toute manière, comme vous pourrez le constater, le GPU est bien trop peu performant que pour être destiné à faire tourner des jeux DirectX 10 avec des fonctions avancées.


Antialiasing
Nous ne reviendrons pas sur le CFAA qui a déjà été décrit ici. Simple petit précision à ce niveau, le Radeon HD 2400 ne supporte pas le MSAA 8x et est limité au 4x.

L'antialiasing des Radeon HD 2900 a fait couler beaucoup d'encre puisque son implémentation est en partie buguée. C'est le cas également avec les Radeon HD 2600 et 2400. Il est probablement utile de décrire une nouvelle fois le problème puisque pas mal de confusion tourne à son sujet.

La qualité de l'antialiasing ne pose pas de problème, seules les performances sont réduites. Dans un GPU, en règle générale, les ROPs contiennent une unité fixe chargée de mélanger les samples tirées d'un buffer MSAA pour former le pixel final. Dans les Radeon HD 2000 actuels, cette unité ne fonctionne pas. Comment faire donc ? Utiliser le shader core pour réaliser ce mélange, ce qui offre l'avantage d'avoir accès à une unité programmable mais réduit les performances puisque de la puissance de calcul est utilisée. DirectX 10 oblige d'ailleurs les fabricants de GPUs à permettre aux développeurs de réaliser la même opération. Ceci dit, dans le cas qui nous occupe on peut supposer qu'AMD utilise dans ses drivers une méthode plus efficace pour réaliser cette opération. Reste qu'un coût sur les performances ne peut pas être évité.

Notez que ceci n'a rien avoir avec un antialiasing à base de shader tel qu'utilisé dans S.T.A.L.K.E.R. Du côté d'AMD, un vrai buffer MSAA est utilisé dans une résolution adaptée alors que dans S.T.A.L.K.E.R. il s'agit d'un filtre appliqué à une image classique sur base d'un certain nombre d'informations.
Vos réactions

Top articles