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.
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 |