Share via


imm_atomic_alloc (sm5 - asm)

Incrémentez de manière atomique le compteur 32 bits masqué stocké avec une vue d’accès non ordonné Count ou Append, en retournant la valeur d’origine.

imm_atomic_alloc dest[.single_component_mask], dstUAV
Élément Description
Dest
[in] Contient la valeur du compteur retournée.
dstUAV
[in] UAV de mémoire tampon structurée avec l’indicateur Nombre ou Ajout.

Remarques

Une valeur de compteur d’entiers 32 bits non signée masquée est associée à chaque vue Nombre ou Mémoire tampon d’ajout qui est initialisée lorsque la vue est liée au pipeline, y compris l’option permettant de conserver la valeur précédente.

Cette instruction effectue un incrément atomique de la valeur du compteur, en retournant l’original à dest.

Pour un UAV Append, la valeur retournée est uniquement valide pendant la durée de l’appel du nuanceur. après cela, l’implémentation peut réorganiser la disposition de la mémoire. Tout adressage de mémoire basé sur la valeur retournée doit être limité à l’appel du nuanceur.

Pour un UAV Append, dans l’appel du nuanceur, le compilateur HLSL peut utiliser la valeur retournée comme index struct à utiliser pour accéder à la mémoire tampon structurée. L’accès à tout index struct autre que les emplacements retournés par les appels à imm_atomic_alloc ou _consume produit des résultats non définis, car l’emplacement de mémoire auquel l’utilisateur accède exactement est aléatoire et uniquement fixe pour la durée de vie de l’appel du nuanceur.

Pour un UAV Count, la valeur retournée peut être enregistrée par l’application en tant que référence à un emplacement fixe au sein de l’UAV qui est significatif une fois l’appel du nuanceur terminé. N’importe quel emplacement d’un UAV count est toujours accessible indépendamment de la valeur du nombre.

Il n’y a pas de serrage du nombre, de sorte qu’il s’encapsule sur le dépassement de capacité.

Le même nuanceur ne peut pas essayer à la fois imm_atomic_alloc et imm_atomic_consume sur le même UAV. En outre, le GPU ne peut pas autoriser plusieurs appels de nuanceur à mélanger imm_atomic_alloc et imm_atomic_consume sur le même UAV.

Cette instruction s’applique aux étapes de nuanceur suivantes :

Sommet Coque Domain Géométrie Pixel Compute
X X

Étant donné que les UAV sont disponibles à toutes les étapes du nuanceur pour Direct3D 11.1, cette instruction s’applique à toutes les étapes de nuanceur pour le runtime Direct3D 11.1, qui est disponible à partir de Windows 8.

Sommet Coque Domain Géométrie Pixel Compute
X X X X X X

Modèle de nuanceur minimal

Cette instruction est prise en charge dans les modèles de nuanceur suivants :

Modèle de nuanceur Pris en charge
Modèle de nuanceur 5 Oui
Modèle de nuanceur 4.1 Non
Modèle de nuanceur 4 Non
Nuanceur modèle 3 (DirectX HLSL) Non
Nuanceur modèle 2 (DirectX HLSL) Non
Nuanceur modèle 1 (DirectX HLSL) Non

Assembly de modèle de nuanceur 5 (DirectX HLSL)