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. Sélectionnez le _ composant, l#
Élément Description
src0
[dans ] le composant sur lequel tester la condition.
budget#
[dans ] l’étiquette de la sous-routine.

Remarques

Quand un RET est rencontré, retourne l’exécution à l’instruction après cet appel.

Le format de jeton contient le décalage de l’étiquette correspondante dans le nuanceur pour des raisons pratiques.

L’exemple suivant illustre l’instruction call.

                ...
                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 en profondeur.
  • La pile d’adresses de retour est gérée de façon transparente par l’implémentation de.
  • S’il existe déjà 32 entrées sur la pile d’adresses de retour et qu’un appel est émis, l’appel est ignoré.
  • Il n’existe pas de pile de paramètres automatique. L’application peut utiliser un tableau de registres 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 de pile manuelle 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é à un niveau binaire. Si un bit est différent de zéro, callc _ NZ effectue l’appel. Si tous les bits sont nuls, callc _ z effectue l’appel.
  • La récursivité n’est pas autorisée.

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

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
Shader, modèle 5 oui
Modèle de nuanceur 4,1 oui
Nuanceur modèle 4 oui
Shader Model 3 (DirectX HLSL) non
Shader Model 2 (DirectX HLSL) non
Shader Model 1 (DirectX HLSL) non

Assembly modèle 4 du nuanceur (DirectX HLSL)