Partager via


callc (sm4 - asm)

Appelle de manière conditionnelle une sous-routine marquée par où l’étiquette l# apparaît dans le programme.

callc{_z|_nz} src0.select_component, l #
Élément Description
src0
[in] Composant sur lequel tester la condition.
L #
[in] Étiquette de la sous-routine.

Notes

Lorsqu’un ret est rencontré, retournez l’exécution à l’instruction après cet appel.

Le format de jeton contient le décalage de l’étiquette correspondante dans le nuanceur à titre pratique.

L’exemple suivant montre l’instruction d’appel.

                ...
                callc_z  r1.y, l3 // if all bits in r0.x are 0, call l3
                callc_nz r2.z, l3 // if any bit in r0.x is nonzero, call l3
                ...
                ret
                label l3
                    ...
                    retc_nz r0.x
                    ...
                ret

Restrictions

  • Les sous-routines peuvent imbriquer 32 profondeurs.
  • La pile d’adresses de retour est gérée de manière transparente par l’implémentation.
  • S’il existe déjà 32 entrées dans la pile d’adresses de retour et qu’un appel est émis, l’appel est ignoré.
  • Il n’y a pas de pile de paramètres automatique. L’application peut utiliser un tableau de registre temporaire indexable (x#[]) pour implémenter manuellement une pile. Toutefois, les adresses de retour d’appel de sous-routine ne sont pas visibles et sont orthogonales à toute gestion manuelle de la pile effectuée par l’application.
  • L’indexation du paramètre l# n’est pas autorisée.
  • Le registre 32 bits fourni par src0 est testé au niveau du bit. Si un bit n’est pas nul, callc_nz effectuera l’appel. Si tous les bits sont zéro, callc_z effectuera l’appel.
  • La récursivité n’est pas autorisée.

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

Nuanceur de sommets Nuanceur de géométrie Nuanceur de pixels
x x x

Modèle de nuanceur minimal

Cette fonction 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 Oui
Modèle de nuanceur 4 Oui
Nuanceur modèle 3 (DirectX HLSL) non
Nuanceur modèle 2 (DirectX HLSL) non
Nuanceur Modèle 1 (DirectX HLSL) non

Assembly de nuanceur modèle 4 (DirectX HLSL)