call (sm4 - asm)
Chiama una subroutine contrassegnata da dove viene visualizzata l'etichetta l# nel programma.
call l # |
---|
Elemento | Descrizione |
---|---|
L # |
[in] Etichetta della subroutine. |
Commenti
Quando viene rilevato un tentativo , restituire l'esecuzione all'istruzione dopo questa chiamata.
Il formato del token contiene l'offset dell'etichetta corrispondente nello shader per praticità.
Nell'esempio seguente viene illustrata l'istruzione di chiamata.
...
call l3
...
ret
label l3
...
retc_nz r0.x
...
ret
Restrizioni
- Le subroutine possono annidare 32 profondità.
- Lo stack di indirizzi restituito viene gestito in modo trasparente dall'implementazione.
- Se sono già presenti 32 voci nello stack di indirizzi restituiti e viene eseguita una chiamata, la chiamata viene ignorata.
- Non esiste uno stack di parametri automatico. L'applicazione può usare una matrice di registri temporanei indicizzabile (x#[]) per implementare manualmente uno stack. Tuttavia, gli indirizzi restituiti della chiamata subroutine non sono visibili e sono ortogonali per qualsiasi gestione manuale dello stack eseguita dall'applicazione.
- L'indicizzazione del parametro l# non è consentita.
- La ricorsione non è consentita.
Questa istruzione si applica alle fasi dello shader seguenti:
Vertex shader | Geometry shader | Pixel shader |
---|---|---|
x | x | x |
Modello minimo shader
Questa funzione è supportata nei modelli di shader seguenti.
Modello di shader | Supportato |
---|---|
Modello shader 5 | sì |
Modello shader 4.1 | sì |
Modello shader 4 | sì |
Modello shader 3 (DirectX HLSL) | no |
Modello shader 2 (DirectX HLSL) | no |
Modello shader 1 (DirectX HLSL) | no |