callc (sm4 – asm)
Chama condicionalmente uma sub-rotina marcada pelo local em que o rótulo l# aparece no programa.
callc{_z|_nz} src0.select_component, l # |
---|
Item | Descrição |
---|---|
src0 |
[in] O componente no qual testar a condição. |
L # |
[in] O rótulo da sub-rotina. |
Comentários
Quando um ret for encontrado, retorne a execução para a instrução após essa chamada.
O formato de token contém o deslocamento do rótulo correspondente no Sombreador como uma conveniência.
O exemplo a seguir mostra a instrução de chamada.
...
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
Restrições
- As sub-rotinas podem aninhar 32 de profundidade.
- A pilha de endereços de retorno é gerenciada de forma transparente pela implementação.
- Se já houver 32 entradas na pilha de endereços de retorno e uma chamada for emitida, a chamada será ignorada.
- Não há pilha automática de parâmetros. O aplicativo pode usar uma matriz de registro temporário indexável (x#[]) para implementar manualmente uma pilha. No entanto, os endereços de retorno de chamada de sub-rotina não são visíveis e são ortogonais para qualquer gerenciamento de pilha manual feito pelo aplicativo.
- A indexação do parâmetro l# não é permitida.
- O registro de 32 bits fornecido pelo src0 é testado em um nível de bit. Se algum bit for diferente de zero, callc_nz executará a chamada. Se todos os bits forem zero, callc_z executará a chamada.
- A recursão não é permitida.
Esta instrução se aplica aos seguintes estágios de sombreador:
Sombreador de vértice | Sombreador de geometria | Sombreador de pixel |
---|---|---|
x | x | x |
Modelo de sombreador mínimo
Essa função tem suporte nos modelos de sombreador a seguir.
Modelo de Sombreador | Com suporte |
---|---|
Modelo de sombreador 5 | sim |
Modelo de sombreador 4.1 | sim |
Modelo de sombreador 4 | sim |
Modelo de sombreador 3 (DirectX HLSL) | não |
Modelo de sombreador 2 (DirectX HLSL) | não |
Modelo de sombreador 1 (DirectX HLSL) | não |