_stockage CMP atomique _ (SM5-ASM)

Comparaison atomique et écriture en mémoire.

Atomic _ CMP _ Store DST, dstAddress [ . Swizzle ] , src0 [ . Select _ ] , composant, src1 [ . Select _ Component]
Élément Description
destination
[dans ] les composants à comparer à src0. Cette valeur doit être un affichage d’accès non ordonné (UAV) # . Dans le nuanceur de calcul, il peut également s’agir d’une mémoire partagée de groupe de threads (g # ).
dstAddress
[dans ] l’adresse mémoire.
src0
[dans ] la valeur 32 bits à comparer avec l' heure d’été.
src1
[dans ] la valeur à écrire dans la mémoire si les valeurs comparées sont identiques.

Notes

Cette instruction effectue une comparaison de valeurs 32 bits de composant unique avec l’opérande src0 avec l' heure d’été à 32 bits par adresse de composant dstAddress.

Si les valeurs comparées sont identiques, la valeur 32 bits d’un seul composant dans src1 est écrite dans la mémoire de destination. Dans le cas contraire, la destination n’est pas modifiée.

La totalité de l’opération de comparaison et d’écriture est effectuée de manière atomique.

Si DST est un u # , il peut être déclaré comme brut, typé ou structuré. Si elle est typée, elle doit être déclarée en tant que UINT/Saint-avec le format de ressource lié R32 _ uint/Saint-est _ .

Si l' heure d’été est g # , elle doit être déclarée comme brute ou structurée.

Le nombre de composants pris à partir de l’adresse est déterminé par la dimensionnalité de l’heure d’été u # ou g # .

Rien n’est retourné au nuanceur.

Si l’appel du nuanceur est inactif, par exemple si le pixel a été ignoré plus tôt dans son exécution, ou si une instruction pixel/échantillon ne modifie pas la mémoire de l' heure d’été (en mode silencieux).

L’adressage hors limites sur u n' # entraîne pas l’écriture dans la mémoire, sauf si u # est structuré et que l’offset d’octet dans le struct (composant « second » de l’adresse) est à l’origine de l’accès hors limites, alors que le contenu entier du UAV devient non défini.

En dehors des limites d’adressage sur g # (les limites de ce g particulier # , par opposition à toute la mémoire partagée), la totalité du contenu de la mémoire partagée devient non définie.

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

Sommet Forme Domain Géométrie Pixel Calcul
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 Calcul
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

Assembly modèle 5 du nuanceur (DirectX HLSL)