IMM _ Atomic _ Alloc (SM5-ASM)
Incrémentez atomiquement le compteur 32 bits masqué stocké avec un nombre ou ajoutez la vue d’accès non ordonné (UAV), en retournant la valeur d’origine.
| IMM _ Atomic _ Alloc dst0 [ . _ _ masque de composant unique ] , dstUAV |
|---|
| Élément | Description |
|---|---|
| dst0 |
[dans ] contient la valeur de compteur retournée. |
| dstUAV |
[dans ] une mémoire tampon structurée UAV avec l’indicateur Count ou Append. |
Notes
Il existe une valeur de compteur entière non signée 32 bits associée à chaque vue de la mémoire tampon Count ou Append 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 de compteur, en retournant l’original à dst0.
Pour un UAV Append, la valeur retournée est valide uniquement 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 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 de struct à utiliser pour accéder à la mémoire tampon structurée. L’accès à n’importe quel index de struct autre que ceux qui sont retournés par les appels à IMM _ Atomic _ Alloc ou _ consomment des résultats indéfinis dans le sens où l’emplacement de la mémoire au sein du UAV fait l’objet d’un accès aléatoire est aléatoire et fixe uniquement pendant 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 dans le UAV qui est explicite une fois l’appel du nuanceur terminé. Tout emplacement dans un UAV Count peut toujours être accessible indépendamment de la valeur de Count.
Il n’y a pas de fixation du nombre. il est donc encapsulé en cas de dépassement de capacité.
Le même nuanceur ne peut pas tenter à la fois l' _ _ allocation atomique de IMM et le IMM _ Atomic _ consommer sur le même UAV. En outre, le GPU ne peut pas autoriser plusieurs appels de nuanceur à mélanger _ Atomic Atomic _ Alloc et IMM _ Atomic _ consommer sur le même UAV.
Cette instruction s’applique aux étapes suivantes du nuanceur :
| Sommet | Forme | Domain | Géométrie | Pixel | Compute |
|---|---|---|---|---|---|
| X | X |
Étant donné que les UAVs sont disponibles à toutes les étapes de nuanceur pour Direct3D 11,1, cette instruction s’applique à toutes les étapes de nuanceur pour le runtime Direct3D 11,1, disponible à partir de Windows 8.
| Sommet | Forme | 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 | Prise en charge |
|---|---|
| Shader, modèle 5 | Oui |
| Modèle de nuanceur 4,1 | non |
| Nuanceur modèle 4 | non |
| Shader Model 3 (DirectX HLSL) | non |
| Shader Model 2 (DirectX HLSL) | non |
| Shader Model 1 (DirectX HLSL) | non |