Partager via


Considérations sur les performances de l'interopérabilité entre Direct3D9 et WPF

Mise à jour : Juillet 2008

Vous pouvez héberger du contenu Direct3D9 à l'aide de la classe D3DImage. L'hébergement de contenu Direct3D9 risque d'altérer les performances de votre application. Cette rubrique décrit les meilleures pratiques permettant d'optimiser les performances en cas d''hébergement de contenu Direct3D9 dans une application Windows Presentation Foundation (WPF) : meilleures pratiques relatives à l'utilisation de la classe D3DImage et meilleures pratiques en cas d'utilisation de Windows Vista et de Windows XP et d'affichage sur plusieurs écrans.

Remarque :

Pour obtenir des exemples de code qui illustrent ces meilleures pratiques, consultez Création de contenu Direct3D9 qui peut être hébergé dans WPF.

Utilisation avec modération de D3DImage

Le contenu Direct3D9 hébergé dans une instance D3DImage n'est pas aussi rapidement restitué que dans une application Direct3D à proprement parler. La copie de la surface et le vidage du tampon de commande risquent de devenir des opérations coûteuses. Plus le nombre d'instances D3DImage est élevé, plus la quantité de vidages augmente et plus les performances se dégradent. Vous devez par conséquent utiliser D3DImage avec modération.

Meilleures pratiques sur Windows Vista

Pour optimiser les performances sur Windows Vista avec un affichage configuré pour utiliser le modèle de pilote d'affichage de Windows (WDDM), créez votre surface Direct3D9 sur un périphérique IDirect3DDevice9Ex. Cela active le partage de surface. La carte vidéo doit prendre en charge les fonctionnalités de pilote D3DDEVCAPS2_CAN_STRETCHRECT_FROM_TEXTURES et D3DCAPS2_CANSHARERESOURCE sur Windows Vista. Tous les autres paramètres entraînent la copie de la surface via le logiciel, ce qui altère considérablement les performances.

Remarque :

Si l'affichage est configuré sur Windows Vista pour utiliser le modèle de pilote d'affichage de Windows XP (XDDM), la surface est systématiquement copiée via le logiciel, quels que soient les paramètres. Lorsque vous utiliserez le WDDM avec la carte vidéo et les paramètres appropriés, vous constaterez de meilleures performances sur Windows Vista, car la copie de la surface s'effectue au niveau matériel.

Meilleures pratiques sur Windows XP

Pour optimiser les performances sur Windows XP en cas d'utilisation du modèle de pilote d'affichage de Windows XP (XDDM), créez une surface verrouillable qui se comporte correctement lorsque la méthode IDirect3DSurface9::GetDC est appelée. En interne, la méthode BitBlt transfère la surface via les périphériques au niveau matériel. La méthode GetDC fonctionne toujours sur les surfaces XRGB, mais elle ne fonctionne sur les surfaces ARGB que si l'utilisateur possède Windows XP SP3 ou Windows XP SP2 avec le correctif logiciel sur les fenêtres superposées. La carte vidéo doit prendre en charge la fonctionnalité de pilote D3DDEVCAPS2_CAN_STRETCHRECT_FROM_TEXTURES.

Une profondeur d'affichage de bureau de 16 bits risque d'altérer considérablement les performances. Un bureau de 32 bits est recommandé.

Si vous développez pour Windows Vista et Windows XP, testez les performances sur Windows XP. La saturation de la mémoire vidéo pose problème sur Windows XP. De plus, D3DImage utilise plus de mémoire vidéo et de bande passante sur Windows XP que sur le WDDM de Windows Vista, car des copies supplémentaires s'avèrent nécessaires dans la mémoire vidéo. Vous pouvez par conséquent vous attendre à ce que les performances soient moins bonnes sur XP que sur Vista avec du matériel vidéo identique.

Remarque :

Le XDDM est disponible à la fois sur Windows XP et sur Windows Vista, mais le WDDM n'est disponible que sur Windows Vista.

Meilleures pratiques en général

Lorsque vous créez le périphérique, utilisez l'indicateur de création D3DCREATE_MULTITHREADED. Cela altère les performances, mais le système de rendu WPF appelle les méthodes à partir d'un autre thread sur ce périphérique. Veillez à appliquer correctement le protocole de verrouillage, de sorte qu'aucun des deux threads ne puisse accéder simultanément au périphérique.

Si votre rendu est exécuté sur un thread managé WPF, il est vivement recommandé de créer le périphérique avec l'indicateur de création D3DCREATE_FPU_PRESERVE. Sans ce paramètre, le rendu D3D risque de rendre des opérations en double précision WPF imprécises et de créer des problèmes de rendu.

La disposition en mosaïque d'un D3DImage est rapide, sauf si vous disposez en mosaïque une surface non pow2 sans prise en charge matérielle ou si vous disposez en mosaïque un DrawingBrush ou un VisualBrush qui contient un D3DImage.

Meilleures pratiques relatives à l'affichage sur plusieurs écrans

Si vous utilisez un ordinateur qui possède plusieurs écrans, vous devez suivre les meilleures pratiques préalablement décrites. Vous devez également tenir compte d'autres considérations sur les performances lors de la configuration de plusieurs écrans.

Lorsque vous créez la mémoire tampon d'arrière-plan, celle-ci est créée sur un périphérique et un adaptateur spécifiques, mais WPF peut afficher le tampon d'affichage sur n'importe quel adaptateur. La copie d'un adaptateur à un autre pour mettre à jour le tampon d'affichage peut s'avérer très coûteuse. Si Windows Vista est configuré pour utiliser le WDDM avec plusieurs cartes vidéo et un périphérique IDirect3DDevice9Ex et que le tampon d'affichage se trouve sur un autre adaptateur mais toujours sur la même carte vidéo, les performances ne s'en trouvent pas altérées. Si le XDDM possède plusieurs cartes vidéo sur Windows XP et que le tampon d'affichage s'affiche sur un autre adaptateur que la mémoire tampon d'arrière-plan, les performances s'en trouvent considérablement altérées. Pour plus d'informations, consultez Création de contenu Direct3D9 qui peut être hébergé dans WPF.

Résumé des performances

Le tableau suivant indique les performances de mise à jour du tampon d'affichage sur plusieurs plans : fonction du système d'exploitation, format de pixel et verrouillabilité de la surface. Nous partons du principe que le tampon d'affichage et la mémoire tampon d'arrière-plan se trouvent sur le même adaptateur. Selon la configuration de l'adaptateur, les mises à jour matérielles sont généralement beaucoup plus rapides que les mises à jour logicielles.

Format de pixel de la surface

Windows Vista, WDDM et 9Ex

Autres configurations Windows Vista

Windows XP SP3 ou SP2 avec correctif logiciel

Windows XP SP2

D3DFMT_X8R8G8B8 (non verrouillable)

Mise à jour matérielle

Mise à jour logicielle

Mise à jour logicielle

Mise à jour logicielle

D3DFMT_X8R8G8B8 (verrouillable)

Mise à jour matérielle

Mise à jour logicielle

Mise à jour matérielle

Mise à jour matérielle

D3DFMT_A8R8G8B8 (non verrouillable)

Mise à jour matérielle

Mise à jour logicielle

Mise à jour logicielle

Mise à jour logicielle

D3DFMT_A8R8G8B8 (verrouillable)

Mise à jour matérielle

Mise à jour logicielle

Mise à jour matérielle

Mise à jour logicielle

Voir aussi

Tâches

Procédure pas à pas : création de contenu Direct3D9 à héberger dans WPF

Procédure pas à pas : hébergement de contenu Direct3D9 dans WPF

Concepts

Création de contenu Direct3D9 qui peut être hébergé dans WPF

Référence

D3DImage

Historique des modifications

Date

Historique

Raison

Juillet 2008

Ajout d'une nouvelle rubrique.

Modifications de fonctionnalités dans le SP1.