imm_atomic_cmp_exch (sm5 - asm)
Comparez et échangez immédiatement en mémoire.
imm_atomic_cmp_exch dst0[.single_component_mask], dst1, dstAddress[.swizzle], src0[.select_component], src1[.select_component] |
---|
Élément | Description |
---|---|
dst0 |
[out] Contient dst1 avant l’écriture. |
dst1 |
[in] Vue d’accès non ordonnée (UAV) (u#). Dans le nuanceur de calcul, il peut également s’agir de la mémoire partagée du groupe de threads (g#). |
dstAddress |
[in] Mémoire de destination. |
src0 |
[in] Valeur à comparer à dst1. |
src1 |
[in] Valeur écrite dans la mémoire de destination si les valeurs comparées sont identiques. |
Cette instruction effectue une comparaison de valeur 32 bits de composant unique de l’opérande src0 avec dst1 à 32 bits par adresse de composant dstAddress.
Si dst1 est un u#, il a peut-être été déclaré comme brut, typé ou structuré. S’il est tapé, il doit être déclaré comme UINT/SINT avec le format de ressource lié R32_UINT/_SINT.
Si dst1 a la valeur g#, il doit être déclaré comme brut ou structuré.
Si les valeurs comparées sont identiques, la valeur 32 bits à composant unique dans src1 est écrite dans la mémoire de destination. Sinon, la mémoire de destination n’est pas modifiée.
La valeur 32 bits d’origine dans la mémoire de destination est toujours écrite dans dst0.
L’opération entière est effectuée de manière atomique.
Si l’appel du nuanceur est inactif, par exemple si le pixel a été ignoré précédemment dans son exécution, ou si un appel de pixel/d’exemple n’existe que pour servir d’assistance à un pixel/échantillon réel pour les dérivés, cette instruction ne modifie pas du tout la mémoire dst1 et la valeur retournée n’est pas définie.
L’adressage hors limites sur u# entraîne l’écriture de rien dans la mémoire, sauf si l’u# est structuré et que le décalage d’octet dans le struct (deuxième composant de l’adresse) entraîne l’accès hors limites, alors le contenu entier de l’UAV devient non défini.
L’adressage hors limites sur u# ou g# entraîne le retour d’un résultat non défini au nuanceur dans dst0.
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 |