Partager via


fcall (sm5 - asm)

Appel de fonction d’interface.

fcall fp#[arrayIndex][callSite]
Élément Description
Fp #
[in] Pointeur de fonction.
Arrayindex
[in] Facultatif. Spécifie un décalage dans le tableau de pointeurs de fonction. Ce paramètre doit être un entier littéral non signé si fp# n’a pas été déclaré comme indexable. Sinon, arrayIndex peut être de la forme littérale base + décalage d’un registre de nuanceur. Par exemple, fcall fp1[r1.w + 0][0] .
callSite
[in] Facultatif. Décalage littéral d’entier non signé dans la table de fonctions sélectionnée, en sélectionnant un corps de fonction fb# à exécuter.

Notes

fp#[arrayIndex][] est résolu en une table de fonctions particulière, sélectionnée à partir de l’API en dehors du nuanceur parmi les choix de table de fonctions répertoriés dans la déclaration de fp#.

La somme de # dans fp# et arrayIndex sélectionne la table de fonctions. Par exemple, si une interface est déclarée en tant que fp4[4][3] (taille de tableau de 4), les fcallsuivants sont équivalents : fcall fp4[2][3] et fp5[1][3], car 4+2 = 5+1.

Restrictions

  • Si arrayIndex utilise l’indexation dynamique, le comportement n’est pas défini si arrayIndex diffère sur les appels de nuanceur adjacents, qui peuvent être exécutés dans lockstep. Le compilateur HLSL tente d’interdire ce cas.

    Les appels adjacents peuvent être inactifs en raison du contrôle de flux, car ils n’interrompent pas l’exécution de lockstep.

  • Si fp# + arrayIndex spécifie un index hors limites, le comportement n’est pas défini.

  • Pour les cas non définis décrits ici, cela signifie que le comportement de l’appareil D3D actuel devient indéfini, y compris la possibilité de perte d’appareil. Toutefois, aucune mémoire en dehors de l’appareil D3D actuel n’est accessible ou exécutée en tant que code.

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

Sommet Coque 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
Modèle de nuanceur 5 Oui
Modèle de nuanceur 4.1 non
Modèle de nuanceur 4 non
Modèle de nuanceur 3 (DirectX HLSL) non
Shader Model 2 (DirectX HLSL) non
Modèle de nuanceur 1 (DirectX HLSL) non

Shader Model 5 Assembly (DirectX HLSL)