Token de instrução
Um token de instrução informa o driver de uma operação específica a ser executada e é composto pelos seguintes bits:
Bits
[15:00] Os bits de 0 a 15 indicam um código de operação. D3DSIO_* é um exemplo de um código de operação, em que * representa a instrução . Por exemplo, o snippet de código a seguir mostra uma instrução ADD:
// D3DSIO_ADD d, s1, s2
[23:16] Os bits 16 a 23 indicam controles específicos relacionados ao código de operação.
[27:24] Para versões de sombreador de pixel e vértice anteriores a 2_0, os bits de 24 a 27 são reservados e definidos como 0x0.
Para versões de sombreador de pixel e vértice 2_0 e posteriores, os bits 24 a 27 especificam o tamanho em DWORDs da instrução excluindo o próprio token de instrução (ou seja, o número de tokens que compõem a instrução excluindo o token de instrução).
[28] Para versões de sombreador de pixel e vértice anteriores a 2_0, o bit 28 é reservado e definido como 0x0.
Para versões de sombreador de pixel e vértice 2_0 e posteriores, o bit 28 indica se a instrução é predefinida (ou seja, contém um token de origem de predicado extra no final do código do sombreador. Se esse bit estiver definido como 0x1, a instrução será predefinida.
[29] Reservado. Esse valor é definido como 0x0.
[30] Para versões de sombreador de pixel anteriores a 2_0, o bit 30 é o bit de co-problema. Se definido como 1, execute esta instrução com instruções anteriores; caso contrário, execute separadamente.
Para o sombreador de pixel versão 2_0 e posterior e todas as versões de sombreador de vértice, o bit 30 é reservado e definido como 0x0.
[31] O bit 31 é zero (0x0).
Comentários
Consulte a Referência do Sombreador de Pixel e a Referência do Sombreador de Vértice na documentação mais recente do SDK do DirectX para obter mais informações sobre operações que podem ser especificadas nos bits 0 a 15 de tokens de instrução.
Depois que o runtime do DirectX3D recebe código de sombreador de um aplicativo, o runtime valida o código antes de passar o código para o driver. Normalmente, o runtime prefixa as instruções do assembler com "D3DSIO_" para criar o código de operação. Por exemplo, as seguintes instruções do assembler correspondem às operações de modo kernel:
Instrução assembler | Operação de modo kernel |
---|---|
add |
D3DSIO_ADD |
Mov |
D3DSIO_MOV |
sub |
D3DSIO_SUB |
Tex |
D3DSIO_TEX |
texcoord |
D3DSIO_TEXCOORD |
Observe que, em todas as versões do sombreador de vértice, a instrução sub assembler é implementada como uma operação de D3DSIO_ADD com o modificador de origem (bits 27:24) da segunda fonte definida para negar (0x1).
As instruções tex e texcoord se aplicam às versões do sombreador de pixel 1_0 a 1_3; cada instrução tem um parâmetro de destino associado a ele.
As instruções texld e texcrd são novas no sombreador de pixel versão 1_4 e posterior; cada instrução tem parâmetros de destino e de origem associados a ela.
O runtime converte as instruções do assembler tex e texld para o D3DSIO_TEX operação de modo kernel. O runtime converte as instruções do assembler texcoord e texcrd para a operação do modo kernel D3DSIO_TEXCOORD. Os drivers primeiro verificam a versão do sombreador de pixel do código do sombreador e processam as instruções adequadamente. Por exemplo, se um driver verificar se recebeu o código de sombreador de 1_4 pixels com uma operação de D3DSIO_TEX, o driver determinará que os parâmetros de destino e de origem seguem o token de instrução.
Requisitos
Disponível no Windows Vista e versões posteriores dos sistemas operacionais Windows.