Partager via


Nouveautés de l’affichage Windows 10 et des pilotes graphiques

Cette page décrit les nouveautés des pilotes d’affichage et des pilotes graphiques pour Windows 10, version 2004 (WDDM 2.7). Pour voir les fonctionnalités ajoutées dans les versions précédentes de WDDM 2.X, consultez Nouveautés des versions antérieures de WDDM 2.X.

Nuanceurs de maillage

Les nuanceurs de maillage sont un moyen d’augmenter la flexibilité et les performances du pipeline graphique de Direct3D 12 lors de l’utilisation de la rastérisation. Ils servent de nouveau remplacement pour l’assembleur d’entrée ( en particulier, les étapes de nuanceur de vertex et de géométrie) en remplaçant une partie du comportement de fonction fixe de l’assembleur d’entrée par un comportement à fonction flexible. Avec les nuanceurs de maillage, les applications peuvent appliquer l’élimination plus tôt, et donc plus efficacement, que l’assembleur d’entrée. Les primitives peuvent être supprimées sans que leurs données d’index soient traitées par le GPU, ce qui est très bénéfique, car nous constatons que le nombre de primitives d’applications 3D devient de plus en plus élevé au fil du temps.

Dans le cas où un nuanceur de pixels est attaché, la sortie des primitives d’un nuanceur de maillage alimente directement l’étape du nuanceur de pixels.

La fonctionnalité de nuanceur de maillage introduit l’étape du nuanceur de maillage avec une nouvelle étape : le nuanceur d’amplification. Les nuanceurs d’amplification remplacent l’étape de pavage GPU. Les applications configurent leur nuanceur d’amplification pour appeler un nuanceur de maillage un certain nombre de fois selon les besoins. Les nuanceurs d’amplification sont une étape facultative qui permet à une application de contrôler dynamiquement les niveaux de détails géométriques.

La fonctionnalité de nuanceur de maillage implique de nouvelles constructions de langage d’ombrage ainsi que des modifications UMD. Pour signaler la fonctionnalité d’appareil des nuanceurs de maillage, il existe un champ appelé MeshShaderTier signalé via D3D12DDI_D3D12_OPTIONS_DATA_0073. Et, étant donné que cela introduit deux nouvelles étapes de nuanceur, il existe deux nouveaux champs dans D3D12DDIARG_CREATE_PIPELINE_STATE_0075, hMeshShader et hAmplificationShader. Pour lancer les choses, il existe la liste de commandes DDI PFND3D12DDI_DISPATCH_MESH_0074 et également D3D12DDI_INDIRECT_ARGUMENT_TYPE_DISPATCH_MESH pour la répartition indirecte.

DirectX Raytracing (DXR) 1.1

WDDM 2.7 apporte de nouvelles fonctionnalités et améliorations qui s’appuient sur la version initiale de DXR dans Direct3D 12.

  • Le raytracing inline est une autre forme de raytracing qui n’utilise pas de nuanceurs dynamiques distincts ou de tables de nuanceurs. Il offre au développeur de la flexibilité et une certaine commodité dans tous les cas où les nuanceurs utilisant le raytracing de style DXR 1.0, les appeler « dynamic-shader-based » raytracing, ne conviennent pas. Le raytracing inline est disponible dans n’importe quelle étape du nuanceur, y compris les nuanceurs de calcul, les nuanceurs de pixels, etc. Cela est mentionné ici comme étant disponible avec WDDM 2.7, bien qu’il ne corresponde pas à une modification DDI.

  • Les applications peuvent appeler DispatchRays via ExecuteIndirect, ce qui permet de configurer le travail de raytracing sur le GPU. Cela peut être utile pour les applications qui cherchent à éliminer, trier ou ajuster le travail de raytracing et qui utilisent des nuanceurs pour cela. Parallèlement à cela, il existe maintenant une valeur d’énumération D3D12DDI_INDIRECT_ARGUMENT_TYPE. Lors de l’utilisation de la répartition de raytracing indirect, chaque élément de la mémoire tampon d’exécution indirecte est de type D3D12DDIARG_DISPATCH_RAYS_0054.

  • La surcharge liée à la création de l’état du pipeline pour prendre en compte les différentes combinaisons de nuanceurs est l’un de ces problèmes difficiles dans l’infographie 3D. DXR 1.1 inclut quelque chose qui peut vous aider : add-to-state-object. AddToStateObject(), tel qu’il est exposé dans l’API, permet aux applications d’ajouter des nuanceurs à un objet d’état existant avec une surcharge de processeur proportionnelle uniquement à ce qui est ajouté. Parallèlement à cela, il existe deux fonctions DDI d’appareil : PFND3D12DDI_ADD_TO_STATE_OBJECT_0072 et PFND3D12DDI_CALC_PRIVATE_ADD_TO_STATE_OBJECT_SIZE_0072.

Pour la création de rapports de fonctionnalités générales, il existe une nouvelle valeur d’énumération D3D12DDI_RAYTRACING_TIER_1_1 utilisée pour le niveau de création de rapports 1.1.

Commentaires de l’échantillonneur

Sampler Feedback est une fonctionnalité Direct3D 12 permettant de capturer et d’enregistrer des informations et des emplacements d’échantillonnage de texture. Sans commentaires de l’échantillonneur, ces détails seraient opaques pour le développeur. Cette fonctionnalité donne aux applications la possibilité non seulement de savoir quel mip a été échantillonné, mais également de savoir où sur ces mips. Les applications peuvent être intéressées par les informations d’échantillonnage, par exemple pour :

  • savoir précisément ce qu’il faut charger ensuite dans un système de diffusion en continu de textures, ou
  • savoir précisément ce qui doit être ombré dans un système de rendu d’espace de texture.

Les commentaires des opérations d’exemples sont écrits dans une « carte de commentaires » qui agit comme une sorte de ressource opaque qui doit être transcodée pour obtenir des informations pouvant être inspectées par les applications. En ce qui concerne l’écriture de commentaires proprement dits, il existe des constructions HLSL dans le modèle de nuanceur 6_5 pour cela. La sémantique est très similaire à la sémantique de l’exemple de Texture2D et de ses variantes.

Bien que les commentaires de l’échantillonneur utilisent bien les nouvelles constructions de langage d’ombrage, ils impliquent également des modifications UMD. Pour la vérification des fonctionnalités de l’appareil, une limite appelée SamplerFeedbackTier est signalée via D3D12DDI_D3D12_OPTIONS_DATA_0073. La création de ressources a été révisée pour prendre un nouveau champ, la région mip de commentaires de l’échantillonneur, de type D3D12DDI_MIP_REGION_0075. Parallèlement à cela, il existe également une nouvelle méthode de création de descripteur, PFND3D12DDI_CREATE_SAMPLER_FEEDBACK_UNORDERED_ACCESS_VIEW_0075.

Protection du contenu

La prise en charge facultative des ressources protégées a été ajoutée aux opérations vidéo Direct3D 12 dans WDDM 2.7. Pour l’arrière-plan, les ressources protégées existaient avant WDDM 2.7, mais étaient disponibles uniquement pour le partage inter-API et les graphiques ou le calcul, et non pour la vidéo.

La prise en charge des ressources protégées n’est pas signalée par le pilote comme une chose globale ; c’est sur une base par opération. Si un pilote signale la prise en charge des ressources protégées pour une opération particulière, cela signifie que l’opération peut lire et écrire des ressources protégées et prend en charge le partage entre API si le type de ressource le permet. Une autre chose à mentionner est que si un pilote revendique la prise en charge des ressources protégées pour un format particulier, il doit également prendre en charge ce format en tant que ressource non protégée.

Avec WDDM 2.7, les méthodes de création de ressources sont modifiées pour prendre une D3D12DDI_HPROTECTEDRESOURCESESSION instance facultative. Les pilotes reçoivent ce paramètre au moment de la création de l’objet pour informer l’installation et les allocations. En outre, les vérifications du budget de la mémoire sont révisées pour indiquer si l’opération utilisera ou non des ressources protégées. Lorsque le paramètre protected-resource-session n’a pas la valeur NULL, cela indique que l’opération écrit dans les ressources protégées. Pour écrire dans une ressource non protégée, l’objet d’opération doit être recréé.

Les références de décodeur et d’estimation de mouvement doivent être des ressources protégées lorsque la sortie est une ressource protégée. Le traitement vidéo peut être lu à partir d’une combinaison de ressources protégées et non protégées lors de l’écriture dans une ressource protégée.

Avant d’enregistrer une ou plusieurs opérations qui écrivent dans une ressource protégée, PFND3D12DDI_SETPROTECTEDRESOURCESESSION_0030 doivent être appelées avec une session de ressource non protégée par NULL. L’appel de PFND3D12DDI_SETPROTECTEDRESOURCESESSION_0030 avec null est nécessaire avant d’enregistrer une ou plusieurs opérations qui écrivent dans des ressources non protégées.

Pour en savoir plus sur la visite guidée ci-dessus des modifications apportées à DDI pour la protection du contenu dans WDDM 2.7, consultez D3D12DDI_VIDEO_DECODE_PROTECTED_RESOURCES_DATA_0072 comme point de départ.

Amélioration de la création de rapports de mémoire tampon d’historique pour les outils

WDDM 2.7 introduit une modification DDI qui profite à l’utilisation des mémoires tampons d’historique par les outils de débogage GPU. Avec cette modification, une seule soumission de mémoire tampon de commandes peut contenir du travail correspondant à plusieurs listes de commandes plutôt qu’une seule liste de commandes à la fois. Cette modification permet aux outils de débogage GPU de signaler plus précisément les caractéristiques de performances des applications.

Cette fonctionnalité est signalée via D3D12DDICAPS_TYPE_0073_SUPPORT_BATCHED_MARKERS. Il existe une nouvelle D3DDDI_MARKERLOGTYPE de valeur d’énumération D3DDDIMLT_BATCHED, qui correspond à D3DDDI_BATCHEDMARKERDATA. Les structures de données d’événement ETW ont été revvées pour contenir un certain nombre d’éléments D3DDDI_BATCHEDMARKERDATA lorsqu’ils sont de type D3DDDIMLT_BATCHED.

DisplayPort (DP) AUX/I2C

Le canal DP Auxiliary (AUX) fournit l’accès aux données de configuration DP (DPCD), qui est un fichier de registre par appareil utilisé pour lire les fonctionnalités de l’appareil DP, l’entraînement de liaison, la découverte de topologie, l’accès au bus I2C, etc. Consultez DXGK_DP_INTERFACE comme point de départ.