callc (sm4 - asm)
Chiama in modo condizionale una subroutine contrassegnata da dove viene visualizzata l # etichetta nel programma.
callc{_z|_nz} src0.select_component, l # |
---|
Elemento | Descrizione |
---|---|
src0 |
[in] Componente in cui testare la condizione. |
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 come praticità.
Nell'esempio seguente viene illustrata l'istruzione di chiamata.
...
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
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 emessa una chiamata, la chiamata viene ignorata.
- Non esiste alcun stack di parametri automatico. L'applicazione può usare una matrice di registrazione temporanea indicizzata (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.
- Il registro a 32 bit fornito da src0 viene testato a livello di bit. Se un bit è diverso da zero, callc_nz eseguirà la chiamata. Se tutti i bit sono zero, callc_z eseguirà la chiamata.
- La ricorsione non è consentita.
Questa istruzione si applica alle fasi dello shader seguenti:
Vertex shader | Geometry shader | Pixel shader |
---|---|---|
x | x | x |
Modello di shader minimo
Questa funzione è supportata nei modelli 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 |