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
Modello shader 4.1
Modello shader 4
Modello shader 3 (DirectX HLSL) no
Modello shader 2 (DirectX HLSL) no
Modello shader 1 (DirectX HLSL) no

Shader Model 4 Assembly (DirectX HLSL)