structure D3D11_TRACE_STEP (d3d11shadertracing.h)

Décrit une étape de trace, qui est une instruction.

Syntaxe

typedef struct D3D11_TRACE_STEP {
  UINT                             ID;
  BOOL                             InstructionActive;
  UINT8                            NumRegistersWritten;
  UINT8                            NumRegistersRead;
  D3D11_TRACE_MISC_OPERATIONS_MASK MiscOperations;
  UINT                             OpcodeType;
  UINT64                           CurrentGlobalCycle;
} D3D11_TRACE_STEP;

Membres

ID

Nombre qui identifie l’instruction, en tant que décalage dans les instructions exécutables présentes dans le nuanceur.

Les informations de débogage HLSL utilisent la même convention. Par conséquent, les instructions HLSL sont mises en correspondance avec un ensemble d’ID. Vous pouvez ensuite mapper un ID à une chaîne désassemblé qui peut être affichée à l’utilisateur.

InstructionActive

Valeur qui spécifie si l’instruction est active. Cette valeur est TRUE si quelque chose s’est produit ; par conséquent, vous devez analyser d’autres données dans cette structure. Sinon, il ne s’est rien passé; par exemple, si une instruction est désactivée en raison du contrôle de flux, même si d’autres pixels de l’empreinte l’exécutent.

NumRegistersWritten

Nombre de registres pour l’instruction dans laquelle sont écrites. La plage de registres est [0...NumRegistersWritten-1]. Vous pouvez passer un numéro de registre au paramètre writeRegisterIndex de ID3D11ShaderTrace::GetWrittenRegister pour récupérer des informations de registre d’écriture individuelles.

NumRegistersRead

Nombre de registres pour l’instruction à partir de laquelle sont lues. La plage de registres est [0...NumRegistersRead-1]. Vous pouvez passer un numéro de registre au paramètre readRegisterIndex de ID3D11ShaderTrace::GetReadRegister pour récupérer des informations de registre en lecture individuelle.

MiscOperations

Combinaison des valeurs suivantes combinées à l’aide d’une opération OR au niveau du bit. La valeur résultante spécifie le masque pour les opérations diverses de trace. Ces indicateurs indiquent l’effet possible d’une opération de nuanceur lorsqu’elle n’écrit aucun registre de sortie. Par exemple, l’opération « add r0, r1 ,r2 » écrit dans le registre r0 ; Par conséquent, vous pouvez examiner les informations du registre écrit par le suivi pour déterminer ce que l’opération a changé. Toutefois, certaines instructions de nuanceur n’écrivent pas de registres, mais continuent d’affecter ces registres.

Indicateur Description
D3D11_TRACE_MISC_GS_EMIT (0x1) L’opération était une émission de données de nuanceur géométrique.
D3D11_TRACE_MISC_GS_CUT (0x2) L’opération était une coupe de bande de nuanceur géométrique.
D3D11_TRACE_MISC_PS_DISCARD (0x4) L’opération était un nuanceur de pixels ignoré, qui rejette le pixel.
D3D11_TRACE_MISC_GS_EMIT_STREAM (0x8) Identique à D3D11_TRACE_MISC_GS_EMIT, sauf dans le modèle de nuanceur 5 où vous pouvez spécifier un flux particulier vers lequel émettre.
D3D11_TRACE_MISC_GS_CUT_STREAM (0x10) Identique à D3D11_TRACE_MISC_GS_CUT, sauf dans le modèle de nuanceur 5 où vous pouvez spécifier un flux particulier à découper.
D3D11_TRACE_MISC_HALT (0x20) L’opération était une instruction d’arrêt du nuanceur, qui arrête l’exécution du nuanceur. La fonction intrinsèque HLSL d’abandon provoque un arrêt.
D3D11_TRACE_MISC_MESSAGE (0x40) L’opération était une sortie de message de nuanceur, qui peut être journalisée dans la file d’attente d’informations. Les fonctions intrinsèques HLSL printf et errorf provoquent des messages.
 

Si le membre NumRegistersWritten a la valeur 0, examinez ce membre bien que ce membre soit toujours vide (0).

OpcodeType

Nombre qui spécifie le type d’instruction (par exemple, add, mul, etc.). Vous pouvez ignorer ce membre si vous ne connaissez pas le nombre du type d’instruction. Ce membre offre une commodité mineure au prix de gonfler légèrement la trace. Vous pouvez utiliser le membre d’ID et revenir au code de nuanceur d’origine pour récupérer toutes les informations sur l’instruction.

CurrentGlobalCycle

Nombre global de cycles pour cette étape. Vous pouvez utiliser ce membre pour mettre en corrélation l’exécution de threads parallèles via plusieurs traces simultanées, par exemple, pour le nuanceur de calcul.

Note Plusieurs threads au même point d’exécution peuvent enregistrer le même CurrentGlobalCycle.
 

Notes

Cette API nécessite le Kit de développement logiciel (SDK) Windows pour Windows 8.

Spécifications

   
Client minimal pris en charge Windows 8 [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2012 [applications de bureau uniquement]
En-tête d3d11shadertracing.h

Voir aussi

Structures de nuanceur