Accueil » Dossier » Accélération 2D : la Voodoo 4 plus forte que les Radeon HD 5800 et GeForce GTX !

Accélération 2D : la Voodoo 4 plus forte que les Radeon HD 5800 et GeForce GTX !

1 : Introduction 2 : GDI et la 2D, de Windows XP à Windows 7 4 : Symptômes des Radeon HD 5000 sous Win 7 5 : Notre logiciel de benchmark 2D en GDI 6 : Tom2D : texte 7 : Tom2D : lignes 8 : Tom2D : splines / courbes de Bézier 9 : Tom2D : polygones 10 : Tom2D : rectangles 11 : Tom2D : ellipses 12 : Tom2D : blitting 13 : Tom2D : étirement 14 : Conclusion

Rendu graphique 2D via GDI

Peu importe comment XP, Vista et Windows 7 interagissent avec la GDI : pour le développeur, le code reste identique. C’est l’implémentation de ce code, et particulièrement l’accélération par la carte graphique, qui diffère d’un Windows à l’autre, comme nous venons de le voir à la page précédente. Dans cette section, nous allons voir comment cela fonctionne en pratique.

Commandes de tracé de ligne

Quoi que l’on souhaite dire sur le rendu de la 2D via GDI, tout est basé sur une série bien définie d’instructions de dessin standardisées. Nous n’aborderons pas ces instructions en détail, mais il suffit de savoir qu’à chaque primitive graphique (lignes, courbes, polygones, rectangles et ellipses) correspond une commande spécifique pouvant être assortie de propriétés, comme le remplissage, l’épaisseur et la couleur de la ligne, etc. Plus loin dans cet article, nous décrirons ces commandes (ainsi que les paramètres qui leur sont associés) telles qu’elles sont envoyées à la GDI par les applications ; tout ce qui se produit après n’est de toute façon plus du ressort de ces dernières.

Dessin direct ou avec mise en tampon : une comparaison

D’une certaine manière, quand on veut déplacer du sable, peu importe que l’on fasse appel à un million de fourmis qui transportent chacune un grain du point A au point B ou que l’on utilise un éléphant qui déplace tout le sable dans un gros sac en une seule fois. Après tout, les deux méthodes atteignent le même objectif.

Il y a toutefois des différences évidentes entre les deux approches : celle de l’éléphant implique nettement moins de circulation entre les deux points et coordonner les actions d’un million de fourmis nécessite plus de temps et de ressources que charger un seul sac sur le dos du pachyderme.

Les fourmis ont pour avantages de ne pas requérir de sac (mémoire tampon) et d’être plus flexibles et efficaces que l’éléphant s’il n’y a que quelques grains de sable à déplacer. Au final et pour en finir avec notre analogie, le choix de l’une ou l’autre méthode dépendra du type d’activité et de la quantité de données à transférer. Voyons comment GDI procède pour dessiner le contenu d’un périphérique (par exemple un écran).

Image 1 : Accélération 2D : la Voodoo 4 plus forte que les Radeon HD 5800 et GeForce GTX !

Image 2 : Accélération 2D : la Voodoo 4 plus forte que les Radeon HD 5800 et GeForce GTX !

On comprend aisément que le recours à un tampon est considérablement plus rapide dès lors qu’il s’agit d’exécuter des commandes de dessin plus complexes. Le problème de cette méthode est qu’elle nécessite un espace de stockage temporaire (nommé Device-Independent Bitmap ou BIB) dont la taille est égale à celle de la zone d’affichage visible.

Image 3 : Accélération 2D : la Voodoo 4 plus forte que les Radeon HD 5800 et GeForce GTX !

Fort heureusement, le coût en ressource est généralement plus que compensé par le gain en vitesse de rendu. Bien entendu, lorsque seul un léger changement est nécessaire, il reste nécessaire de transférer l’intégralité du tampon vers la carte graphique ou le gestionnaire de fenêtres (le DWM). Examinons maintenant un exemple de dessin en rendu direct.

Rendu en temps réel lors du déplacement et de la modification d’objets 2D

Si, par exemple, vous souhaitez utiliser la souris déplacer une forme géométrique, disons un polygone, d’un point A à un point B de la surface de dessin, il serait ridicule de redessiner cette forme à chaque étape du chemin entre ces deux points, étant donné que procéder de la sorte nous obligerait à remplir le tampon puis à effectuer le rendu de son contenu. Il est bien plus simple, avec l’aide du ROP (« raster operator »), de faire appel aux techniques de rendu XOR (OU exclusif).

Image 4 : Accélération 2D : la Voodoo 4 plus forte que les Radeon HD 5800 et GeForce GTX !

Il faut commencer, à l’aide de l’opérateur XOR, par redessiner l’objet à son emplacement précédent, et ce, directement sur le périphérique d’affichage. Cela provoque comme par magie la disparition de l’objet original de la surface d’affichage. Il faut ensuite dessiner l’objet à son nouvel emplacement, sans utiliser XOR. Répétez ce processus pour chaque étape du mouvement de la souris et vous avez la possibilité de dessiner entre 10 et 50 changements de position par seconde, ce qui est plus qu’assez pour que l’œil humain considère le mouvement comme fluide. Il n’est nécessaire de re-remplir le tampon et d’effectuer le rendu de son contenu à l’écran qu’une fois la position finale atteinte.

Le dessin direct sur le périphérique d’affichage s’appelle « dessin flottant » ; retenez-le, car nous allons y faire référence à la section suivante, où nous expliquerons le comportement des cartes graphiques ATI Radeon HD 5xxx actuelles en 2D.

Un autre sujet de discussion concerne le rendu des « objets flottants », c’est-à-dire les primitives et les points de marquage servant à afficher et à orienter les dessins à l’écran. Lorsque le nombre de ces objets/valeurs devient trop élevé, il est possible de rencontrer des problèmes graphiques. Ils ne représentent pas une constante du dessin à l’écran et, dans la plupart des cas, ne sont pas mis en mémoire tampon par les applications.

Conclusions

Si l’on réexamine les diagrammes de la section précédente, on voit que sous Windows XP l’accélération matérielle de la 2D n’implique aucun détour : le rendu est direct. Sous Windows Vista, peu importe que l’on utilise un tampon ou que l’on tente d’envoyer chaque instruction de dessin au périphérique d’affichage : l’ensemble de la fenêtre est de toute façon mise en mémoire tampon. Sous Windows 7 avec des pilotes WDDM 1.1, par contre, on se débarrasse du deuxième tampon, ce qui signifie que seuls les changements doivent être mis à jour à l’écran.

Sommaire :

  1. Introduction
  2. GDI et la 2D, de Windows XP à Windows 7
  3. Rendu graphique 2D via GDI
  4. Symptômes des Radeon HD 5000 sous Win 7
  5. Notre logiciel de benchmark 2D en GDI
  6. Tom2D : texte
  7. Tom2D : lignes
  8. Tom2D : splines / courbes de Bézier
  9. Tom2D : polygones
  10. Tom2D : rectangles
  11. Tom2D : ellipses
  12. Tom2D : blitting
  13. Tom2D : étirement
  14. Conclusion