Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet article décrit la plateforme de rastérisation avancée Windows (WARP) et les aspects suivants de WARP.
- Qu’est-ce que WARP ?
-
avantages WARP
- suppression de la nécessité de rastériseurs logiciels personnalisés
- activation des performances maximales à partir de de matériel graphique
- activation du rendu lorsque le matériel Direct3D n’est pas disponible
- tirer parti des ressources existantes pour le rendu logiciel
- scénarios d’activation qui ne nécessitent pas de de matériel graphique
- terminer le de la plateforme Graphiques DirectX
- fonctionnalités et exigences WARP
- comment utiliser le WARP
-
types d’applications recommandés pour le WARP
- Jeux occasionnels
- applications non-jeux existantes
- jeux de rendu avancés
- autres applications
- l’architecture et les performances WARP
- de conformité WARP
Qu’est-ce que WARP ?
WARP est un rastériseur logiciel entièrement conforme à haute vitesse. 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 [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 de WARP
WARP offre les avantages suivants :
- suppression de la nécessité de rastériseurs logiciels personnalisés
- activation des performances maximales à partir de de matériel graphique
- activation du rendu lorsque le matériel Direct3D n’est pas disponible
- tirer parti des ressources existantes pour le rendu logiciel
- scénarios d’activation qui ne nécessitent pas de de matériel graphique
- terminer le de la plateforme Graphiques DirectX
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 de régler votre application pour elle au lieu de régler votre application pour le matériel. En fournissant un ratériseur logiciel à usage général unique, vous n’avez plus besoin d’écrire des algorithmes de rendu d’images de plusieurs façons pour s’exécuter sur du matériel ou des logiciels avec différentes fonctionnalités et fonctionnalités. Vous pouvez toujours implémenter des algorithmes de plusieurs façons pour améliorer les performances ou la 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 grande application Direct3D 10 ou ultérieure qui ressemblera bien au matériel ou au logiciel.
Activation des performances maximales à partir du matériel graphique
Lorsqu’une application est paramétrée pour s’exécuter efficacement sur du matériel, elle s’exécute également sur WARP. L’inverse est également vrai ; toute application qui est paramétrée pour s’exécuter correctement sur WARP s’exécute correctement sur le matériel. Les applications qui utilisent Direct3D 10 et ultérieurement inefficaces peuvent ne pas être mises à l’échelle efficacement sur différents matériels. WARP a des profils de performances similaires au matériel, de sorte que le réglage d’une application pour les lots volumineux, la réduction des modifications d’état, la suppression des points de synchronisation ou des verrous bénéficie à la fois du matériel et du 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 :
- Quand 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 carte vidéo 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 communauté énorme, de nombreux livres, sites Web, kits SDK, exemples, livres blancs, listes de diffusion et autres ressources qui peuvent vous aider à tirer parti du rendu d’image basé sur direct3D 10 et versions ultérieures. Avec WARP comme secours logiciel, vous pouvez utiliser des 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 de cartes graphiques et dans le Kit de développement logiciel (SDK) DirectX peuvent vous aider à concevoir, créer, développer, déboguer et analyser les problèmes de performances des applications graphiques. Ces outils et ces connaissances peuvent désormais bénéficier au développement d’applications qui ciblent à la fois du matériel et des logiciels lorsque vous utilisez WARP.
Activation de scénarios qui ne nécessitent pas de matériel graphique
Différents algorithmes et applications (algorithmes de traitement d’images, impression, communication à distance, PC virtuels et autres émulateurs, rendu de police de haute qualité, graphiques, graphiques, et ainsi de suite) 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 ; pourtant, si l’accélération matérielle est disponible, vous pouvez en tirer parti.
Fin de la plateforme Graphiques DirectX
WARP vous permet d’accéder à toutes les fonctionnalités graphiques Direct3D 10 et ultérieures, même sur les ordinateurs sans matériel graphique Direct3D 10 et ultérieur. Bits de capacité supprimés 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 les versions ultérieures garantissent cette disponibilité. Vous pouvez désormais utiliser toutes les fonctionnalités d’une large gamme 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 des cartes vidéo de bas de bout en bout ou en rendant à des cibles plus petites.
Fonctionnalités et exigences de WARP
WARP prend entièrement en charge toutes les fonctionnalités Direct3D 10 et 10.1. Par exemple, WARP prend en charge les fonctionnalités les plus importantes suivantes :
- Toutes les exigences de précision de la spécification Direct3D 10 et 10.1
- Direct3D 11 lorsqu’il est utilisé avec les niveaux de fonctionnalité 9_1, 9_2, 9_3, 10_0 et 10_1 (pour plus d’informations sur les niveaux de fonctionnalité, consultez D3D_FEATURE_LEVEL)
- Tous les formats de texture facultatifs, tels que les cibles de rendu multisample et l’échantillonnage à partir de surfaces flottantes
- Antialiased, rendu de haute qualité jusqu’à 8x multisample antialiasing (MSAA)
- Filtrage anisotropique
- Applications 32 bits et 64 bits et applications de grande taille prenant en charge les applications 32 bits
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 ensuite le runtime Direct3D 11.1 et une version de WARP qui prend en charge Direct3D 11.x lorsqu’il est utilisé avec 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 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 Direct3D 12 niveaux de fonctionnalités 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
- Minimum 512 Mo de RAM
Utilisation de WARP
Pour Direct3D 12, la création d’un appareil WARP nécessite d’abord d’identifier 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 D3D11CreateDevice fonction). 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 un périphérique matériel.
Étant donné que WARP utilise la même interface logicielle pour Direct3D que le raté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 la référence, vous verrez le rendu WARP.
Si vous renommez WARP en D3d10ref.dll et placez-le 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 « Bascule Ref » dans l’exemple, soit en exécutant l’exemple avec /ref spécifié sur la ligne de commande.
Types d’applications recommandés pour WARP
Toutes les applications qui peuvent utiliser Direct3D peuvent utiliser WARP. Cela inclut les types d’applications suivants :
- Jeux occasionnels
- applications non-jeux existantes
- jeux de rendu avancés
- autres applications
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, dont aucun ne nécessite de graphismes hautes performances. Toutefois, les deux styles de jeux bénéficient considérablement des graphismes basés sur des nuanceurs modernes et de la possibilité de mettre à l’échelle sur le matériel.
Applications non-jeux existantes
Une grande quantité d’applications graphiques nécessite un nombre minimal de chemins de code dans leur couche de rendu. WARP permet à ces applications d’implémenter un chemin de code Direct3D unique qui peut cibler un grand nombre de configurations d’ordinateurs.
Jeux de rendu avancés
Les développeurs de jeux peuvent souhaiter isoler les erreurs de rendu spécifiques à la carte graphique ou au pilote. Par conséquent, tous les jeux, même extrêmement exigeants graphiquement, peuvent tirer parti de la possibilité de rendre leur contenu à l’aide de WARP. Vous pouvez utiliser WARP pour vérifier si les artefacts visuels que vous trouvez sont des erreurs de rendu ou des problèmes avec le matériel ou les pilotes.
Autres applications
Les applications cibles pour WARP incluent également celles qui n’utilisent peut-être pas Direct3D 10 ou Direct3D 10.1. Ces applications cibles incluent des applications qui doivent toujours fonctionner sur tous les ordinateurs, les applications de traitement d’images qui n’écrivent pas les 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 la base de code de 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 de systèmes Windows. Deux versions de WARP sont installées sur des machines 64 bits, une version x86 et 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 à haute vitesse et en temps réel suivants :
- Compilateur de langage intermédiaire de haut niveau qui convertit le bytecode HLSL et l’état de rendu actuel en flux optimisé de commandes vectorielles pour les étapes 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 des tâches complexes 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 exécuter des commandes de rendu par lots afin que la rastérisation se produise uniquement lorsque des données suffisantes sont disponibles pour utiliser efficacement toutes les ressources du processeur. Le travail sur le thread d’application principal est réduit pour permettre à l’application d’envoyer des commandes le plus rapidement possible. Si une application est également multithread et utilise le pool de threads, le travail sera distribué 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 du processeur moderne. 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 l’exécution du 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 exemples qui ont été conçus et générés pour s’exécuter sur direct3D 10 et ultérieur matériel sans aucune connaissance de WARP fonctionneront probablement correctement à l’aide de WARP. Toutefois, nous vous recommandons de réduire les paramètres de qualité et la résolution autant que possible pour atteindre les taux 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 d’UC pour l’exécution parallèle, il fonctionne le mieux sur les processeurs multicœurs modernes. WARP s’exécute également beaucoup plus rapidement sur les ordinateurs avec les extensions SSE4.1 installées. Microsoft a effectué des tests et des performances significatifs 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érieurs.
Lorsque WARP s’exécute sur le processeur, il est limité par rapport à une carte graphique de plusieurs façons. La vitesse du bus frontal d’un processeur est généralement autour ou inférieure à 10 Go/s. En revanche, une 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 de fonction fixes qui peuvent effectuer des tâches complexes et coûteuses, telles que le filtrage de texture, 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 numéros de performances typiques d’un ordinateur Quad Core Intel Penryn de 3,0 GHz montrent que WARP peut, dans certains cas, surperformer les GPU graphiques Direct3D 10 et ultérieur intégrés 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 de 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 processeur. Les cartes graphiques de moyenne 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 que ces cartes graphiques fournissent.
WARP n’est pas un remplacement pour le matériel graphique, en particulier si les performances raisonnables direct3D 10 et ultérieures du matériel discret sont désormais peu coûteuses. L’objectif de WARP est de permettre aux applications de cibler du matériel de niveau compatible Direct3D sans avoir des chemins de code ou des exigences de test significativement différents, qu’elles s’exécutent sur du matériel ou dans des logiciels.
Les deux tableaux suivants montrent des exemples de données WARP avec différentes 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é sur leurs niveaux les plus bas :
CPU | Heure | Ave FPS | Min FPS | Min Frame | Max FPS | Image maximale |
---|---|---|---|---|---|---|
Core i7 8 Core @ 3,0 GHz | 271.57 | 7.36 | 3.46 | 1966 | 15.01 | 995 |
Penryn 4 Core @ 3,0 GHz | 351.35 | 5.69 | 2.49 | 1967 | 10.95 | 980 |
Penryn 2 Core @ 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 Core @ 2,0 GHz | 424.04 | 4.72 | 1.84 | 1967 | 9.56 | 988 |
AMD FX74 4 Core @ 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 une variété de cartes graphiques :
Carte graphique | Heure | Ave FPS | Min FPS | Min Frame | 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 de conformité standard de Windows Hardware Quality Labs (WHQL) pour la validation des appareils matériels Direct3D.
WARP a été testé sur une suite d’applications et de benchmarks Direct3D 10.1 et Direct3D 10.1, ainsi que sur des exemples de SDK provenant 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 utilisées pour comparer le matériel et le warP. La majorité des images apparaissent presque identiques entre le matériel et le WARP ; lorsque de petites différences se produisent parfois, elles se trouvent dans les tolérances définies par la spécification Direct3D 10.