Compartilhar via


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

Assembly do Modelo de Sombreador 4 (DirectX HLSL)