ou INSCRIVEZ-VOUS Mot de passe oublié ?
Publicité

Dossier Vista : première partie

Vincent HERMANN, Jerôme BOSCH le 30 janvier 2006 (147 097 lectures)
Gestion des ressources graphiques sous Vista


Vista intègre un tout nouveau modèle d’architecture graphique qui repose entièrement sur DirectX. Le nouveau modèle de pilotes WDDM (Windows Display Driver Model) est lui aussi basé lui aussi sur DirectX.

Voici le fonctionnement général du modèle WDDM :

  • DirectX envoie des ordres au pilote graphique en mode utilisateur. Ce pilote est chargé en fait de gérer la quasi-totalité du travail. Il va interpréter les informations envoyées et renvoyer un command buffer (une instruction) à DirectX.
  • DirectX communique cette information à son noyau graphique situé en espace noyau. Le noyau graphique est le centre de toutes les tâches graphiques sur Vista et tout transite par lui.
  • Le noyau graphique communique l’information au pilote en mode noyau de la carte graphique. Ce pilote va valider les données et transformer l’information en une information directement utilisable par la carte graphique : le DMA buffer. Le DMA est un procédé qui permet de transférer des blocs mémoires entre la RAM et un périphérique (ici, la carte graphique) sans utilisation du CPU. Le DMA buffer est ensuite transmis au noyau graphique.
  • Le noyau graphique est doté d’un ordonnanceur dont le but est de partager le GPU entre les différentes applications graphiques. Le DMA buffer est placé dans une liste de batch d’exécution.
  • Quand l’ordonnanceur lui donne la main, le noyau envoie le DMA buffer au GPU

   

La stabilité des pilotes graphiques devrait être grandement améliorée car la quasi-totalité du code se situe au niveau des pilotes utilisateur. Si un pilote plante, Vista pourra tenter de le redémarrer ou, dans le pire des cas, remettre le pilote SVGA par défaut, le temps d’une mise à jour de pilotes. Ce changement de pilote est permis par l’accès non exclusif au GPU. Ce dernier, en cas de mauvais fonctionnement, peut également avertir le pilote. Dans ce cas, le pilote peut réinitialiser le GPU au niveau matériel et ainsi éviter le plantage. ATI ferait déjà fonctionner par exemple depuis quelques mois de nouveaux pilotes très stables basés sur ce nouveau modèle.

Sur Vista, le GPU devient une ressource partagée, ce qui constitue une différence majeure par rapport aux versions précédentes de Windows. Il fonctionne comme un coprocesseur graphique, ce qui permet, entre autres, de faire fonctionner plusieurs applications DirectX en même temps : un cas impossible sous Windows XP. Autre conséquence de l’accès non exclusif au GPU : la possibilité d’installer un pilote graphique sans nécessiter de redémarrage. Il sera aussi possible d’autoriser le branchement à chaud de cartes graphiques (si le matériel le permet), ce qui ferait de Vista le premier système grand public à le permettre.

Le noyau graphique gère également la mémoire graphique qui utilise la mémoire vidéo mais peut aussi être étendue à la mémoire vive et être paginée sur le disque dur. Sur Vista, les ressources graphiques ne sont pas limitées et la pagination peut permettre de stocker la mémoire graphique non utilisée. L’ancien modèle de pilotes XPDDM n’utilisait d’ailleurs quasiment pas la mémoire vidéo. On notera qu’une image 1600x1200 en 32 bits consomme seulement 7,32Mo, auxquels il faudra bien sur rajouter la mémoire consommée par les applications, mais nous y reviendrons plus tard.

Le modèle de pilote devrait être disponible sous deux formes : un modèle basique et un autre plus avancé. :

  • Le modèle basique utilise DirectX 9L. Pour le modèle basique, une fois qu’un batch (liste d’exécution) a démarré au niveau de l’ordonnanceur du noyau graphique, il n’est plus possible de l’arrêter. Avec le modèle avancé l’ordonnancement est géré au niveau du matériel. Cela permet une granularité plus fine et une utilisation réduite du CPU
  • Le modèle avancé permettra une virtualisation complète du GPU grâce aux possibilités matérielles des cartes graphiques DirectX 10. Les DMA buffers pourraient ainsi être crées directement en espace utilisateur. Dans ce modèle également, l’ordonnanceur sera géré matériellement, ce qui permettra une granularité plus fine et une utilisation toujours plus réduite du CPU.

La compatibilité avec les anciens DirectX antérieurs à la version 9 est conservée ainsi que l’accélération graphique. Les appels sont redirigés sur DirectX 9 lorsque cela est encore possible. Pour les applications développées pour cette version, les interfaces se basent sur DirectX 9.0c.

DirectX 9L est plus connu sous le nom de Windows Graphics Foundation 1.0 (ex-Avalon), qui est une version améliorée de DirectX 9. Il exploite les possibilités fournies par les pilotes WDDM et autorise la création de surfaces DirectX partagées entre les applications, ce dont nous verrons l’utilité plus loin. Il permet une meilleure gestion de la mémoire et un meilleur contrôle sur les ressources graphiques.

DirectX 10 est, lui, connu également sous le nom de Windows Graphics Foundation 2.0 : il s'agit d'une version totalement neuve de DirectX, aussi bien au niveau du code qu’au niveau de l’architecture, ce qui le rend incompatible avec toutes les versions précédentes de DirectX. L’idée principale de DirectX 10 est l’uniformisation du matériel. L’idéal serait à terme de faire disparaître la notion de CAPS qui, sur les versions actuelles de DirectX, permet d’interroger les cartes pour en connaître leurs possibilités. Les capacités graphiques deviendraient identiques quelque que soit la marque de la carte graphique et la différence se ferait donc uniquement sur les performances.

C’est ce que nous expliquions déjà plus haut : le GPU devrait prendre le même rôle que le CPU au niveau des taches graphiques. A noter que cette version 10 de DirectX devrait se baser sur les Pixel Shaders 4.0 et sera exclusivement réservée à Vista. Ajoutons enfin que DirectX 10 sera muni d’un tout nouveau pipeline.

Concernant OpenGL, Windows XP intégrait une version maison d’OpenGL 1.1. Mais l’accélération était uniquement logicielle, ce qui provoquait une baisse significative des performances. Sur Vista, la version Microsoft d’OpenGL est basée sur l’OpenGL 1.4, et la perte de performances sera bien moindre. Vista permet cependant de pouvoir utiliser les pilotes ICD fournis par les constructeurs, et dans ce cas-là, il n’y a aucune perte de performances. Les mauvaises performances sur XP ont d’ailleurs amené la majorité des développeurs à utiliser l’OpenGL ICD.

Sur Vista, l’implémentation OpenGL de Microsoft est compatible avec le moteur graphique Avalon/WPF. Sur les bêtas actuelles, l’utilisation d’OpenGL ICD désactive cependant la nouvelle interface graphique Aero et l’utilisateur se retrouve alors avec une qualité visuelle amoindrie. Ce problème ne concerne cependant que les applications OpenGL ICD en mode fenêtré.


Sous Windows XP, les applications (hors jeux) affichent les fenêtres directement à l’écran. Elles ne sont pas du tout capables d’exploiter le GPU et la mémoire vidéo n’est utilisée que pour mettre en cache les polices de caractères. Le gestionnaire de fenêtre de Vista porte le nom de Desktop Window Manager (DWM) et utilise le mécanisme de composition.


Le Desktop Window Manager conserve une surface DirectX du bureau. Le mécanisme est similaire à ce que l’on trouve d’ailleurs dans les jeux. Chaque application conserve un bloc mémoire représentant la zone cliente de la fenêtre : l’application n’affiche plus directement sur l’écran mais sur cette surface. Grâce au procédé de surface partageable expliqué plus tôt, le DWM accède aux différentes surfaces des fenêtres et va composer le tout sur le bureau. Il est aussi capable de réutiliser les surfaces déjà allouées si la mémoire vidéo est suffisante. Les bordures et boutons hors de la zone cliente de la fenêtre sont elles aussi composées en utilisant le moteur WPF (voir plus loin).

Le mécanisme de composition porte le nom d « Unified Composition Engine » (UCE). Il peut composer le contenu des fenêtres dans le bureau comme expliqué au-dessus, mais il peut également composer les différents contrôles dans la fenêtre d’une application. Cette composition utilise le mécanisme des « dirty rectangles» qui consistent à modifier uniquement les zones modifiées depuis le dernier rafraîchissement. Cela permet de faire diminuer la charge du processeur central lors des rafraîchissements. Lors de fortes charges du processeur, le DWM peut également réduire ce rafraîchissement. A noter que le DWM se désactive quand une application est en plein écran.


Certains problèmes vont également disparaître. Par exemple, en cas de plantage, quand une application « décroche » et ne répond plus, la fenêtre continuait d'être rafraîchie. Quand on déplace également rapidement une fenêtre, le bureau pouvait aussi mal se rafraîchir. Ces bugs visuels disparaissent avec la composition.

 

Windows intègre un nouveau moteur de présentation : Windows Presentation Foundation (WPF), anciennement connu sous le nom d’Avalon. Il est destiné à remplacer la GDI dans les nouvelles applications Vista. Il a été conçu, selon Microsoft pour pouvoir évoluer sur une durée de plus de vingt ans. Il faut avouer que Microsoft a été rapidement limité par l’évolution de la GDI et ne souhaite pas renouveler cette erreur. La firme a donc introduit une séparation très franche entre le moteur de présentation et l’interface graphique elle même. C’est une composante de la nouvelle API managée WinFX. A noter qu’il est impossible de « mixer », au sein d’une même application, les utilisations simultanées de la GDI et de la WPF.

La Windows Presentation Foundation est conçue autour de la technologie XAML. Le XAML est un langage destiné à exprimer en XML (un format ouvert de description de données) une interface graphique Windows. Toutes les fonctionnalités du moteur WPF sont exprimées dans des balises XML. Ce choix d’un format basé sur le XML devrait permettre des intégrations simplifiées de nouveautés et contribuer fortement à l’évolutivité du moteur.

WPF propose entre la gestion complète des fonctions suivantes, en plus de proposer une certaine intégration avec la reconnaissance vocale :

  • La 3D
  • Toutes les primitives 2D
  • Les images
  • Les vidéos
  • Les transformations
  • Les filtres
  • Les animations

Il sera possible également de déléguer entièrement la création de l’interface à des designers à l’aide de logiciels comme Microsoft Expression, Aurora, ZAM 3D ou l’extension Cider de Visual Studio 2005. L’utilisation d’un langage déclaratif comme le XML, permet aussi d’apporter une plus grande richesse graphique aux applications comme cela est déjà le cas sur les pages web. L’un des objectifs de la Windows Presentation Foundation est d’ailleurs de simplifier le développement d’interfaces en général. Les possibilités apportées par le moteur de présentation sont quasi illimitées.

La WPF maintient en permanence un « arbre » stockant l’état visuel des différents contrôles d’une fenêtre et peut libérer de la mémoire au cas où celle-ci viendrait à manquer. Il maintient en effet un graphe représentant vectoriellement l’interface des fenêtres WPF. Pour donner un exemple, il peut stocker directement un bitmap contenant un carré vert de 1200x1200 pixels ou stocker l’ordre « créer un carré vert de 1200 sur 1200 pixels ». WPF gère 3 niveaux de performances :

  • L’accélération logicielle où une carte DirectX 7 minimum est nécessaire.
  • L’accélération matérielle avec DirectX9 et 32Mo de mémoire vidéo minimum.
  • Une accélération totale avec les Pixels Shaders 2.0 où la majorité des primitives vectorielles 2D sont accélérées avec l’aide des pixels shaders2. Les Drivers WDDM sont nécessaires.

WPF étant développé pour prendre appui sur DirectX 9L (WGF 1.0), la majorité des primitives vectorielles 2D est accélérée par les Pixels Shaders 2.0. Il est possible aussi d’appliquer des transformations aux surfaces à l’aide du GPU. Un GPU auquel la WPF délèguera d’ailleurs un maximum de taches.

Avec WPF également, l’application n’est plus sollicitée pour le rafraîchissement d’une fenêtre, contrairement à Windows XP où le système doit fréquemment envoyer des requêtes WM_PAINT afin que les applications rafraîchissent leurs fenêtres associées. WPF est en effet capable de redessiner seul l’interface d’une application, ce qui fait d’autant baisser la charge CPU. Dans WPF il est possible d’intégrer directement n’importe quel type d’images et Vista gère d’ailleurs des codecs d’images associés à différents formats. Les développeurs auront donc la possibilité d’élargir le nombre de formats d’images gérés par le système.

Microsoft devrait sortir une version allégée de son moteur de présentation. Cette dernière est pour le moment nommée WPF/E : Windows Presentation Foundation Everywhere. Il gère le XAML et interagit avec le moteur en JavaScript. On sait pour l’instant qu’il devrait être porté sous MacOS X ainsi que vers des vieilles versions de Windows, PDA, et téléphones.

Concernant la qualité visuelle, WPF utilise des pixels virtuels d’un 1/96 de pouces. Vista permet de modifier le DPI (Dot Per Inch, point par pouce) de l’interface graphique. A l’heure actuelle les écrans supportent des résolutions assez importantes, mais peu de gens utilisent ces résolutions car l’affichage peut se révéler trop petit et fatiguer les yeux. WPF va pouvoir se servir de la même technique qui est utilisée dans les jeux : augmenter la résolution de l’affichage sans changer les rapports de taille. Pour l’interface de Windows, cela reviendra donc à augmenter la résolution pour que l’affichage soit plus fin, sans changer la taille des icônes ni des fenêtres.

Les applications GDI devraient, elles aussi, profiter de ce High DPI. Elles pourront déclarer qu’elles sont compatibles avec le High DPI et pourront créer elle même des interfaces utilisant cette technologie. Si elles n’en sont pas capables, un algorithme spécial sera appliqué afin que la qualité visuelle soit tout de même supérieure à ce que l’on peut connaître pour Windows XP par exemple.

Concernant l’interface elle-même, Aero est le nom de code de la nouvelle interface graphique de Vista. Signifiant « Authentic, Energetic, Reflective and Open » (ce qui donne en français : Authentique, Energique, Réfléchissant et Ouvert), elle obéit à une charte graphique bien définie suivant plusieurs grands principes. Cette interface nécessitera obligatoirement des pilotes WDDM et l’activation du Desktop Window Manager.

Il est normalement prévu quatre niveaux d’interface :

  • Aero Glass : c’est l’interface la plus complète. Elle intègre la composition, le High DPI, la pleine transparence, toutes les animations. Elle nécessite une carte graphique DirectX 9 avec 64 Mo de mémoire vidéo minimum, ainsi que des drivers WDDM.
  • Aero Express: C’est une version allégée d’Aero Glass. Elle ne gère pas la transparence et gère moins d’animations. Elle nécessite une carte graphique DirectX 9 avec 32 Mo de mémoire vidéo minimum, ainsi que des drivers WDDM.
  • Aero To Go : elle correspond à l’interface disponible sur Windows XP mais avec le look de vista. Elle peut fonctionner autant avec les drivers WDDM que XPDDM et gère autant de cartes graphiques que Windows XP
  • Classic : C’est la même interface que Aero To Go mais avec le look de Windows XP

Cependant, d’après Paul Thurrott, il n’y aurait plus que deux niveaux d’interfaces : Aero et Basic. Le niveau d’interface est automatiquement choisi après l’installation ou le changement de matériel par l’outil de benchmark WinSAT. Nous reviendrons plus tard sur cet outil. Le moteur de présentation devrait être disponible pour Windows XP et Windows Server 2003 pour aider à propager l’utilisation de WinFX par les développeurs.

Voilà pour la première partie du dossier ;)

La prochaine partie traitera de la gestion du réseau, de la sécurité en général et des technologies associées à Vista, telles que WinFS et Monad.