Fonctionnalités Direct3D 11,1

les fonctionnalités suivantes ont été ajoutées dans Direct3D 11,1, qui est inclus avec Windows 8, Windows RT et Windows Server 2012. la prise en charge partielle de Direct3D 11,1 est disponible sur Windows 7 et Windows Server 2008 R2 via la mise à jour de plateforme pour Windows 7, qui est disponible via la mise à jour de plateforme pour Windows 7.

Suivi des nuanceurs et améliorations du compilateur

Direct3D 11,1 vous permet d’utiliser le suivi du nuanceur pour vous assurer que votre code fonctionne comme prévu, et si ce n’est pas le cas, vous pouvez détecter et résoudre le problème. le kit de développement logiciel (SDK) Windows pour Windows 8 contient des améliorations du compilateur HLSL. Le suivi du nuanceur et le compilateur HLSL sont implémentés dans D3dcompiler _nn.dll.

L’API de suivi de nuanceur et les améliorations apportées au compilateur HLSL consistent en les méthodes et les fonctions suivantes.

La bibliothèque D3dcompiler. lib requiert D3dcompiler _nn.dll. Cette DLL ne fait pas partie de Windows 8 ; il se trouve dans le \ dossier bin du SDK Windows pour Windows 8 avec la version de ligne de commande Fxc.exe du compilateur HLSL.

Notes

bien que vous puissiez utiliser cette combinaison de bibliothèques et de DLL pour le développement, vous ne pouvez pas déployer des applications de Windows Store qui utilisent cette combinaison. par conséquent, vous devez à la place compiler les nuanceurs HLSL avant d’expédier votre application Windows Store. Vous pouvez écrire des binaires de compilation HLSL sur le disque ou le compilateur peut générer des en-têtes avec des tableaux d’octets statiques contenant les données d’objet blob de nuanceur. Vous utilisez l’interface ID3DBlob pour accéder aux données d’objet BLOB. pour développer votre application Windows Store, appelez D3DCompile2 ou D3DCompileFromFile pour compiler la source HLSL brute, puis placez les données blob obtenues dans Direct3D.

Partage d’appareils Direct3D

Direct3D 11,1 permet aux API Direct3D 10 et aux API Direct3D 11 d’utiliser un périphérique de rendu sous-jacent.

Cette fonctionnalité Direct3D 11,1 se compose des méthodes et de l’interface suivantes.

Vérifier la prise en charge des nouvelles fonctionnalités et des formats Direct3D 11,1

Direct3D 11,1 vous permet de vérifier les nouvelles fonctionnalités que le pilote Graphics peut prendre en charge et les nouvelles méthodes de prise en charge d’un format sur un appareil. Microsoft DirectX Graphics infrastructure (DXGI) 1,2 spécifie également les nouvelles valeurs de _ format dxgi .

Cette fonctionnalité Direct3D 11,1 est constituée de l’API suivante.

Utiliser la précision minimale HLSL

à partir de Windows 8, les pilotes graphiques peuvent implémenter des types de données scalaires HLSL de précision minimale à l’aide d’une précision supérieure ou égale à la précision de bit spécifiée. Lorsque votre code de nuanceur de précision minimale HLSL est utilisé sur le matériel qui implémente la précision minimale HLSL, vous utilisez moins de bande passante de mémoire et vous utilisez donc moins de puissance système.

Vous pouvez interroger la prise en charge de précision minimale que le pilote Graphics fournit en appelant ID3D11Device :: CheckFeatureSupport avec la valeur de _ _ _ _ _ prise en charge de l’outil nuanceur min précision de la fonctionnalité d3d11 . Dans cet appel ID3D11Device :: CheckFeatureSupport , transmettez un pointeur vers une structure de _ _ _ _ _ _ prise en charge de nuanceur min précision de la fonctionnalité d3d11 que ID3D11Device :: CheckFeatureSupport remplit avec les niveaux de précision minimale que le pilote prend en charge pour l’étape nuanceur de pixels et pour d’autres étapes de nuanceur. Les informations renvoyées indiquent simplement que le matériel graphique peut effectuer des opérations HLSL à une précision inférieure à la précision de la virgule flottante 32 bits standard, mais ne garantit pas que le matériel graphique s’exécutera en fait à une précision inférieure.

Vous n’avez pas besoin de créer plusieurs nuanceurs qui n’utilisent pas la précision minimale. Au lieu de cela, créez des nuanceurs avec une précision minimale, et les variables de précision minimale se comportent à une précision de 32 bits complète si le pilote graphique signale qu’il ne prend pas en charge de précision minimale. Pour plus d’informations sur la précision minimale du HLSL, consultez Utilisation de la précision minimale HLSL.

Les nuanceurs de précision minimale HLSL ne fonctionnent pas sur les systèmes d’exploitation antérieurs à Windows 8.

Spécifier des plans de clip utilisateur en HLSL sur le niveau de fonctionnalité 9 et versions ultérieures

à partir de Windows 8, vous pouvez utiliser l’attribut de fonction clipplanes dans une déclaration de fonction HLSL plutôt que SV _ ClipDistance pour que votre nuanceur fonctionne sur le niveau de fonctionnalité 9 x, ainsi que sur le niveau de _ fonctionnalité 10 et supérieur. Pour plus d’informations, consultez l' image des plans d’utilisateur sur le matériel de niveau de fonctionnalité 9.

Créer des mémoires tampons constantes plus grandes qu’un nuanceur peut accéder

Direct3D 11,1 vous permet de créer des mémoires tampons constantes dont la taille est supérieure à la taille maximale de la mémoire tampon constante à laquelle un nuanceur peut accéder ( * constantes à 4 composants, 4096 32 bits). Plus tard, lorsque vous lierez les mémoires tampons au pipeline, par exemple, via PSSetConstantBuffers ou PSSetConstantBuffers1, vous pouvez spécifier une plage de mémoires tampons auxquelles le nuanceur peut accéder et qui correspond à la limite de 4096.

Direct3D 11,1 met à jour la méthode ID3D11Device :: CreateBuffer pour cette fonctionnalité.

Utiliser des opérations logiques dans une cible de rendu

Direct3D 11,1 vous permet d’utiliser des opérations logiques au lieu de les fusionner dans une cible de rendu. Toutefois, vous ne pouvez pas mélanger des opérations logiques avec la fusion sur plusieurs cibles de rendu.

Cette fonctionnalité Direct3D 11,1 est constituée de l’API suivante.

Forcer le nombre d’échantillons à créer un état de rastériseur

Direct3D 11,1 vous permet de spécifier un nombre d’échantillons forcés lorsque vous créez un état de rastériseur.

Cette fonctionnalité Direct3D 11,1 est constituée de l’API suivante.

Notes

Si vous souhaitez effectuer un rendu avec un nombre d’échantillons forcé à 1 ou supérieur, vous devez suivre les instructions suivantes :

  • Ne pas lier les vues de stencil de profondeur.
  • Désactivez le test de profondeur.
  • Assurez-vous que le nuanceur ne génère pas de profondeur.
  • Si vous avez lié des vues de cible de rendu (d3d11 _ liaison de _ rendu _ cible) et que vous avez forcé le nombre d’échantillons à supérieur à 1, assurez-vous que chaque cible de rendu n’a qu’un seul échantillon.
  • Ne pas utiliser le nuanceur à la fréquence d’échantillonnage. Par conséquent, ID3D11ShaderReflection :: IsSampleFrequencyShader retourne false.

Dans le cas contraire, le comportement de rendu n’est pas défini. Pour plus d’informations sur la configuration du gabarit de profondeur, consultez Configuration des fonctionnalités de Depth-Stencil.

Traiter des ressources vidéo avec des nuanceurs

Direct3D 11,1 vous permet de créer des affichages (SRV/RTV/UAV) dans des ressources vidéo afin que les nuanceurs Direct3D puissent traiter ces ressources vidéo. Le format d’une ressource vidéo sous-jacente restreint les formats que la vue peut utiliser. L’énumération de _ format dxgi contient de nouvelles valeurs de format de ressource vidéo. Ces valeurs de _ format dxgi spécifient les formats de vue valides que vous pouvez créer et la façon dont le runtime Direct3D 11,1 mappe la vue. Vous pouvez créer plusieurs vues de différentes parties de la même surface et, selon le format, les tailles des vues peuvent différer les unes des autres.

Direct3D 11,1 met à jour les méthodes suivantes pour cette fonctionnalité.

Prise en charge étendue des ressources Texture2D partagées

Direct3D 11,1 garantit que vous pouvez partager des ressources Texture2D que vous avez créées avec des types de ressources et des formats particuliers. pour partager des ressources Texture2D, utilisez la ressource D3D11 _ _ misc _shared resource, D3D11 _ resource _ misc _ shared _ KEYEDMUTEX, ou une combinaison des indicateurs D3D11 resource misc _ _ _ shared _ KEYEDMUTEX et D3D11 _ resource _ misc _ _ shared NTHANDLE (nouveau pour Windows 8) lorsque vous créez ces ressources.

Direct3D 11,1 garantit que vous pouvez partager des ressources Texture2D que vous avez créées avec ces valeurs de _ format dxgi :

  • DXGI _ format _ R8G8B8A8 _ UNORM
  • DXGI _ format _ R8G8B8A8 _ UNORM _ sRVB
  • DXGI _ format _ B8G8R8A8 _ UNORM
  • DXGI _ format _ B8G8R8A8 _ UNORM _ sRVB
  • DXGI _ format _ B8G8R8X8 _ UNORM
  • DXGI _ format _ B8G8R8X8 _ UNORM _ sRVB
  • DXGI _ format _ R10G10B10A2 _ UNORM
  • DXGI _ format _ R16G16B16A16 _ float

En outre, Direct3D 11,1 garantit que vous pouvez partager des ressources Texture2D que vous avez créées avec un niveau mipmap de 1, une taille de tableau de 1, des indicateurs de liaison de la _ _ _ ressource de nuanceur de liaison d3d11 et la cible de rendu de la liaison de d3d11 combinés, l’utilisation par défaut (d3d11 d' _ utilisation _ par défaut) et uniquement ces valeurs d' _ _ _ indicateur diverses des ressources d3d11 : _ _ _

Direct3D 11,1 vous permet de partager une plus grande variété de types de ressources et de formats de Texture2D. Vous pouvez demander si le pilote graphique et le matériel prennent en charge le partage de ressources Texture2D étendu en appelant ID3D11Device :: CheckFeatureSupport avec la fonctionnalité d3d11 valeur des _ _ _ options d3d11 . Dans cet appel ID3D11Device :: CheckFeatureSupport , passer un pointeur vers une structure d’options de d3d11 de données de _ fonctionnalités _ _ _ d3d11 . ID3D11Device :: CheckFeatureSupport définit le membre ExtendedResourceSharing des _ _ _ _ options d3d11 des données de la fonctionnalité d3d11 sur true si le matériel et le pilote prennent en charge le partage de ressources Texture2D étendus.

Si ID3D11Device :: CheckFeatureSupport retourne la valeur true dans ExtendedResourceSharing, vous pouvez partager les ressources que vous avez créées avec ces valeurs de _ format dxgi :

  • DXGI _ format _ R32G32B32A32 non _ typé
  • DXGI _ format _ R32G32B32A32 _ float
  • DXGI _ format _ R32G32B32A32 _ uint
  • _Format dxgi _ R32G32B32A32 _ Saint-
  • DXGI _ format _ R16G16B16A16 non _ typé
  • DXGI _ format _ R16G16B16A16 _ float
  • DXGI _ format _ R16G16B16A16 _ UNORM
  • DXGI _ format _ R16G16B16A16 _ uint
  • _Format dxgi _ R16G16B16A16 _ ronfler
  • _Format dxgi _ R16G16B16A16 _ Saint-
  • DXGI _ format _ R10G10B10A2 _ UNORM
  • DXGI _ format _ R10G10B10A2 _ uint
  • DXGI _ format _ R8G8B8A8 non _ typé
  • DXGI _ format _ R8G8B8A8 _ UNORM
  • DXGI _ format _ R8G8B8A8 _ UNORM _ sRVB
  • DXGI _ format _ R8G8B8A8 _ uint
  • _Format dxgi _ R8G8B8A8 _ ronfler
  • _Format dxgi _ R8G8B8A8 _ Saint-
  • DXGI _ format _ B8G8R8A8 non _ typé
  • DXGI _ format _ B8G8R8A8 _ UNORM
  • DXGI _ format _ B8G8R8X8 _ UNORM
  • DXGI _ format _ B8G8R8A8 _ UNORM _ sRVB
  • DXGI _ format _ B8G8R8X8 non _ typé
  • DXGI _ format _ B8G8R8X8 _ UNORM _ sRVB
  • DXGI _ format _ R32 non _ typé
  • DXGI _ format _ R32 _ float
  • DXGI _ format _ R32 _ uint
  • _Format dxgi _ R32 _ Saint-
  • DXGI _ format _ R16 non _ typé
  • DXGI _ format _ R16 _ float
  • DXGI _ format _ R16 _ UNORM
  • DXGI _ format _ R16 _ uint
  • _Format dxgi _ R16 _ ronfler
  • _Format dxgi _ R16 _ Saint-
  • _Format dxgi _ R8 non _ typé
  • _Format dxgi _ R8 _ UNORM
  • _Format dxgi _ R8 _ uint
  • _Format dxgi _ R8 _ ronfler
  • _Format dxgi _ R8 _ Saint-
  • _Format dxgi _ a8 _ UNORM
  • DXGI _ format _ AYUV
  • DXGI _ format _ YUY2
  • DXGI _ format _ NV12
  • DXGI _ format _ NV11
  • DXGI _ format _ P016
  • DXGI _ format _ P010
  • DXGI _ format _ Y216
  • DXGI _ format _ Y210
  • DXGI _ format _ Y416
  • DXGI _ format _ Y410

Si ID3D11Device :: CheckFeatureSupport retourne la valeur true dans ExtendedResourceSharing, vous pouvez partager les ressources que vous avez créées avec ces fonctionnalités et indicateurs :

Notes

Quand ExtendedResourceSharing a la valeur true, vous avez plus de flexibilité lorsque vous spécifiez des indicateurs de liaison pour partager des ressources Texture2D. Non seulement le pilote graphique et le matériel prennent en charge plus d’indicateurs de liaison, mais également d’autres combinaisons d’indicateurs de liaison. Par exemple, vous pouvez spécifier uniquement la _ _ _ cible de rendu d3d11 bind ou aucun indicateur de liaison, et ainsi de suite.

Même si ID3D11Device :: CheckFeatureSupport retourne la valeur true dans ExtendedResourceSharing, vous ne pouvez toujours pas partager les ressources que vous avez créées avec ces fonctionnalités et indicateurs :

Modifier les sous-ressources avec les nouvelles options de copie

Direct3D 11,1 vous permet d’utiliser de nouveaux indicateurs de copie pour copier et mettre à jour des sous-ressources. Lorsque vous copiez une sous-ressource, les ressources source et de destination peuvent être identiques et les régions source et de destination peuvent se chevaucher.

Cette fonctionnalité Direct3D 11,1 est constituée de l’API suivante.

Ignorer les ressources et les affichages des ressources

Direct3D 11,1 vous permet d’ignorer les ressources et les vues des ressources à partir du contexte de périphérique. Cette nouvelle fonctionnalité informe le GPU que le contenu existant dans les ressources ou les affichages de ressources n’est plus nécessaire.

Cette fonctionnalité Direct3D 11,1 est constituée de l’API suivante.

Prendre en charge un plus grand nombre de UAVs

Direct3D 11,1 vous permet d’utiliser un plus grand nombre de UAVs quand vous liez des ressources à l' étape de fusion de sortie et lorsque vous définissez un tableau de vues pour une ressource non triée.

Direct3D 11,1 met à jour les méthodes suivantes pour cette fonctionnalité.

Lier une sous-plage d’une mémoire tampon constante à un nuanceur

Direct3D 11,1 vous permet de lier une sous-plage d’une mémoire tampon constante à un nuanceur pour y accéder. Vous pouvez fournir une mémoire tampon constante plus grande et spécifier la sous-plage que le nuanceur peut utiliser.

Cette fonctionnalité Direct3D 11,1 est constituée de l’API suivante.

Récupérer la sous-plage d’une mémoire tampon constante liée à un nuanceur

Direct3D 11,1 vous permet de récupérer la sous-plage d’une mémoire tampon constante qui est liée à un nuanceur.

Cette fonctionnalité Direct3D 11,1 est constituée de l’API suivante.

Effacer tout ou partie d’un affichage des ressources

Direct3D 11,1 vous permet de supprimer un affichage des ressources (RTV, UAV ou n’importe quelle vue vidéo d’une surface Texture2D). Vous appliquez la même valeur de couleur à toutes les parties de la vue.

Cette fonctionnalité Direct3D 11,1 est constituée de l’API suivante.

Mapper les SRVs de mémoires tampons dynamiques sans _ remplacement

Direct3D 11,1 vous permet de mapper des vues de ressource de nuanceur (SRV) de mémoires tampons dynamiques avec la carte de D3D11 _ _ _ sans remplacement _ . Les runtimes Direct3D 11 et versions antérieures limitent le mappage aux mémoires tampons de vertex ou d’index.

Direct3D 11,1 met à jour la méthode ID3D11DeviceContext :: Map pour cette fonctionnalité.

Utiliser UAVs à chaque étape du pipeline

Direct3D 11,1 vous permet d’utiliser les modèles de nuanceur 5,0 suivants dans toutes les étapes du nuanceur qui étaient précédemment utilisés dans les nuanceurs de pixels et les nuanceurs de calcul.

Direct3D 11,1 met à jour les méthodes suivantes pour cette fonctionnalité.

Ces instructions existaient dans Direct3D 11,0 dans PS _ 5 _ 0 et CS _ 5 _ 0. Étant donné que Direct3D 11,1 rend les UAVs disponibles à toutes les étapes du nuanceur, ces instructions sont disponibles à toutes les étapes du nuanceur.

Si vous transmettez des nuanceurs compilés (VS/HS/DS/HS) qui utilisent l’une de ces instructions à une fonction de création de nuanceur, comme CreateVertexShader, sur les appareils qui ne prennent pas en charge UAVs à chaque étape (y compris les pilotes existants qui ne sont pas implémentés avec cette fonctionnalité), la fonction de création de nuanceur échoue. La fonction Create-Shader échoue également si le nuanceur tente d’utiliser un emplacement UAV au-delà du jeu d’emplacements UAV pris en charge par le matériel.

Les UAVs référencés par ces instructions sont partagés entre toutes les étapes de pipeline. Par exemple, un UAV qui est lié à l’emplacement 0 à l' étape de fusion de sortie est disponible à l’emplacement 0 vers vs/HS/DS/GS/PS.

Les accès UAV que vous émettez à partir de ou à travers les étapes du nuanceur qui s’exécutent dans un dessin donné * () ou que vous émettez à partir du nuanceur de calcul au sein d’une distribution * () ne sont pas forcément terminés dans l’ordre dans lequel vous les avez émis. Toutefois, tous les accès UAV se terminent à la fin du dessin * () ou de la distribution * ().

Prise en charge étendue des appareils WARPs

Direct3D 11,1 étend la prise en charge des appareils Warps , que vous créez en passant la _ _ _ distorsion de type de pilote D3D dans le paramètre DriverType de D3D11CreateDevice.

À compter de la prise en charge des appareils Direct3D 11,1 WARP :

  • Tous les niveaux de fonctionnalité Direct3D de 9,1 à 11,1
  • Nuanceurs et facettisation de calcul
  • Surfaces partagées. Autrement dit, vous pouvez entièrement partager des surfaces entre des appareils de distorsion, ainsi qu’entre des appareils WARPs dans différents processus.

Les appareils WARP ne prennent pas en charge les fonctionnalités facultatives suivantes :

Lorsque vous exécutez une machine virtuelle, Hyper-V, avec votre unité de traitement graphique (GPU) désactivée ou sans pilote d’affichage, vous recevez un appareil de distorsion dont le nom convivial est « carte vidéo Microsoft de base ». ce périphérique WARP peut exécuter la Windows complète, qui comprend les applications DWM, Internet Explorer et Windows store. Ce périphérique WARP prend également en charge l’exécution d’applications héritées qui utilisent DirectDraw ou les applications en cours d’exécution qui utilisent Direct3D 3 via Direct3D 11,1.

Utiliser Direct3D dans les processus de la session 0

à partir de Windows 8 et Windows Server 2012, vous pouvez utiliser la plupart des api Direct3D dans les processus de la Session 0.

Notes

Ces API de sortie, de fenêtre, de permutation et de présentation ne sont pas disponibles dans les processus de la session 0, car elles ne s’appliquent pas à l’environnement de la session 0 :

Si vous appelez l’une des API précédentes dans un processus de session 0, l' _ erreur dxgi _ n’est pas _ _ disponible actuellement.

Prise en charge de la mémoire tampon Shadow au niveau de la fonctionnalité 9

Utilisez un sous-ensemble de _ fonctionnalités de mémoire tampon fantôme Direct3D 10 0 + pour implémenter des effets d’ombre sur le niveau de fonctionnalité 9 _ x. Pour plus d’informations sur ce que vous devez faire pour implémenter des effets d’ombre sur le niveau de fonctionnalité 9 _ x, consultez implémentation de mémoires tampons secondaires pour le niveau de fonctionnalité Direct3D 9.

Nouveautés de Direct3D 11