Guillaume André

Apprentissage, étude et approfondissement des nouvelles technologies

27 Mar, 2009

Silverlight 3 : Accélération GPU

Posted by: Guillaume Andre In: Silverlight

L’accélération GPU est l’une des nombreuses nouveautés de Silverlight 3. Elle permet à Silverlight d’utiliser votre carte graphique pour s’occuper du rendu de certains éléments graphique de votre interface (ceux que vous désirez). Cette technologie s’appuie sur DirectX pour les utilisateurs Windows et OpenGL pour les utilisateurs Mac.

 
View on Vimeo.
Cette vidéo a été réalisé avec Camtasia, par conséquent les FPS sont accentués. A la 12ème seconde l’accélération matériel est activée on obtient un gain de quasiement x10 sur les performances FPS.

L’activation de l’accélération graphique s’effectue au niveau de la page HTML dans la balise <OBJECT> :

<object id=”silverlightObject” data=”data:application/x-silverlight-2,” type=”application/x-silverlight-2″ width=”100%” height=”100%”>
     <param name=”source” value=”ClientBin/SilverlightApplication_AccelerationGPU.xap” />
     <param name=”EnableGPUAcceleration” value=”true” />
</object>

Notez l’existence du paramètre “EnableCacheVisualization” qui vous permettra de mettre en évidence les objets bénéficiant du cache. Ce paramètre n’est pas obligatoire mais plutôt pratique dans les phases de tests :
<param name=”EnableCacheVisualization” value=”true” />

Une fois activée au niveau du plugin vous allez pouvoir ajouter dans votre XAML :

<Canvas x:Name=”LayoutRoot” Width=”739″ Height=”700″ >
     <Canvas.CacheMode>
          <BitmapCache/>
     </Canvas.CacheMode>
</Canvas>

Le CacheMode vous permet de cibler des éléments spécifiques où vous souhaitez profiter de l’accélération matériel.

Après avoir fait quelques tests de performance je me suis rendu compte que l’accélération GPU au sein de Silverlight était tout de même réservé à certains domaines très gourmands en performance tels que : les jeux vidéos, les vidéos avec de hautes résolutions, la 3D…
En effet, comme vous pouvez le voir dans la vidéo le Path qui est animé est assez lourd. Si toutefois vous le remplacez par un simple Rectangle alors vous ne verrez aucune différence avec l’accélération matériel activée ou non.

Autre point qu’il est important de préciser, les éléments Storyboard n’ont pas vocation à être soumis à l’accélération matériel. L’animation modifiant l’objet en permanence, celui-ci serait sans cesse re-rendu et ce, au détriment du cache.

Voyons les conséquences de l’accélération sur la charge processeur du client :

Silverlight 3, Acceleration GPU graphique statistique

1, 2, 3 : Animations avec accélération GPU désactivé
4,5,6 : Animations avec accélération GPU activé

Afin d’être sûr de la charge processeur pour une animation, j’ai opté pour 3 animations consécutives. Le verdicte est sans appel, l’accélération GPU nous permet de réaliser un énorme gain de performance au niveau du processeur. Les graphiques parlent d’eux mêmes.

Tests réalisés avec la configuration suivante :

Intel(R) Core(TM)2 Duo CPU T7500 @ 2.20GHz 2.20GHz
Mémoire vive 4,00 Go
32 bits

Pour calculer le FPS d’une animation Silverlight je vous recommande la lecture de cet article rédigé par Mike Snow.

1 Response to "Silverlight 3 : Accélération GPU"

Comment Form