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.

Hinweis Mehrere Threads am selben Ausführungspunkt protokollieren möglicherweise denselben CurrentGlobalCycle.
 

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

Weitere Informationen

Shader-Strukturen