callc (sm4 - asm)
Llama condicionalmente a una subrutina marcada por donde la etiqueta l# aparece en el programa.
callc{_z|_nz} src0.select_component, l # |
---|
Elemento | Descripción |
---|---|
src0 |
[in] Componente en el que se va a probar la condición. |
L # |
[in] Etiqueta de la subrutina. |
Comentarios
Cuando se encuentra un ret , devuelva la ejecución a la instrucción después de esta llamada.
El formato de token contiene el desplazamiento de la etiqueta correspondiente en el sombreador como comodidad.
En el ejemplo siguiente se muestra la instrucción de llamada.
...
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
Restricciones
- Las subrutinas pueden anidar 32 profundidades.
- La implementación administra la pila de direcciones de devolución de forma transparente.
- Si ya hay 32 entradas en la pila de direcciones de devolución y se emite una llamada , se omite la llamada.
- No hay ninguna pila de parámetros automática. La aplicación puede usar una matriz de registro temporal indizable (x#[]) para implementar manualmente una pila. Sin embargo, las direcciones de devolución de llamada de subrutina no son visibles y son ortogonales para cualquier administración manual de pila realizada por la aplicación.
- No se permite la indexación del parámetro l# .
- El registro de 32 bits proporcionado por src0 se prueba en un nivel de bits. Si algún bit es distinto de cero, callc_nz realizará la llamada. Si todos los bits son cero, callc_z realizará la llamada.
- No se permite la recursividad.
Esta instrucción se aplica a las siguientes fases del sombreador:
Sombreador de vértices | Sombreador de geometría | Sombreador de píxeles |
---|---|---|
x | x | x |
Modelo de sombreador mínimo
Esta función se admite en los siguientes modelos de sombreador.
Modelo de sombreador | Compatible |
---|---|
Modelo de sombreador 5 | sí |
Modelo de sombreador 4.1 | sí |
Modelo de sombreador 4 | sí |
Modelo de sombreador 3 (DirectX HLSL) | no |
Modelo de sombreador 2 (DirectX HLSL) | no |
Modelo de sombreador 1 (DirectX HLSL) | no |