Jeton d’instruction
Un jeton d’instruction informe le pilote d’une opération spécifique à effectuer et se compose des bits suivants :
Bits
[15:00] Les bits 0 à 15 indiquent un code d’opération. D3DSIO_* est un exemple de code d’opération, où * représente l’instruction. Par exemple, l’extrait de code suivant montre une instruction ADD :
// D3DSIO_ADD d, s1, s2
[23:16] Les bits 16 à 23 indiquent des contrôles spécifiques liés au code d’opération.
[27:24] Pour les versions de nuanceur de pixels et de vertex antérieures à 2_0, les bits 24 à 27 sont réservés et définis sur 0x0.
Pour les versions 2_0 et ultérieures du nuanceur de pixels et de vertex, les bits 24 à 27 spécifient la taille en DWORD de l’instruction, à l’exclusion du jeton d’instruction proprement dit (autrement dit, le nombre de jetons qui composent l’instruction, à l’exclusion du jeton d’instruction).
[28] Pour les versions de nuanceur de pixels et de vertex antérieures à 2_0, le bit 28 est réservé et défini sur 0x0.
Pour les versions 2_0 et ultérieures du nuanceur de pixels et de vertex, le bit 28 indique si l’instruction est prédicée (autrement dit, contient un jeton source de prédicat supplémentaire à la fin du code du nuanceur. Si ce bit est défini sur 0x1, l’instruction est prédicée.
[29] Réservé. Cette valeur est définie sur 0x0.
[30] Pour les versions de nuanceur de pixels antérieures à 2_0, le bit 30 est le bit de co-émission. Si la valeur est 1, exécutez cette instruction avec les instructions précédentes ; sinon, exécutez séparément.
Pour le nuanceur de pixels version 2_0 et ultérieure et toutes les versions de nuanceur de vertex, le bit 30 est réservé et défini sur 0x0.
[31] Bit 31 est égal à zéro (0x0).
Commentaires
Pour plus d’informations sur les opérations qui peuvent être spécifiées dans les bits 0 à 15 des jetons d’instruction, consultez les informations de référence sur le nuanceur de pixels et les informations de référence sur le nuanceur de vertex dans la documentation la plus récente du Kit de développement logiciel (SDK) DirectX.
Une fois que le runtime DirectX3D a reçu le code du nuanceur d’une application, le runtime valide le code avant de le transmettre au pilote. En règle générale, le runtime préfixe les instructions de l’assembleur avec « D3DSIO_ » pour créer le code d’opération. Par exemple, les instructions d’assembleur suivantes correspondent aux opérations en mode noyau :
Instruction de l’assembleur | Opération en mode noyau |
---|---|
add |
D3DSIO_ADD |
Mov |
D3DSIO_MOV |
sub |
D3DSIO_SUB |
Tex |
D3DSIO_TEX |
texcoord |
D3DSIO_TEXCOORD |
Notez que dans toutes les versions de nuanceur de vertex, l’instruction de sous-assembleur est implémentée en tant qu’opération de D3DSIO_ADD avec le modificateur source (bits 27:24) du deuxième jeu de code source sur négation (0x1).
Les instructions tex et texcoord s’appliquent aux versions de nuanceur de pixels 1_0 à 1_3 ; un paramètre de destination est associé à chaque instruction.
Les instructions texld et texcrd sont nouvelles pour le nuanceur de pixels version 1_4 et ultérieure ; chaque instruction a des paramètres de destination et de source associés.
Le runtime convertit les instructions de l’assembleur tex et texld en D3DSIO_TEX opération en mode noyau. Le runtime convertit les instructions d’assembleur texcoord et texcrd en D3DSIO_TEXCOORD opération en mode noyau. Les pilotes vérifient d’abord la version du nuanceur de pixels du code du nuanceur, puis traitent les instructions en conséquence. Par exemple, si un pilote vérifie qu’il a reçu le code de nuanceur de pixels version 1_4 avec une opération de D3DSIO_TEX, il détermine que les paramètres de destination et de source suivent le jeton d’instruction.
Conditions requises
Disponible dans Windows Vista et versions ultérieures des systèmes d’exploitation Windows.