Partager via


Utilisation des données de fonctionnalités Direct3D 11 pour compléter les niveaux de fonctionnalités Direct3D

Découvrez comment case activée prise en charge des appareils pour les fonctionnalités facultatives, notamment les fonctionnalités ajoutées dans les versions récentes de Windows.

Les niveaux de fonctionnalités Direct3D indiquent des ensembles bien définis de fonctionnalités GPU qui correspondent approximativement à différentes générations de matériel graphique. Cela simplifie considérablement la tâche de vérification des fonctionnalités matérielles et offre également une expérience cohérente sur un large éventail d’appareils différents.

Pour tenir compte de certaines des différences entre différentes implémentations matérielles ( notamment le matériel hérité, le matériel mobile et le matériel moderne), certaines fonctionnalités sont considérées comme facultatives. La prise en charge de ces fonctionnalités peut être déterminée en appelant ID3D11Device::CheckFeatureSupport et en fournissant la structure D3D11_FEATURE_DATA_* appropriée. Cette rubrique décrit les différentes fonctionnalités facultatives de Direct3D 11, la façon dont certaines d’entre elles fonctionnent ensemble et comment vous pouvez éviter de vérifier chaque fonctionnalité facultative.

Guide pratique pour case activée la prise en charge des fonctionnalités facultatives

Appelez ID3D11Device::CheckFeatureSupport, en fournissant la structure qui représente la fonctionnalité facultative que vous souhaitez utiliser. Si la méthode retourne S_OK, cela signifie que vous êtes sur une version du runtime Direct3D qui prend en charge la fonctionnalité facultative. S’il retourne E_INVALIDARG, cela signifie que vous êtes sur une version du runtime Direct3D 11 à partir d’avant l’ajout de la fonctionnalité facultative. Cela signifie que la fonctionnalité facultative n’est pas disponible, ainsi que d’autres fonctionnalités facultatives introduites dans la même version de Direct3D 11 ou version ultérieure.

Puis-je réduire le travail requis pour les vérifications de la prise en charge des fonctionnalités ?

En plus d’avoir le bon runtime Direct3D 11 (généralement associé à une version windows), le pilote graphique doit également être assez récent pour prendre en charge la fonctionnalité facultative. Les spécifications WDDM nécessitent la prise en charge de fonctionnalités facultatives si le matériel peut les prendre en charge. Par conséquent, lorsqu’un pilote graphique prend en charge l’une des fonctionnalités facultatives ajoutées dans une version particulière de Windows, cela signifie généralement que le pilote graphique prend en charge les autres fonctionnalités ajoutées dans cette version de Windows. Par exemple, si un pilote de périphérique prend en charge les ombres au niveau de fonctionnalité 9, vous savez que le pilote de périphérique est au moins WDDM 1.2.

Note Si un appareil Microsoft Direct3D prend en charge le niveau de fonctionnalité 11.1, toutes les fonctionnalités facultatives indiquées par D3D11_FEATURE_DATA_D3D11_OPTIONS sont automatiquement prises en charge, à l’exception de SAD4ShaderInstructions et ExtendedDoublesShaderInstructions.

Le runtime définit toujours les regroupements de membres suivants de manière identique. Autrement dit, toutes les valeurs d’un regroupement sont TRUE ou FALSE :

  • DiscardAPIsSeenByDriver et FlagsForUpdateAndCopySeenByDriver
  • ClearView, CopyWithOverlap, ConstantBufferPartialUpdate, ConstantBufferOffsetting et MapNoOverwriteOnDynamicConstantBuffer
  • MapNoOverwriteOnDynamicBufferSRV et MultisampleRTVWithForcedSampleCountOne

Options de niveau de fonctionnalité 11.2 (D3D11_FEATURE_D3D11_OPTIONS1) : Les fonctionnalités facultatives indiquées par ce champ sont indépendantes et doivent être vérifiées individuellement.

Prise en charge des fonctionnalités sur les appareils Windows RT 8.1 et Windows Phone 8.1

Windows RT tablettes peuvent prendre en charge divers niveaux de fonctionnalités et fonctionnalités facultatives, sont optimisés pour réduire la consommation d’énergie et utilisent des graphiques intégrés au lieu de GPU discrets. Les applications du Windows Store pour les appareils ARM doivent prendre en charge le niveau de fonctionnalité 9.1. Les applications DirectX pour Windows RT doivent tirer parti des fonctionnalités facultatives qui peuvent économiser de l’énergie et des cycles , comme la simple instanciation, lorsqu’elles sont disponibles.

Windows Phone 8 appareils mobiles prennent en charge le niveau de fonctionnalité 9.3 avec des fonctionnalités facultatives spécifiques. Consultez Le niveau de fonctionnalité Direct3D 9_3 pour Windows Phone 8.

Quelles sont les fonctionnalités facultatives de Direct3D 11 ?

Le reste de cet article décrit les fonctionnalités facultatives disponibles dans Direct3D 11.2. Les fonctionnalités sont décrites dans l’ordre chronologique par date à laquelle elles ont été ajoutées, ce qui vous permet d’avoir une idée des fonctionnalités dans différentes versions de Direct3D 11.

Prise en charge facultative du nuanceur de calcul pour le niveau de fonctionnalité 10

La fonctionnalité suivante est toujours disponible pour les appareils de niveau de fonctionnalité 10 :

D3D11_FEATURE_DATA_D3D10_X_HARDWARE_OPTIONS : si la valeur est TRUE, l’appareil prend en charge les nuanceurs de calcul. Cela inclut la prise en charge des tampons bruts et structurés.

Lorsque l’appareil de niveau de fonctionnalité 10_0 ou 10_1 prend en charge cette fonctionnalité, il n’est pas garanti de prendre en charge le nuanceur de calcul 4.1. Les applications doivent être préparées à revenir à un nuanceur de calcul 4.0 si ID3D11Device::CreateComputeShader lève une exception avec un programme de nuanceur de calcul 4.1.

Fonctionnalités facultatives pour le niveau de fonctionnalité 9

Les fonctionnalités suivantes sont ajoutées pour le niveau de fonctionnalité 9 à partir de Windows 8 :

D3D11_FEATURE_DATA_D3D9_OPTIONS : Indique la prise en charge de l’adressage de texture de wrap avec des textures non power-of-2. Si cela est pris en charge, D3D11_TEXTURE_ADDRESS_MODE_WRAP pouvez être utilisé avec ces textures.

D3D11_FEATURE_DATA_D3D9_SHADOW_SUPPORT : Indique la prise en charge des échantillonneurs de comparaison dans le niveau de fonctionnalité du modèle de nuanceur 4.0 9_x nuanceurs. Il est utilisé pour les tests de profondeur dans les nuanceurs de pixels, ce qui permet de prendre en charge des techniques courantes telles que le mappage d’ombres et les gabarits.

La fonctionnalité suivante a été ajoutée pour les appareils de niveau de fonctionnalité 9 à partir de Windows 8.1 :

D3D11_FEATURE_DATA_D3D9_SIMPLE_INSTANCING_SUPPORT : Indique la prise en charge des fonctionnalités d’instanciation simples qui peuvent être disponibles sur le matériel DirectX à 9 niveaux. L’instanciation simple signifie que tous les membres InstanceDataStepRate des structures D3D11_INPUT_ELEMENT_DESC utilisées pour définir la disposition d’entrée doivent être 1. Les appareils qui prennent en charge le niveau de fonctionnalité 9.3 ou ultérieur incluent déjà une prise en charge complète de l’instanciation.

Prise en charge facultative de la précision à virgule flottante pour les programmes de nuanceur

D3D11_FEATURE_DATA_SHADER_MIN_PRECISION_SUPPORT : Les champs de ce struct indiquent la longueur des nombres à virgule flottante lorsque la précision minimale est activée, ou 0 si seule la précision à virgule flottante 32 bits est prise en charge.

Pour les appareils de niveau de fonctionnalité 9, la précision minimale du nuanceur de vertex peut être différente du nuanceur de pixels. La précision du nuanceur de vertex est indiquée dans le champ AllOtherShaderStagesMinPrecision .

D3D11_FEATURE_DATA_DOUBLES : Les appareils de niveau de fonctionnalité 11 peuvent prendre en charge les calculs de double précision dans les programmes du modèle de nuanceur 5.0. La prise en charge des calculs de double précision dans le nuanceur signifie que les floats peuvent être convertis en doubles au sein du programme de nuanceur de calcul, ce qui offre l’avantage d’un calcul de précision plus élevée dans chaque passe de nuanceur. Les nombres de double précision doivent être convertis en floats avant d’être écrits dans la mémoire tampon de sortie. Notez que la division de double précision n’est pas nécessairement prise en charge.

Fonctionnalités supplémentaires pour Direct3D 11.2

Direct3D 11.2 ajoute quatre nouvelles fonctionnalités facultatives qui peuvent être prises en charge par les appareils Direct3D 11. Ces fonctionnalités se trouvent dans la structure D3D11_FEATURE_DATA_D3D11_OPTIONS1 :

TiledResourcesTier : Indique la prise en charge des ressources en mosaïques et indique le niveau pris en charge.

MinMaxFiltering : Indique la prise en charge des options de filtrage D3D11_FILTER_MINIMUM_* et D3D11_FILTER_MAXIMUM_*, qui comparent le résultat du filtrage à la valeur minimale (ou maximale). Voir D3D11_FILTER.

ClearViewAlsoSupportsDepthOnlyFormats : Indique la prise en charge de l’effacement des vues de ressources de mémoire tampon de profondeur.

MapOnDefaultBuffers : Indique la prise en charge des mémoires tampons cibles de rendu de mappage créées avec l’indicateur D3D11_USAGE_DEFAULT .

Rendu basé sur les vignettes

D3D11_FEATURE_DATA_ARCHITECTURE_INFO : Indique si le périphérique graphique lote les commandes de rendu et effectue un rendu basé sur les vignettes par défaut. Cela peut être utilisé comme indicateur pour l’optimisation du moteur graphique.

Fonctionnalités facultatives pour le développement et le débogage

D3D11_FEATURE_DATA_D3D11_OPTIONS::D iscardAPIsSeenByDriver : Vous pouvez surveiller ce membre pendant le développement pour exclure les pilotes hérités sur le matériel où DiscardView et DiscardResource auraient pu être utiles.

D3D11_FEATURE_DATA_MARKER_SUPPORT : Cela est pris en charge si le matériel et le pilote prennent en charge le marquage des données pour le profilage GPU.

Appareils