Niveaux de fonctionnalités Direct3D
Pour gérer la diversité des cartes vidéo dans les machines nouvelles et existantes, Microsoft Direct3D 11 introduit le concept de niveaux de fonctionnalités. Cette rubrique décrit les niveaux de fonctionnalités Direct3D.
Chaque carte vidéo implémente un certain niveau de fonctionnalité Microsoft DirectX (DX) en fonction des unités de traitement graphique (GPU) installées. Dans les versions antérieures de Microsoft Direct3D, vous pouviez trouver la version de Direct3D, la vidéo carte implémentée, puis programmer votre application en conséquence.
Avec Direct3D 11, un nouveau paradigme est introduit, appelé niveaux de fonctionnalités. Un niveau de fonctionnalité est un ensemble de fonctionnalités GPU définies. Par instance, le niveau de fonctionnalité 9_1 implémente la fonctionnalité implémentée dans Microsoft Direct3D 9, qui expose les fonctionnalités des modèles de nuanceur ps_2_x et vs_2_x, tandis que le niveau de fonctionnalité 11_0 implémente la fonctionnalité implémentée dans Direct3D 11.
Maintenant, lorsque vous créez un appareil, vous pouvez essayer de créer un appareil pour le niveau de fonctionnalité que vous souhaitez demander. Si la création de l’appareil fonctionne, ce niveau de fonctionnalité existe. Si ce n’est pas le cas, le matériel ne prend pas en charge ce niveau de fonctionnalité. Vous pouvez essayer de recréer un appareil à un niveau de fonctionnalité inférieur ou vous pouvez choisir de quitter l’application. Pour plus d’informations sur la création d’un appareil, consultez la fonction D3D11CreateDevice .
À l’aide des niveaux de fonctionnalités, vous pouvez développer une application pour Direct3D 9, Microsoft Direct3D 10 ou Direct3D 11, puis l’exécuter sur du matériel 9, 10 ou 11 (à quelques exceptions près , par exemple, les nouvelles fonctionnalités 11 ne s’exécuteront pas sur un 9 carte existant). Voici quelques autres propriétés de base des niveaux de fonctionnalité :
- Gpu qui permet de créer un appareil atteint ou dépasse les fonctionnalités de ce niveau de fonctionnalité.
- Un niveau de fonctionnalité inclut toujours les fonctionnalités des niveaux de fonctionnalité précédents ou inférieurs.
- Un niveau de fonctionnalité n’implique pas de performances, mais uniquement des fonctionnalités. Les performances dépendent de l’implémentation matérielle.
- Choisissez un niveau de fonctionnalité lorsque vous créez un appareil Direct3D 11.
Pour plus d’informations sur les limitations de création d’appareils de type nonhardware sur certains niveaux de fonctionnalités, consultez Limitations de création d’appareils WARP et Référence.
Pour vous aider à choisir le niveau de fonctionnalité avec lequel concevoir, comparez les fonctionnalités pour chaque niveau de fonctionnalité.
La section Référence 10Level9 répertorie les différences entre le comportement des différentes méthodes ID3D11Device et ID3D11DeviceContext à différents niveaux de fonctionnalité 10Level9.
Formats des numéros de version
Il existe trois formats pour les versions Direct3D, les modèles de nuanceur et les niveaux de fonctionnalités.
- Les versions Direct3D utilisent un point ; par exemple, Direct3D 12.0.
- Les modèles de nuanceur utilisent un point ; par exemple, le modèle de nuanceur 5.1.
- Les niveaux de fonctionnalité utilisent un trait de soulignement ; par exemple, niveau de fonctionnalité 12_0.
Prise en charge des fonctionnalités Direct3D 12 (niveaux de fonctionnalité 12_2 à 11_0)
Les fonctionnalités suivantes sont disponibles pour les niveaux de fonctionnalités répertoriés. Les en-têtes de la ligne supérieure sont des niveaux de fonctionnalité Direct3D 12. Les en-têtes dans la colonne de gauche sont des fonctionnalités. Consultez également Les notes de bas de page pour les tables.
Fonctionnalité \ Niveau de fonctionnalité | 12_28 | 12_10 | 12_00 | 11_11 | 11_0 |
---|---|---|---|---|---|
Modèle nuanceur | 6.5 | 5.12 | 5.12 | 5.12 | 5.12 |
Modèle de pilote WDDM | 2.0 | 1.x | 1.x | 1.x | 1.x |
Raytracing | Niveau 1.1 | Facultatif | Facultatif | Facultatif | Facultatif |
Taux d’ombrage variable | Niveau 2 | Facultatif | Facultatif | Facultatif | Facultatif |
Nuanceur de maillage | Niveau 1 | Facultatif | Facultatif | Facultatif | Facultatif |
Commentaires de l’échantillonneur | Niveau 0.9 | Facultatif | Facultatif | Facultatif | Facultatif |
Liaison de ressources | Niveau 3 | Niveau 3 | Niveau 3 | Niveau 3 | Niveau 1 |
Signature racine | 1.1 | 1 | 1 | 1 | 1 |
Test des limites de profondeur | Oui | Facultatif | Facultatif | Facultatif | Facultatif |
Écriture immédiate de la mémoire tampon | Direct, Compute, Bundle | Facultatif | Facultatif | Facultatif | Facultatif |
Bits d’adresse virtuelle GPU | 4010 | 4010 | 4010 | ||
Ressources en mosaïque | Niveau 3 | Niveau 26 | Niveau 26 | Facultatif | Facultatif |
Pixellisation conservatrice | Niveau 3 | Niveau 16 | Facultatif | Facultatif | Non |
Affichages de l’ordre du rastériseur | Oui | Oui | Facultatif | Facultatif | Non |
Filtres min/max | Oui | Oui | Oui | Facultatif | Non |
Carter la mémoire tampon par défaut | N/A | Facultatif | Facultatif | Facultatif | Facultatif |
Valeur de référence du stencil spécifié par le nuanceur | Facultatif | Facultatif | Facultatif | Facultatif | Non |
Chargements de l’affichage d’accès non ordonné typé | 18 formats, plus facultatifs | 18 formats, plus facultatifs | 18 formats, plus facultatifs | 3 formats, plus facultatifs | 3 formats, plus facultatifs |
Nuanceur de géométrie | Oui | Oui | Oui | Oui | Oui |
Diffuser en continu | Oui | Oui | Oui | Oui | Oui |
DirectCompute / Compute Shader | Oui | Oui | Oui | Oui | Oui |
Nuanceurs de coque et de domaine | Oui | Oui | Oui | Oui | Oui |
Fonctionnalité \ Niveau de fonctionnalité | 12_28 | 12_10 | 12_00 | 11_11 | 11_0 |
Tableaux de ressources de texture | Oui | Oui | Oui | Oui | Oui |
Cubemap Resource Arrays | Oui | Oui | Oui | Oui | Oui |
BC4/BC5 Compression | Oui | Oui | Oui | Oui | Oui |
BC6H/BC7 Compression | Oui | Oui | Oui | Oui | Oui |
Alpha-to-coverage | Oui | Oui | Oui | Oui | Oui |
Formats étendus (BGRA, et ainsi de suite) | Oui | Oui | Oui | Oui | Oui |
Format de couleur XR 10 bits | Oui | Oui | Oui | Oui | Oui |
Opérations logiques (fusion de sortie) | Oui | Oui | Oui | Oui | Facultatif1 |
Rastérisation indépendante de la cible | Oui | Oui | Oui | Oui | Non |
Cible de rendu multiple (MRT) avec ForcedSampleCount 1 | Oui | Oui | Oui | Oui | Facultatif1 |
Emplacements UAV | Hiérarchisé9 | 64 | 64 | 64 | 8 |
UAV à chaque étape | Oui | Oui | Oui | Oui | Non |
Fonctionnalité \ Niveau de fonctionnalité | 12_28 | 12_10 | 12_00 | 11_11 | 11_0 |
Nombre maximal d’exemples forcés pour le rendu des UAV uniquement | 16 | 16 | 16 | 16 | 8 |
Compensation constante de la mémoire tampon et mises à jour partielles | Oui | Oui | Oui | Oui | Facultatif1 |
Formats 16 bits par pixel (bpp) | Oui | Oui | Oui | Oui | Facultatif1 |
Dimension de texture maximale | 16384 | 16384 | 16384 | 16384 | 16384 |
Max Cubemap Dimension | 16384 | 16384 | 16384 | 16384 | 16384 |
Étendue maximale du volume | 2 048 | 2 048 | 2 048 | 2 048 | 2 048 |
Répétition de texture maximale | 16384 | 16384 | 16384 | 16384 | 16384 |
Anisotropie maximale | 16 | 16 | 16 | 16 | 16 |
Nombre primitif maximal | 2^32 – 1 | 2^32 – 1 | 2^32 – 1 | 2^32 – 1 | 2^32 – 1 |
Max Vertex Index | 2^32 – 1 | 2^32 – 1 | 2^32 – 1 | 2^32 – 1 | 2^32 – 1 |
Emplacements d’entrée max. | 32 | 32 | 32 | 32 | 32 |
Cibles de rendu simultané | 8 | 8 | 8 | 8 | 8 |
Fonctionnalité \ Niveau de fonctionnalité | 12_28 | 12_10 | 12_00 | 11_11 | 11_0 |
Requêtes d’occlusion | Oui | Oui | Oui | Oui | Oui |
Mélange alpha distinct | Oui | Oui | Oui | Oui | Oui |
Miroir une fois | Oui | Oui | Oui | Oui | Oui |
Éléments de vertex qui se chevauchent | Oui | Oui | Oui | Oui | Oui |
Masques d’écriture indépendante | Oui | Oui | Oui | Oui | Oui |
Instanciation | Oui | Oui | Oui | Oui | Oui |
Nonpowers-of-2 conditionnellement3 | Non | Non | Non | Non | Non |
Nonpowers-of-2 inconditionnellement4 | Oui | Oui | Oui | Oui | Oui |
En outre, les indicateurs suivants sont définis :
Fonctionnalité \ Niveau de fonctionnalité | 12_28 |
---|---|
WaveOps | TRUE |
OutputMergerLogicOp | TRUE |
VPAndRTArrayIndexFromAnyShaderFeedingRasterizerSupportWithoutGSEmulation | TRUE |
CopyQueueTimestampQueriesSupported | TRUE |
CastingFullyTypedFormatSupported | TRUE |
Int64ShaderOps | TRUE |
Prise en charge des fonctionnalités Direct3D 11 (niveaux de fonctionnalité 12_1 à 9_1)
Les fonctionnalités suivantes sont disponibles pour les niveaux de fonctionnalités répertoriés. Les en-têtes de la ligne supérieure sont des niveaux de fonctionnalités Direct3D 11. Les en-têtes dans la colonne de gauche sont des fonctionnalités. Consultez également Les notes de bas de page pour les tables.
Fonctionnalité \ Niveau de fonctionnalité | 12_10 | 12_00 | 11_11 | 11_0 | 10_1 | 10_0 | 9_37 | 9_2 | 9_1 | ||
---|---|---|---|---|---|---|---|---|---|---|---|
Modèle nuanceur | 5.12 | 5.12 | 5,02 | 5,02 | 4.x | 4.0 | 2.0 (4_0_level_9_3) [vs_2_a/ps_2_x]5 | 2.0 (4_0_level_9_1) | 2.0 (4_0_level_9_1) | ||
Modèle de pilote WDDM | 1.x | 1.x | 1.x | 1.x | 1.x | 1.x | 1.x | 1.x | 1.x | ||
Ressources en mosaïque | Niveau 26 | Niveau 26 | Facultatif | Facultatif | Non | Non | Non | Non | Non | ||
Pixellisation conservatrice | Niveau 16 | Facultatif | Facultatif | Non | Non | Non | Non | Non | Non | ||
Affichages de l’ordre du rastériseur | Oui | Facultatif | Facultatif | Non | Non | Non | Non | Non | Non | ||
Filtres min/max | Oui | Oui | Facultatif | Non | Non | Non | Non | Non | Non | ||
Carter la mémoire tampon par défaut | Facultatif | Facultatif | Facultatif | Facultatif | Non | Non | Non | Non | Non | ||
Valeur de référence du stencil spécifié par le nuanceur | Facultatif | Facultatif | Facultatif | Non | Non | Non | Non | Non | Non | ||
Chargements de l’affichage d’accès non ordonné typé | 18 formats, plus facultatifs | 18 formats, plus facultatifs | 3 formats, plus facultatifs | 3 formats, plus facultatifs | Non | Non | Non | Non | Non | ||
Nuanceur de géométrie | Oui | Oui | Oui | Oui | Oui | Oui | Non | Non | Non | ||
Diffuser en continu | Oui | Oui | Oui | Oui | Oui | Oui | Non | Non | Non | ||
DirectCompute / Compute Shader | Oui | Oui | Oui | Oui | Facultatif | Facultatif | N/A | N/A | N/A | ||
Nuanceurs de coque et de domaine | Oui | Oui | Oui | Oui | Non | Non | Non | Non | Non | ||
Fonctionnalité \ Niveau de fonctionnalité | 12_10 | 12_00 | 11_11 | 11_0 | 10_1 | 10_0 | 9_37 | 9_2 | 9_1 | ||
Tableaux de ressources de texture | Oui | Oui | Oui | Oui | Oui | Oui | Non | Non | Non | ||
Cubemap Resource Arrays | Oui | Oui | Oui | Oui | Oui | Non | Non | Non | Non | ||
BC4/BC5 Compression | Oui | Oui | Oui | Oui | Oui | Oui | Non | Non | Non | ||
BC6H/BC7 Compression | Oui | Oui | Oui | Oui | Non | Non | Non | Non | Non | ||
Alpha-to-coverage | Oui | Oui | Oui | Oui | Oui | Oui | Non | Non | Non | ||
Formats étendus (BGRA, et ainsi de suite) | Oui | Oui | Oui | Oui | Facultatif | Facultatif | Oui | Oui | Oui | ||
Format de couleur XR 10 bits | Oui | Oui | Oui | Oui | Facultatif | Facultatif | N/A | N/A | N/A | ||
Opérations logiques (fusion de sortie) | Oui | Oui | Oui | Facultatif1 | Facultatif1 | Facultatif1 | Non | Non | Non | ||
Rastérisation indépendante de la cible | Oui | Oui | Oui | Oui | Oui | Non | Non | Non | Non | Non | Non |
Cible de rendu multiple (MRT) avec ForcedSampleCount 1 | Oui | Facultatif1 | Facultatif1 | Facultatif1 | Non | Non | Non | ||||
Emplacements UAV | 64 | 64 | 64 | 8 | 1 | 1 | N/A | N/A | N/A | ||
UAV à chaque étape | Oui | Oui | Oui | Non | Non | Non | N/A | N/A | N/A | ||
Fonctionnalité \ Niveau de fonctionnalité | 12_10 | 12_00 | 11_11 | 11_0 | 10_1 | 10_0 | 9_37 | 9_2 | 9_1 | ||
Nombre maximal d’exemples forcés pour le rendu des UAV uniquement | 16 | 16 | 16 | 8 | N/A | N/A | N/A | N/A | N/A | ||
Compensation constante de la mémoire tampon et mises à jour partielles | Oui | Oui | Oui | Facultatif1 | Facultatif1 | Facultatif1 | Oui1 | Oui1 | Oui1 | ||
Formats 16 bits par pixel (bpp) | Oui | Oui | Oui | Facultatif1 | Facultatif1 | Facultatif1 | Facultatif1 | Facultatif1 | Facultatif1 | ||
Max Texture Dimension | 16384 | 16384 | 16384 | 16384 | 8 192 | 8 192 | 4096 | 2 048 | 2 048 | ||
Max Cubemap Dimension | 16384 | 16384 | 16384 | 16384 | 8 192 | 8 192 | 4096 | 512 | 512 | ||
Étendue maximale du volume | 2 048 | 2 048 | 2 048 | 2 048 | 2 048 | 2 048 | 256 | 256 | 256 | ||
Répétition maximale de texture | 16384 | 16384 | 16384 | 16384 | 8 192 | 8 192 | 8 192 | 2 048 | 128 | ||
Anisotropie max. | 16 | 16 | 16 | 16 | 16 | 16 | 16 | 16 | 2 | ||
Nombre maximal de primitives | 2^32 – 1 | 2^32 – 1 | 2^32 – 1 | 2^32 – 1 | 2^32 – 1 | 2^32 – 1 | 1048575 | 1048575 | 65535 | ||
Index de vertex max. | 2^32 – 1 | 2^32 – 1 | 2^32 – 1 | 2^32 – 1 | 2^32 – 1 | 2^32 – 1 | 1048575 | 1048575 | 65534 | ||
Emplacements d’entrée max. | 32 | 32 | 32 | 32 | 32 | 16 | 16 | 16 | 16 | ||
Cibles de rendu simultanées | 8 | 8 | 8 | 8 | 8 | 8 | 4 | 1 | 1 | ||
Fonctionnalité \ Niveau de fonctionnalité | 12_28 | 12_10 | 11_11 | 11_0 | 10_1 | 10_0 | 9_37 | 9_2 | 9_1 | ||
Requêtes d’occlusion | Oui | Oui | Oui | Oui | Oui | Oui | Oui | Oui | Non | ||
Mélange alpha distinct | Oui | Oui | Oui | Oui | Oui | Oui | Oui | Oui | Non | ||
Mettre en miroir une fois | Oui | Oui | Oui | Oui | Oui | Oui | Oui | Oui | Non | ||
Éléments de vertex qui se chevauchent | Oui | Oui | Oui | Oui | Oui | Oui | Oui | Oui | Non | ||
Masques d’écriture indépendant | Oui | Oui | Oui | Oui | Oui | Oui | Oui | Non | Non | ||
Instanciation | Oui | Oui | Oui | Oui | Oui | Oui | Oui7 | Non | Non | ||
Nonpowers-of-2 conditionnellement3 | Non | Non | Non | Non | Non | Non | Oui | Oui | Oui | ||
Nonpowers-of-2 sans condition4 | Oui | Oui | Oui | Oui | Oui | Oui | Non | Non | Non |
Notes de bas de page pour les tables
0 Nécessite le runtime Direct3D 11.3 ou Direct3D 12.
1 Nécessite le runtime Direct3D 11.1.
Le modèle de nuanceur 2 5.0 et versions ultérieures peut éventuellement prendre en charge les nuanceurs à double précision, les nuanceurs à double précision étendus, l’instruction de nuanceur SAD4 et les nuanceurs de précision partielle. Pour déterminer les options du modèle de nuanceur 5.0 disponibles pour DirectX 11, appelez ID3D11Device::CheckFeatureSupport. Une certaine compatibilité dépend du matériel sur lequel vous exécutez. Le modèle de nuanceur 5.1 et les versions ultérieures sont uniquement pris en charge par le biais de l’API DirectX 12, quel que soit le niveau de fonctionnalité utilisé. DirectX 11 prend uniquement en charge jusqu’au modèle de nuanceur 5.0. L’API DirectX 12 descend uniquement au niveau de fonctionnalité 11_0.
3 Aux niveaux de fonctionnalités 9_1, 9_2 et 9_3, le périphérique d’affichage prend en charge l’utilisation de textures 2D avec des dimensions qui ne sont pas des puissances de deux dans deux conditions. Tout d’abord, un seul niveau de carte MIP peut être créé pour chaque texture, et deuxièmement, aucun mode d’échantillonnage de wrap pour les textures n’est autorisé (autrement dit, les membres AddressU, AddressV et AddressW de D3D11_SAMPLER_DESC ne peuvent pas être définis sur D3D11_TEXTURE_ADDRESS_WRAP).
4 Aux niveaux de fonctionnalités 10_0, 10_1 et 11_0, le périphérique d’affichage prend en charge inconditionnellement l’utilisation de textures 2D avec des dimensions qui ne sont pas des puissances de deux.
5 Nuanceur de vertex 2a avec 256 instructions, 32 registres temporaires, contrôle de flux statique de profondeur 4, contrôle dynamique du flux de profondeur 24 et D3DVS20CAPS_PREDICATION. Nuanceur de pixels 2x avec 512 instructions, 32 registres temporaires, contrôle de flux statique de profondeur 4, contrôle dynamique du flux de profondeur 24, D3DPS20CAPS_ARBITRARYSWIZZLE, D3DPS20CAPS_GRADIENTINSTRUCTIONS, D3DPS20CAPS_PREDICATION, D3DPS20CAPS_NODEPENDENTREADLIMIT et D3DPS20CAPS_NOTEXINSTRUCTIONLIMIT.
6 niveaux supérieurs facultatifs.
7 Pour le niveau de fonctionnalité 9_3, les seules méthodes de rendu prises en charge sont Draw, DrawIndexed et DrawIndexInstanced. Également pour le niveau de fonctionnalité 9_3, le rendu de liste de points est pris en charge uniquement pour le rendu via Draw.
8 Pris en charge par Windows 11.
9 Dans l’API Direct3D 12, le nombre de descripteurs dans un tas CBV/SRV/UAV est limité. Pour plus d’informations, consultez Niveaux matériels . Séparément, il existe une limite du nombre d’UAV dans toutes les tables de descripteurs pour toutes les phases, en fonction du niveau de liaison de ressources.
10 Un processus 64 bits nécessite 40 bits d’espace d’adressage disponible par ressource et par processus. Un processus 32 bits peut être limité à 31 bits d’espace d’adressage. Deux fonctionnalités (majuscules) sont disponibles dans l’API : par processus et par ressource. L’espace d’adressage par processus est toujours supérieur ou égal à l’espace d’adressage par ressource.
Pour plus d’informations sur la prise en charge du format à différents niveaux de fonctionnalités matérielles, reportez-vous à :
- Prise en charge du format DXGI pour le matériel De niveau de fonctionnalité Direct3D 12.1
- Prise en charge du format DXGI pour le matériel Direct3D Feature Level 12.0
- Prise en charge du format DXGI pour le matériel De niveau de fonctionnalité Direct3D 11.1
- Prise en charge du format DXGI pour le matériel De niveau de fonctionnalité Direct3D 11.0
- Prise en charge matérielle des formats Direct3D 10Level9
- Prise en charge matérielle des formats Direct3D 10.1
- Prise en charge matérielle des formats Direct3D 10