Condividi tramite


Token di istruzione

Un token di istruzione informa il driver di un'operazione specifica da eseguire ed è costituito dai bit seguenti:

Bit

[15:00] I bit da 0 a 15 indicano un codice dell'operazione. D3DSIO_* è un esempio di codice dell'operazione, dove * rappresenta l'istruzione . Ad esempio, il frammento di codice seguente mostra un'istruzione ADD:

// D3DSIO_ADD d, s1, s2

[23:16] I bit da 16 a 23 indicano controlli specifici correlati al codice dell'operazione.

[27:24] Per le versioni pixel e vertex shader precedenti a 2_0, i bit da 24 a 27 sono riservati e impostati su 0x0.

Per pixel e vertex shader versioni 2_0 e successive, i bit da 24 a 27 specificano le dimensioni in DWORD dell'istruzione escludendo il token di istruzione stesso, ovvero il numero di token che comprendono l'istruzione esclusa dal token di istruzione.

[28] Per le versioni pixel e vertex shader precedenti a 2_0, il bit 28 è riservato e impostato su 0x0.

Per pixel e vertex shader versioni 2_0 e successive, bit 28 indica se l'istruzione è predicata ( ovvero contiene un token di origine predicato aggiuntivo alla fine del codice shader. Se questo bit è impostato su 0x1, l'istruzione viene predicata.

[29] Riservato. Questo valore è impostato su 0x0.

[30] Per le versioni di pixel shader precedenti a 2_0, bit 30 è il bit di co-problema. Se impostato su 1, eseguire questa istruzione con le istruzioni precedenti; in caso contrario, eseguire separatamente.

Per pixel shader versione 2_0 e successive e tutte le versioni del vertex shader, bit 30 è riservato e impostato su 0x0.

[31] Bit 31 è zero (0x0).

Commenti

Per altre informazioni sulle operazioni che possono essere specificate in bit da 0 a 15 di token di istruzione, vedere la documentazione più recente di DirectX SDK.

Dopo che il runtime DirectX3D riceve il codice shader da un'applicazione, il runtime convalida il codice prima di passare il codice al driver. In genere, il runtime prefisssi le istruzioni dell'assembler con "D3DSIO_" per creare il codice dell'operazione. Ad esempio, le istruzioni dell'assembler seguenti corrispondono alle operazioni in modalità kernel:

Istruzioni dell'assembler Operazione in modalità kernel

add

D3DSIO_ADD

Mov

D3DSIO_MOV

sub

D3DSIO_SUB

Tex

D3DSIO_TEX

texcoord

D3DSIO_TEXCOORD

Si noti che in tutte le versioni del vertex shader l'istruzione dell'assembler secondario viene implementata come operazione di D3DSIO_ADD con il modificatore di origine (bit 27:24) del secondo set di origine su nega (0x1).

Le istruzioni tex e texcoord si applicano alle versioni di pixel shader da 1_0 a 1_3; a ogni istruzione è associato un parametro di destinazione.

Le istruzioni texld e texcrd sono nuove a pixel shader versione 1_4 e successive; a ogni istruzione sono associati parametri di destinazione e di origine .

Il runtime converte le istruzioni dell'assembler tex e texld nell'operazione in modalità kernel D3DSIO_TEX. Il runtime converte le istruzioni dell'assembler texcoord e texcrd nell'operazione D3DSIO_TEXCOORD in modalità kernel. I driver verificano prima di tutto la versione del pixel shader del codice dello shader e quindi elaborano le istruzioni di conseguenza. Ad esempio, se un driver verifica che abbia ricevuto codice shader 1_4 pixel con un'operazione di D3DSIO_TEX, il driver determina che i parametri di destinazione e di origine seguono il token di istruzione.

Requisiti

Disponibile in Windows Vista e versioni successive dei sistemi operativi Windows.