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 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

GDI et la 2D, de Windows XP à Windows 7

XP : la GDI sans concurrence

Jusqu’à Windows XP (inclus), la GDI a joué un rôle essentiel dans le rendu graphique en 2D, comme le montre la présence de procédures ultra-simplifiées : les mouvements de souris permettant de tracer une ligne, par exemple, sont transmis à win32k.sys, la bibliothèque centralisant l’ensemble des entrées graphiques. Peu importe, en réalité, que vous utilisiez la souris, le clavier ou un autre périphérique d’entrée, car toutes les données convergent vers la même routine et sont ensuite envoyées aux modules de rendu graphique en 2D. Les actions de l’utilisateur n’incluent que des informations graphiques en 2D, lesquelles sont immédiatement traduites en instructions de dessin GDI, qui sont elles-mêmes passées à l’interface GDI, comme l’illustrent les flèches roses du diagramme ci-dessous.

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

La simplicité de ces procédures explique également pourquoi il est si facile d’accélérer matériellement la 2D dès lors que la carte graphique soit capable de les traiter indépendamment. La flèche bleue montre le chemin (direct) qu’empruntent les informations pour retourner à l’application appelante, qui est alors prévenue quand le contenu d’une fenêtre a changé et doit donc être redessiné (par exemple lorsque plus aucune fenêtre ne la recouvre, ce qui signifie que son contenu est à nouveau visible).

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

Windows Vista : le CPU au lieu du GPU et le tampon au lieu du direct

Comme nous l’avons expliqué dans la première partie de cet article, le chemin qu’empruntent les données graphiques dans Windows Vista est complètement différent de celui prévu par Windows XP. Jusqu’à ce dernier, toutes les versions de Windows géraient la 2D via la GDI et win32k.sys.

Dans Windows Vista, ce rôle est repris par le DWM (Dynamic Windows Manager), qui gère les fenêtre uniquement via Direct3D. Chaque fenêtre est donc considérée comme une texture 3D et stockée dans le tampon des textures de la carte graphique. Il s’agit d’une évolution sensée et pratique pour les cartes graphiques modernes, mais cela signifie également que la GDI ne peut plus accéder aux données graphiques, que ce soit en lecture ou en écriture. Les communications semblent rompues.

C’est là qu’intervient la double mise en mémoire tampon du contenu des fenêtres, que nous avions abordée dans la première partie de cet article.

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

Que se passe-t-il exactement ? Pour comprendre, regardez les flèches rouges du diagramme ci-dessus. Au lieu d’un pilote graphique unifié (nommé « pilote d’affichage DDI » sous Windows XP), on fait maintenant appel au pilote CDD (Canonical Display Driver), qui est indépendant de la carte graphique. Alors que chaque fenêtre est stockée sous forme de texture dans la mémoire de la carte graphique, elle doit également être stockée dans un tampon équivalent au sein de la mémoire vive du système (et sa taille est égale à sa hauteur x sa largeur x 32 bits de couleurs, soit 4 octets).

La version la plus récente de chaque fenêtre est transformée en un bitmap stocké dans le tampon en mémoire système, puis convertie en texture 3D stockée dans la mémoire de la carte graphique. D’un bout à l’autre de la chaîne, le DWM gère toutes les fenêtres et déplace leur contenu à l’aide de Direct3D. Il traite également les données indiquant quelles portions des fenêtres sont visibles à l’écran, afin de faire en sorte que toute zone devenant dissimulée ou affichée soit redessinée (il s’agit de la flèche bleue dans le diagramme ci-dessus). Lorsque cela se produit, le DWM effectue le rendu de la fenêtre à l’aide de Direct3D et copie le contenu de la mémoire système dans la mémoire vidéo. Comme on le voit, les applications ne doivent plus redessiner les fenêtres (contrairement à ce qui se passait sous Windows XP).

En pratique, la méthode que nous venons de décrire désactive l’accélération matérielle de la 2D, ce qui engendre une réduction considérable des performances par rapport à Windows XP, réduction qui se manifeste très clairement par la tendance (bien documentée) de Vista à afficher des traînées en 2D et à consommer de grandes quantités de mémoire vive.

Windows 7 : l’accélération matérielle à doses homéopathiques

Comme nous le disions déjà dans la première partie de notre article, nous nous sommes rendus compte dès nos tous premiers tests que Windows 7 gérait au moins en partie l’accélération matérielle des commandes GDI… pour autant que la carte graphique dispose de pilotes WDDM 1.1. En l’absence de tels pilotes (ce qui par exemple le cas avec la plupart des chipsets graphiques Intel), Windows 7 se comporte à peu près comme Vista. Qu’est-ce que cela signifie en pratique ? C’est ce que va nous dire le diagramme suivant :

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

À première vue, cela ressemble à s’y méprendre au diagramme de Windows Vista. À une différence près : il n’est plus nécessaire de mettre deux fois en tampon le contenu de chaque fenêtre. Au lieu de la mémoire système, on parle maintenant « d’aperture memory », c’est-à-dire une région bien spécifique de la mémoire système à laquelle la carte graphique peut accéder directement. Si une zone d’une fenêtre est déplacée ou se fait recouvrir, son contenu est directement copié de cette région de la mémoire vers la mémoire de la carte graphique.

Malheureusement, contrairement à Windows XP, seules une série de commandes GDI sont prises en charge par le GPU sous Windows 7 : ClearType, ColorFill, BitBlt, AlphaBlend, TransparentBlt et StretchBlt, c’est-à-dire en langage courant, le rendu de texte, le remplissage de surfaces à l’aide de simples couleurs et la copie d’images et de surimpressions transparents. Par conséquent, le rendu d’images géométriques complexes n’est pas du tout accéléré mais les copies d’images et de remplissages d’images peuvent facilement être transférées de la mémoire système allouée à la carte graphique (la fameuse « aperture memory » de tout à l’heure) vers la mémoire vidéo.

Résumé

Windows XP accélérait matériellement l’ensemble des commandes GDI, Windows Vista aucune et Windows 7 certaines. Par rapport à Vista, Windows 7 dispose d’un modèle de pilotes WDDM qui réduit la consommation de mémoire en éliminant presque entièrement la double mise en tampon du contenu des fenêtres. Ceci dit, en réalité, même Vista bénéficie aujourd’hui de cette avancée : elle a en effet été intégrée à la platform update qui a été déployée via Windows Update à la fin de l’année 2009 (c’est-à-dire au moment où DirectX 11 a été lancé).

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