En terme de fonctionnalités, ATI a rattrapé son retard sur NVIDIA. Ainsi, la précision des calculs pour les pixel shaders, qui était auparavant « limitée » à 24 bits passe désormais à 32 bits, comme c’est le cas chez NVIDIA depuis le GeForce FX. De plus, ATI supporte désormais la version 3 des Pixel Shader et gère donc les branchements dynamiques tout en annonçant que l’impact de ceux-ci sur les performances est moins coûteux que sur les architectures concurrentes.
Le High Dynamic Range est également de la partie puisque les Radeon X1800 sont désormais capable d’effectuer le blending sur les textures FP16. Ce format de texture utilisant des nombres à virgule flottante est utilisé dans des jeux tels que Far Cry, Splinter Cell ou Age Of Empire 3 afin d’obtenir des éclairages plus réalistes. Mieux, alors que les GeForce ne supportent pas l’anti crénélage lorsque le HDR est utilisé, les Radeon X1800 outrepassent cette limitation.
Au niveau des unités de calcul, elles sont comme sur les X800 au nombre de 16 pour le pixel shading comme le texturing. Par contre, la partie vertex shading a été musclée puisque l’on passe de 6 à 8 unités. 3DMark05 appréciera.
On a souvent parlé de la limitation du nombre de registres chez Nvidia puisque seulement 2 registres FP32 existaient réellement par pixel dans les GeForce FX et 4 dans les GeForce 6 et 7, alors que chez ATI, les 12 registres requis par les Pixel Shader 2.0 étaient bel et bien présents et pas "émulés" à partir d´un nombre plus réduit. Par contre ce qui est moins connu, c´est que ces 12 registres n´étaient accessibles qu´avec 2 threads effectifs, si 4 étaient utilisés, ils devaient se partager l´espace des registres, ce qui revenait à 6 registres par pixels, et à 3 registres par pixel avec 8 threads effectifs.
La solution de Nvidia : le long pipeline
La solution d´ATI : l´Ultra Threading
au lieu de masquer la latence via un long pipeline comme Nvidia, ou via une architecture fixe comme auparavant, ATI utilise un nombre élevé de threads dont une grosse partie restent en veille en attendant un résultat des unités de texturing, ce qui permet de combiner les avantages des 2 architectures.
Sur le plan des branchements dynamiques, le fait qu´ATI utilise des threads très petits, lui permet d´éviter plus souvent que Nvidia de calculer les 2 branches pour tous les pixels, ce qui pourrait devenir un avantage significatif à l´avenir. Toujours à ce niveau, ATI dispose, en plus du bloc pixel shading et du bloc texturing, d´un troisième bloc en parallèle qui s´occupe des instructions de branchements qui n´ont donc pas vraiment de coût sur les performances alors qu´elles nécessitent plusieurs cycles chez Nvidia.
Là où ATI n´a pas amélioré fortement son architecture, c´est au niveau des unités de calcul puisqu´elles restent globalement identiques à celles des Radeon 9700/X800 ...
Par rapport aux 9700/X800, ATI a malgré tout fait des petites améliorations, notamment avec la gestion native de l´instruction sincos, mais globalement, Nvidia conserve un avantage au niveau de la puissance de calcul. ATI se défend à ce sujet en expliquant que son architecture permet de maximiser l´utilisation de ses unités de calcul ce qui permet de compenser.
L´architecture X1000 dispose au niveau des pixel shader d´une fonctionnalité assez innovante, appelée "scater" qui permet à n´importe quel moment d´enregistrer n´importe quelle valeur directement dans la mémoire de la carte graphique, ce qui est un pas en avant gigantesque par rapport aux accès très limité à la mémoire des autres GPUs. Ceci est rendu possible par la nouvelle architecture mémoire qui est très flexible. Grossièrement cette fonction permet de disposer d´un nombre de registres illimité et offre énormément de nouvelles possibilités lors de l´utilisation du GPU comme unité de calcul général en GPGPU. Cette fonction est cependant très en avance sur son temps et ne peut pas être utilisée à travers DirectX 9 mais, fait sans précédant dans l´industrie du GPU, ATI a déclaré avoir l´intention de publier les informations de bas niveau de ses GPU X1000 courant 2006, ce qui permettra aux développeurs sur GPGPU d´accéder à la puce sans passer par une API et donc d´en utiliser toutes les possibilités !