Partager via


Guide de la plateforme de rastérisation avancée Windows (WARP)

Cet article décrit windows Advanced Rasterization Platform (WARP) et les aspects suivants de WARP.

Qu’est-ce que le WARP ?

WARP est un rastériseur logiciel à grande vitesse et entièrement conforme. Il s’agit d’un composant de la technologie graphique DirectX introduite par le runtime Direct3D 11. Le runtime Direct3D 11 est installé sur Windows 7, Windows Server 2008 R2 et Windows Vista avec la mise à jour de [KB971644]. Windows 8, Windows 10, Windows Server 2012 & ci-dessus et Windows RT incluent le runtime Direct3D 11.1, qui a une version mise à jour de WARP. Windows 10 Fall Creators Update (1709) inclut une version de WARP qui prend en charge les runtimes Direct3D 11 et Direct3D 12.

Avantages du WARP

WARP offre les avantages suivants :

Suppression de la nécessité de rastériseurs de logiciels personnalisés

WARP simplifie le développement en supprimant la nécessité de créer un rastériseur logiciel personnalisé et d’ajuster votre application pour celui-ci au lieu de paramétrer votre application pour le matériel. En fournissant un rastériseur logiciel à usage général unique, vous n’avez plus besoin d’écrire des algorithmes de rendu d’image de plusieurs façons pour s’exécuter sur du matériel ou des logiciels avec des fonctionnalités et des fonctionnalités différentes. Vous pouvez toujours implémenter des algorithmes de plusieurs manières pour obtenir de meilleures performances ou une mise à l’échelle ; Toutefois, vous n’avez pas besoin de modifier l’API ou l’architecture de rendu utilisée pour implémenter ces algorithmes. Au lieu de cela, vous pouvez vous concentrer sur la création d’une application Direct3D 10 ou ultérieure qui se présentera de la même manière et qui fonctionnera correctement sur le matériel ou dans les logiciels.

Activation des performances maximales à partir du matériel graphique

Lorsqu’une application est paramétrée pour s’exécuter efficacement sur le matériel, elle s’exécute également efficacement sur WARP. L’inverse est également vrai; toute application qui est paramétrée pour s’exécuter correctement sur WARP fonctionnera correctement sur le matériel. Les applications qui utilisent Direct3D 10 et versions ultérieures de manière inefficace peuvent ne pas être mises à l’échelle efficacement sur différents matériels. WARP a des profils de performances similaires au matériel, donc le réglage d’une application pour les lots volumineux, la minimisation des changements d’état, la suppression des points de synchronisation ou des verrous bénéficieront à la fois au matériel et au WARP.

Activation du rendu lorsque le matériel Direct3D n’est pas disponible

WARP permet un rendu rapide dans diverses situations où les implémentations matérielles sont indésirables ou indisponibles, notamment :

  • Lorsque l’utilisateur n’a pas de matériel compatible Direct3D
  • Lorsqu’une application s’exécute en tant que service ou dans un environnement serveur
  • Lorsqu’une application souhaite réserver les ressources matérielles Direct3D pour d’autres utilisations
  • Lorsqu’une carte vidéo n’est pas installée
  • Lorsqu’un pilote vidéo n’est pas disponible ou ne fonctionne pas correctement
  • Lorsqu’une vidéo carte est insuffisante en mémoire, se bloque ou prend trop de ressources système pour initialiser

Tirer parti des ressources existantes pour le rendu logiciel

Il existe une vaste communauté, de nombreux livres, sites web, sdk, exemples, livres blancs, listes de diffusion et autres ressources qui peuvent vous aider à tirer parti du rendu d’image direct3D 10 et ultérieur basé sur un nuanceur. Avec WARP comme secours logiciel, vous pouvez utiliser les connaissances existantes sur le matériel pour améliorer les performances de votre application lorsqu’elle s’exécute avec du matériel ou des logiciels. En outre, de nombreux excellents outils des fournisseurs graphiques carte et du KIT de développement logiciel (SDK) DirectX peuvent vous aider à concevoir, générer, développer, déboguer et analyser les problèmes de performances des applications graphiques. Ces outils et connaissances peuvent désormais bénéficier au développement d’applications qui ciblent à la fois le matériel et les logiciels lorsque vous utilisez WARP.

Activation de scénarios qui ne nécessitent pas de matériel graphique

Divers algorithmes et applications (algorithmes de traitement d’images, impression, communication à distance, PC virtuels et autres émulateurs, rendu de polices de haute qualité, graphiques, graphiques, etc.) ont généralement été optimisés pour le processeur, car ils ne dépendent pas du matériel. Avec WARP, vous pouvez utiliser une architecture unique qui exécute ces algorithmes et applications et qui peut s’exécuter entièrement dans les logiciels ; toutefois, si l’accélération matérielle est disponible, vous pouvez en tirer parti.

Fin de la plateforme graphique DirectX

WARP vous permet d’accéder à toutes les fonctionnalités graphiques direct3D 10 et ultérieures, même sur des ordinateurs sans matériel graphique Direct3D 10 et versions ultérieures. Bits de capacité supprimés de Direct3D 10 (majuscules) ; Autrement dit, vous n’avez plus besoin de vérifier si les fonctionnalités graphiques sont disponibles à partir du matériel graphique, car Direct3D 10 et versions ultérieures garantit cette disponibilité. Vous pouvez maintenant utiliser toutes les fonctionnalités d’un large éventail de cartes vidéo sachant que leur application se comportera et ressemblera partout. Vous pouvez mettre à l’échelle les performances de ces applications en désactivant simplement les fonctionnalités graphiques coûteuses sur les cartes vidéo bas de gamme ou en rendant vers des cibles plus petites.

Fonctionnalités et exigences du WARP

WARP prend entièrement en charge toutes les fonctionnalités de Direct3D 10 et 10.1. Par exemple, WARP prend en charge les fonctionnalités les plus importantes suivantes :

  • Toutes les exigences de précision des spécifications Direct3D 10 et 10.1
  • Direct3D 11 utilisé avec les niveaux de fonctionnalités 9_1, 9_2, 9_3, 10_0 et 10_1 (pour plus d’informations sur les niveaux de fonctionnalités, consultez D3D_FEATURE_LEVEL)
  • Tous les formats de texture facultatifs, tels que les cibles de rendu multi-échantillon et l’échantillonnage à partir de surfaces flottantes
  • Antialiased, rendu de haute qualité jusqu’à 8x multi-échantillon anti-échantillon (MSAA)
  • Filtrage anisotropique
  • Applications 32 bits et 64 bits et applications 32 bits prenant en charge les grandes adresses

Lorsque vous installez la mise à jour de plateforme pour Windows 7 sur Windows 7 SP1 ou Windows Server 2008 R2 SP1, ce système d’exploitation inclut le runtime Direct3D 11.1 et une version de WARP prenant en charge Direct3D 11.x lorsqu’il est utilisé avec les niveaux de fonctionnalités 9_1, 9_2, 9_3, 10_0, 10_1 et 11_0.

Windows 8, Windows 10, Windows Server 2012 & ci-dessus et Windows RT incluent le runtime Direct3D 11.1 et une nouvelle version de WARP. Cette version prend en charge Direct3D 11.x lorsqu’elle est utilisée avec les niveaux de fonctionnalités 9_1, 9_2, 9_3, 10_0, 10_1, 11_0 et 11_1.

Windows 10 Fall Creators Update (1709) inclut une nouvelle version de WARP qui prend en charge les niveaux de fonctionnalités Direct3D 12_0 et 12_1.

La configuration minimale requise pour WARP est la même que pour Windows Vista, en particulier :

  • Processeur minimum de 800 MHz
  • MMX, SSE ou SSE2 n’est pas obligatoire
  • 512 Mo de RAM minimum

Comment utiliser WARP

Pour Direct3D 12, la création d’un appareil WARP nécessite d’abord l’identification de l’adaptateur WARP. Pour faciliter cela, DXGI 1.4 fournit la méthode IDXGIFactory4::EnumWarpAdapter . L’adaptateur WARP peut ensuite être fourni à D3D12CreateDevice pour créer un appareil WARP.

Les composants Direct3D 10, 10.1 et 11 peuvent utiliser un type de pilote supplémentaire que vous pouvez spécifier lorsque vous créez l’appareil (par exemple, lorsque vous appelez la fonction D3D11CreateDevice ). Ce type de pilote est D3D10_DRIVER_TYPE_WARP ou D3D_DRIVER_TYPE_WARP. Lorsque vous spécifiez ce type de pilote, le runtime crée un périphérique WARP et n’initialise pas de périphérique matériel.

Étant donné que WARP utilise la même interface logicielle pour Direct3D que le rastériseur de référence, toute application Direct3D qui peut prendre en charge l’exécution avec le rastériseur de référence peut être testée à l’aide de WARP. Pour utiliser WARP, renommez D3d10warp.dll pour D3d10ref.dll et placez-le dans le même dossier que l’exemple ou l’application. Ensuite, lorsque vous basculez vers ref, vous voyez le rendu WARP.

Si vous renommez WARP en D3d10ref.dll et que vous le placez dans C:\Program Files (x86)\Microsoft DirectX SDK (juin 2010)\Samples\C++\Direct3D\Bin\x86, vous pouvez exécuter tous les exemples DirectX sur WARP, soit en cliquant sur le bouton « Désactiver la référence » dans l’exemple, soit en exécutant l’exemple avec /ref spécifié sur la ligne de commande.

Toutes les applications qui peuvent utiliser Direct3D peuvent utiliser WARP. Cela inclut les types d’applications suivants :

Jeux occasionnels

Les jeux ont généralement des exigences de rendu simples. Toutefois, ils nécessitent également l’utilisation d’effets visuels impressionnants qui peuvent nécessiter une accélération matérielle. La majorité des titres de jeux les plus vendus pour Windows sont des simulations ou des jeux occasionnels, qui ne nécessitent pas de graphismes hautes performances. Toutefois, les deux styles de jeux bénéficient grandement des graphismes modernes basés sur un nuanceur et de la possibilité de mettre à l’échelle sur le matériel.

Applications hors jeu existantes

Une grande quantité d’applications graphiques nécessitent un nombre minimal de chemins de code dans leur couche de rendu. WARP permet à ces applications d’implémenter un seul chemin de code Direct3D qui peut cibler un grand nombre de configurations d’ordinateurs.

Jeux de rendu avancés

Les développeurs de jeux peuvent vouloir isoler les erreurs de rendu carte graphiques ou spécifiques au pilote. Par conséquent, tous les jeux, même extrêmement exigeants graphiquement, peuvent bénéficier de la possibilité de rendre leur contenu à l’aide de WARP. Vous pouvez utiliser WARP pour vérifier si des artefacts visuels que vous trouvez sont des erreurs de rendu ou des problèmes liés au matériel ou aux pilotes.

les autres applications ;

Les applications cibles pour WARP incluent également celles qui n’utilisent pas actuellement Direct3D 10 ou Direct3D 10.1. Ces applications cibles incluent les applications qui doivent toujours fonctionner sur tous les ordinateurs, les applications de traitement d’images qui n’écrivent pas de versions processeur et GPU des algorithmes de traitement d’images, les algorithmes de traitement d’images où la vitesse ou l’utilisation du GPU n’est pas critique, comme l’impression, et les émulateurs et les environnements virtuels qui affichent des graphiques 3D avancés.

Architecture et performances WARP

WARP est basé sur le code base du rastériseur de référence. Par conséquent, WARP utilise la même interface logicielle pour Direct3D 10 et versions ultérieures et DXGI. WARP est inclus dans Windows 7 dans le D3d10warp.dll, situé dans les dossiers des systèmes Windows. Deux versions de WARP sont installées sur des machines 64 bits, une version x86 et une version x64. La version x64 peut s’exécuter plus rapidement dans certaines circonstances, car le générateur de code contenu dans WARP peut tirer parti des registres supplémentaires disponibles lorsque les utilisateurs exécutent des applications 64 bits.

WARP contient les deux compilateurs en temps réel à haut débit suivants :

  • Compilateur de langage intermédiaire de haut niveau qui convertit le bytecode HLSL et l’état de rendu actuel en un flux optimisé de commandes vectorielles pour les étapes du nuanceur de géométrie (GS), du nuanceur de vertex (VS) et du nuanceur de pixels (PS) du pipeline.
  • Générateur de code juste-à-temps hautes performances qui peut prendre ces commandes et générer du code d’assembly SSE2, SSE4.1, x86, x64, arm et arm64 optimisé.

WARP utilise le pool de threads et la gestion complexe des tâches et le suivi des dépendances introduits dans Windows Vista pour permettre à toutes les parties du pipeline de rendu d’être distribuées efficacement sur les cœurs de processeur disponibles.

WARP utilise le rendu différé. Autrement dit, WARP peut traiter par lot les commandes de rendu afin que la rastérisation se produise uniquement lorsque suffisamment de données sont disponibles pour utiliser efficacement toutes les ressources du processeur. Le travail sur le thread d’application main est réduit pour permettre à l’application d’envoyer des commandes aussi rapidement que possible. Si une application est également multithread et qu’elle utilise le pool de threads, le travail est réparti uniformément entre WARP et l’application.

Le générateur de code WARP a été paramétré pour tirer le meilleur profit de l’architecture moderne du processeur. WARP s’exécute sur tous les ordinateurs qui peuvent exécuter Windows Vista et les systèmes d’exploitation ultérieurs, même si l’ordinateur ne prend pas en charge SSE. Toutefois, WARP a été optimisé pour les ordinateurs qui prennent en charge SSE2. Il contient également des optimisations pour des architectures spécifiques des processeurs AMD et Intel, ainsi que la prise en charge des extensions SSE 4.1.

WARP ne nécessite pas d’exécution de matériel graphique. Il peut s’exécuter même dans les situations où le matériel n’est pas disponible ou ne peut pas être initialisé.

Les applications et les exemples qui ont été conçus et conçus pour s’exécuter sur du matériel Direct3D 10 et ultérieur sans connaissance de WARP seront probablement bien exécutés à l’aide de WARP. Toutefois, nous vous recommandons de réduire autant que possible les paramètres de qualité et la résolution pour obtenir des fréquences d’images utilisables. Vous pouvez utiliser WARP pour développer et régler des applications qui s’exécutent correctement sur le matériel et les logiciels.

Étant donné que WARP utilise plusieurs cœurs de processeur pour l’exécution parallèle, il fonctionne mieux sur les processeurs multicœurs modernes. WARP s’exécute également beaucoup plus rapidement sur les ordinateurs sur lesquels les extensions SSE4.1 sont installées. Microsoft a effectué des tests et des réglages de performances importants sur les ordinateurs avec huit cœurs ou plus et SSE4.1, car ces ordinateurs haut de gamme deviendront plus courants pendant la durée de vie des systèmes d’exploitation Windows 7 et ultérieur.

Lorsque WARP s’exécute sur le processeur, il est limité par rapport à une carte graphique de plusieurs façons. La vitesse de bus côté avant d’un processeur est généralement d’environ ou de moins de 10 Go/s. En revanche, un carte graphique a souvent une mémoire dédiée qui utilise 20 à 100 Go/s ou plus de bande passante graphique. Le matériel graphique dispose également d’unités à fonction fixe qui peuvent effectuer des tâches complexes et coûteuses, telles que le filtrage de textures, la décompression de format ou les conversions, de manière asynchrone avec peu de surcharge ou de coût d’alimentation. L’exécution de ces opérations sur un processeur classique est coûteuse en termes de consommation d’énergie et de cycles de performances.

Les chiffres de performances typiques d’une machine à quatre cœurs Intel Penryn 3,0 GHz montrent que WARP peut dans certains cas surpasser les GPU graphiques Intégrés Direct3D 10 et ultérieur bas de gamme sur un certain nombre de points de référence. Le matériel graphique discret bas de gamme est généralement 4 à 5 fois plus rapide que WARP lors de l’exécution de ces benchmarks. Ces GPU intégrés ou discrets bas de bout ont une utilisation minimale des ressources du processeur. Les cartes graphiques de milieu de gamme ou haut de gamme sont beaucoup plus rapides que WARP pour de nombreuses applications, en particulier lorsqu’une application peut tirer parti du parallélisme et de la bande passante mémoire fournis par ces cartes graphiques.

WARP ne remplace pas le matériel graphique, d’autant plus que les performances raisonnables de Direct3D 10 et les matériels discrets ultérieurs sont désormais peu coûteux. L’objectif de WARP est de permettre aux applications de cibler du matériel compatible Direct3D sans avoir de chemins de code ou d’exigences de test considérablement différents, qu’elles s’exécutent sur du matériel ou dans des logiciels.

Les deux tableaux suivants présentent des exemples de données WARP avec diverses processeurs et cartes graphiques.

Le premier tableau montre des exemples de données WARP avec Direct3D 10 Crysis s’exécutant à 800 x 600 avec tous les paramètres de qualité à leurs niveaux les plus bas :

UC Temps Ave FPS Fps min. Min Frame Nombre maximal de FPS Cadre maximal
Core i7 8 cœurs à 3,0 GHz 271.57 7,36 3.46 1966 15.01 995
Penryn 4 cœurs à 3,0 GHz 351.35 5.69 2.49 1967 10.95 980
Penryn 2 cœurs à 3,0 GHz 573.98 3.48 1,35 1964 6,61 988
Core 2 Duo à 2,6 GHz 707.19 2.83 0.81 1959 5.18 982
Core 2 Duo à 2,4 GHz 763.25 2.62 0.76 1964 4.70 984
Core 2 Duo à 2,1 GHz 908.87 2.20 0,64 1965 3.72 986
Xeon 8 Cœurs à 2,0 GHz 424.04 4.72 1.84 1967 9,56 988
AMD FX74 4 cœurs à 3,0 GHz 583.12 3.43 1,41 1967 5.78 986
Phenom 9550 4 cœurs à 2,2 GHz 664.69 3.01 0,53 1959 5.46 987

Le deuxième tableau montre des exemples de données exécutant le même test sur diverses cartes graphiques :

Carte graphique Temps Ave FPS Min FPS Image minimale Max FPS Image maximale
NVIDIA 8800 GTS 23.58 84.80 60.78 1957 130.83 1022
NVIDIA 8500 GT 47.63 41.99 25.67 1986 72.57 991
NVIDIA Quadro 290 67.16 29.78 18.19 1969 49.87 1017
NVIDIA 8400 GS 59.01 33.89 21,22 1962 51.82 1021
ATI 3400 53.79 37.18 22,97 618 59.77 1021
ATI 3200 67.19 29.77 18.91 1963 45.74 980
ATI 2400 PRO 67.04 29.83 17.97 606 45.91 987
Intel DX10 Intégré 386.94 5.17 1,74 1974 16.22 995

Conformité warp

WARP réussit tous les tests standard de conformité WHQL (Windows Hardware Quality Labs) pour la validation des périphériques matériels Direct3D.

WARP a été testé sur une suite d’applications et de benchmarks Direct3D 10 et Direct3D 10.1, et sur des exemples de SDK de DirectX, NVIDIA et AMD.

WARP a utilisé l’outil de débogage et d’analyse PIX pour Windows dans ses tests ; Microsoft dispose d’une grande bibliothèque de captures d’images uniques d’applications qui sont utilisées pour comparer le matériel et WARP. La majorité des images semblent presque identiques entre le matériel et WARP ; lorsque de petites différences se produisent parfois, elles se trouvent dans les tolérances définies par la spécification Direct3D 10.