énumération D3D11_MAP (d3d11.h)

Identifie une ressource accessible pour la lecture et l’écriture par le processeur. Les applications peuvent combiner un ou plusieurs de ces indicateurs.

Syntax

typedef enum D3D11_MAP {
  D3D11_MAP_READ = 1,
  D3D11_MAP_WRITE = 2,
  D3D11_MAP_READ_WRITE = 3,
  D3D11_MAP_WRITE_DISCARD = 4,
  D3D11_MAP_WRITE_NO_OVERWRITE = 5
} ;

Constantes

 
D3D11_MAP_READ
Valeur : 1
La ressource est mappée pour la lecture. La ressource doit avoir été créée avec un accès en lecture
(voir D3D11_CPU_ACCESS_READ).
D3D11_MAP_WRITE
Valeur : 2
La ressource est mappée pour l’écriture. La ressource doit avoir été créée avec l’écriture
access (voir D3D11_CPU_ACCESS_WRITE).
D3D11_MAP_READ_WRITE
Valeur : 3
La ressource est mappée pour la lecture et l’écriture. La ressource doit avoir été créée avec lecture et écriture
access (voir D3D11_CPU_ACCESS_READ et D3D11_CPU_ACCESS_WRITE).
D3D11_MAP_WRITE_DISCARD
Valeur : 4
La ressource est mappée pour l’écriture ; le contenu précédent de la ressource n’est pas défini. La ressource doit avoir été créée avec un accès en écriture
et l’utilisation dynamique (voir D3D11_CPU_ACCESS_WRITE et D3D11_USAGE_DYNAMIC).
D3D11_MAP_WRITE_NO_OVERWRITE
Valeur : 5
La ressource est mappée pour l’écriture ; le contenu existant de la ressource ne peut pas être remplacé (voir remarques). Cet indicateur n’est valide que sur le sommet et
mémoires tampons d’index. La ressource doit avoir été créée avec un accès en écriture (voir D3D11_CPU_ACCESS_WRITE).
Ne peut pas être utilisé sur une ressource créée avec l’indicateur D3D11_BIND_CONSTANT_BUFFER .

Note Le runtime Direct3D 11.1, disponible à partir de Windows 8, permet de mapper des mémoires tampons constantes dynamiques et des vues de ressources de nuanceur (SMV) des mémoires tampons dynamiques avec D3D11_MAP_WRITE_NO_OVERWRITE. Les runtimes Direct3D 11 et antérieurs limitaient le mappage aux tampons de vertex ou d’index. Pour déterminer si un appareil Direct3D prend en charge ces fonctionnalités, appelez ID3D11Device ::CheckFeatureSupport avec D3D11_FEATURE_D3D11_OPTIONS. CheckFeatureSupport remplit les membres d’une structure D3D11_FEATURE_DATA_D3D11_OPTIONS avec les fonctionnalités de l’appareil. Les membres concernés ici sont MapNoOverwriteOnDynamicConstantBuffer et MapNoOverwriteOnDynamicBufferSRV.

 

Remarques

Cette énumération est utilisée dans ID3D11DeviceContext ::Map.

Signification de D3D11_MAP_WRITE_NO_OVERWRITE

D3D11_MAP_WRITE_NO_OVERWRITE signifie que l’application promet de ne pas écrire dans les données que l’étape d’assembleur d’entrée (IA) utilise. En échange, le GPU permet à l’application d’écrire dans d’autres parties de la même mémoire tampon. L’application doit s’assurer qu’elle n’écrit pas sur les données utilisées par la phase IA.

Par exemple, considérez la mémoire tampon illustrée dans le diagramme suivant. Si un appel Draw qui utilise les sommets 4 à 6 a été émis, une application qui appelle Map sur cette mémoire tampon doit s’assurer qu’elle n’écrit pas dans les sommets auxquels l’appel Draw accède pendant le rendu.

Diagramme d’une mémoire tampon qui inclut des sommets dans différentes phases d’utilisation Toutefois, il peut être difficile de s’assurer que cela peut être difficile, car le GPU est souvent de nombreuses trames derrière le processeur en termes de l’image qu’il traite actuellement. Le suivi des sections d’une ressource qui sont utilisées en raison d’appels effectués il y a 2 à 5 images est difficile et sujet aux erreurs. Pour cette raison, il est recommandé que les applications écrivent uniquement dans les parties non initialisées d’une ressource lors de l’utilisation de D3D11_MAP_WRITE_NO_OVERWRITE.

Utilisation courante des D3D11_MAP_WRITE_DISCARD avec D3D11_MAP_WRITE_NO_OVERWRITE

D3D11_MAP_WRITE_DISCARD et D3D11_MAP_WRITE_NO_OVERWRITE sont normalement utilisés conjointement avec des mémoires tampons d’index/vertex dynamiques. D3D11_MAP_WRITE_DISCARD peut également être utilisé avec des textures dynamiques. Toutefois, D3D11_MAP_WRITE_NO_OVERWRITE ne peut pas être utilisé avec des textures dynamiques.

Une utilisation courante de ces deux indicateurs implique de remplir les mémoires tampons d’index/vertex dynamiques avec une géométrie visible à partir de la position actuelle de la caméra. La première fois que des données sont entrées dans la mémoire tampon sur une trame donnée, Map est appelée avec D3D11_MAP_WRITE_DISCARD ; Cela invalide le contenu précédent de la mémoire tampon. La mémoire tampon est ensuite remplie avec toutes les données disponibles.

Les écritures ultérieures dans la mémoire tampon dans la même trame doivent utiliser D3D11_MAP_WRITE_NO_OVERWRITE. Cela permet au processeur d’accéder à une ressource potentiellement utilisée par le GPU tant que les restrictions décrites précédemment sont respectées.

Configuration requise

Condition requise Valeur
En-tête d3d11.h

Voir aussi

Énumérations de ressources