D3D11_TRACE_STEP-Struktur (d3d11shadertracing.h)
Beschreibt einen Ablaufverfolgungsschritt, bei dem es sich um eine Anweisung handelt.
Syntax
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;
Member
ID
Eine Zahl, die die -Anweisung als Offset in die ausführbaren Anweisungen identifiziert, die im Shader vorhanden sind.
HLSL-Debuginformationen verwenden dieselbe Konvention. Daher werden HLSL-Anweisungen mit einer Reihe von IDs abgeglichen. Anschließend können Sie eine ID einer disassemblierten Zeichenfolge zuordnen, die dem Benutzer angezeigt werden kann.
InstructionActive
Ein -Wert, der angibt, ob die Anweisung aktiv ist. Dieser Wert ist TRUE, wenn etwas passiert ist. Daher sollten Sie andere Daten in dieser Struktur analysieren. Andernfalls ist nichts passiert; Beispielsweise, wenn eine Anweisung aufgrund der Flusssteuerung deaktiviert ist, obwohl sie von anderen Pixeln im Stempel ausgeführt wird.
NumRegistersWritten
Die Anzahl der Register für die Anweisung, in die geschrieben wird. Der Registerbereich ist [0...NumRegistersWritten-1]. Sie können eine Registernummer an den writeRegisterIndex-Parameter von ID3D11ShaderTrace::GetWrittenRegister übergeben, um einzelne Schreibregisterinformationen abzurufen.
NumRegistersRead
Die Anzahl der Register für die Anweisung, aus der gelesen wird. Der Registerbereich ist [0...NumRegistersRead-1]. Sie können eine Registernummer an den readRegisterIndex-Parameter von ID3D11ShaderTrace::GetReadRegister übergeben, um einzelne Leseregisterinformationen abzurufen.
MiscOperations
Eine Kombination der folgenden Werte, die mithilfe einer bitweisen OR-Operation kombiniert werden. Der resultierende Wert gibt die Maske für die verschiedenen Ablaufverfolgungsvorgänge an. Diese Flags geben die mögliche Auswirkung eines Shadervorgangs an, wenn keine Ausgaberegister geschrieben werden. Beispielsweise schreibt der Vorgang "add r0, r1 ,r2" in das r0-Register; Daher können Sie die Informationen des ablaufverfolgungsgeschriebenen Registers anzeigen, um zu bestimmen, was der Vorgang geändert hat. Einige Shaderanweisungen schreiben jedoch keine Register, wirken sich aber trotzdem auf diese Register aus.
Flag | Beschreibung |
---|---|
D3D11_TRACE_MISC_GS_EMIT (0x1) | Bei dem Vorgang handelte es sich um ein Geometry-Shader-Daten emittiert. |
D3D11_TRACE_MISC_GS_CUT (0x2) | Der Vorgang war ein Geometrie-Shaderstreifenschnitt. |
D3D11_TRACE_MISC_PS_DISCARD (0x4) | Der Vorgang war ein Pixelshader verwerfen, der das Pixel ablehnt. |
D3D11_TRACE_MISC_GS_EMIT_STREAM (0x8) | Identisch mit D3D11_TRACE_MISC_GS_EMIT, mit Ausnahme des Shadermodells 5 , in dem Sie einen bestimmten Stream angeben können, an den ausgegeben werden soll. |
D3D11_TRACE_MISC_GS_CUT_STREAM (0x10) | Identisch mit D3D11_TRACE_MISC_GS_CUT, mit Ausnahme des Shadermodells 5 , in dem Sie einen bestimmten Datenstrom angeben können, der ausgeschnitten werden soll. |
D3D11_TRACE_MISC_HALT (0x20) | Der Vorgang war eine Shaderstoppanweisung, die die Shaderausführung beendet. Die systeminterne HLSL-Abbruchfunktion verursacht einen Halt. |
D3D11_TRACE_MISC_MESSAGE (0x40) | Der Vorgang war eine Shadermeldungsausgabe, die in der Informationswarteschlange protokolliert werden kann. Die systeminternen HLSL-Funktionen printf und errorf verursachen Meldungen. |
Wenn das NumRegistersWritten-Element 0 ist, untersuchen Sie dieses Element, obwohl dieses Element möglicherweise noch leer ist (0).
OpcodeType
Eine Zahl, die den Typ der Anweisung angibt (z. B . add, mul usw.). Sie können diesen Member ignorieren, wenn Sie die Nummer für den Anweisungstyp nicht kennen. Dieses Element bietet einen kleinen Komfort, um die Ablaufverfolgung leicht aufzublähen. Sie können den ID-Member verwenden und dem ursprünglichen Shadercode zuordnen, um die vollständigen Informationen zur Anweisung abzurufen.
CurrentGlobalCycle
Die anzahl des globalen Zyklus für diesen Schritt. Sie können dieses Element verwenden, um die parallele Threadausführung über mehrere gleichzeitige Ablaufverfolgungen zu korrelieren, z. B. für den Compute-Shader.
Hinweise
Für diese API ist das Windows Software Development Kit (SDK) für Windows 8 erforderlich.
Anforderungen
Unterstützte Mindestversion (Client) | Windows 8 [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2012 [nur Desktop-Apps] |
Kopfzeile | d3d11shadertracing.h |