Compartilhar via


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.