Condividi tramite


struttura D3D11_TRACE_STEP (d3d11shadertracing.h)

Descrive un passaggio di traccia, ovvero un'istruzione.

Sintassi

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;

Members

ID

Numero che identifica l'istruzione, come offset nelle istruzioni eseguibili presenti nello shader.

Le informazioni di debug HLSL usano la stessa convenzione. Di conseguenza, le istruzioni HLSL vengono abbinate a un set di ID. È quindi possibile eseguire il mapping di un ID a una stringa disassemblata che può essere visualizzata all'utente.

InstructionActive

Valore che specifica se l'istruzione è attiva. Questo valore è TRUE se si è verificato un evento; pertanto, è necessario analizzare altri dati in questa struttura. In caso contrario, non è successo nulla; ad esempio, se un'istruzione è disabilitata a causa del controllo del flusso anche se altri pixel nel timbro lo eseguono.

NumRegistersWritten

Numero di registri per l'istruzione in cui viene scritto. L'intervallo di registri è [0...NumRegistersWritten-1]. È possibile passare un numero di registro al parametro writeRegisterIndex di ID3D11ShaderTrace::GetWrittenRegister per recuperare le singole informazioni sul registro di scrittura.

NumRegistersRead

Numero di registri per l'istruzione da cui viene letta. L'intervallo di registri è [0...NumRegistersRead-1]. È possibile passare un numero di registro al parametro readRegisterIndex di ID3D11ShaderTrace::GetReadRegister per recuperare le singole informazioni sul registro di lettura.

MiscOperations

Combinazione dei valori seguenti combinati tramite un'operazione OR bit per bit. Il valore risultante specifica la maschera per le operazioni varie di traccia. Questi flag indicano l'effetto possibile di un'operazione shader quando non scrive alcun registro di output. Ad esempio, l'operazione "add r0, r1 ,r2" scrive nel registro r0; è pertanto possibile esaminare le informazioni del registro scritto dalla traccia per determinare le modifiche apportate all'operazione. Tuttavia, alcune istruzioni dello shader non scrivono registri, ma applicano comunque tali registri.

Flag Descrizione
D3D11_TRACE_MISC_GS_EMIT (0x1) L'operazione è stata generata da dati geometry shader.
D3D11_TRACE_MISC_GS_CUT (0x2) L'operazione è stata un taglio a strisce geometry shader.
D3D11_TRACE_MISC_PS_DISCARD (0x4) L'operazione era un pixel shader discard, che rifiuta il pixel.
D3D11_TRACE_MISC_GS_EMIT_STREAM (0x8) Uguale a D3D11_TRACE_MISC_GS_EMIT, ad eccezione del modello shader 5 in cui è possibile specificare un flusso specifico per l'emissione.
D3D11_TRACE_MISC_GS_CUT_STREAM (0x10) Uguale a D3D11_TRACE_MISC_GS_CUT, tranne nel modello shader 5 in cui è possibile specificare un flusso specifico da tagliare.
D3D11_TRACE_MISC_HALT (0x20) L'operazione è un'istruzione di interruzione dello shader, che arresta l'esecuzione dello shader. La funzione intrinseca di interruzione HLSL causa un arresto.
D3D11_TRACE_MISC_MESSAGE (0x40) L'operazione è un output del messaggio shader, che può essere registrato nella coda delle informazioni. Le funzioni intrinseche printf e errorf HLSL causano messaggi.
 

Se il membro NumRegistersWritten è 0, esaminare questo membro anche se questo membro potrebbe essere ancora vuoto (0).

OpcodeType

Numero che specifica il tipo di istruzione ( ad esempio , aggiungere, mul e così via). È possibile ignorare questo membro se non si conosce il numero per il tipo di istruzione. Questo membro offre una comodità minore a costo di gonfiare leggermente la traccia. È possibile usare il membro ID ed eseguire il mapping al codice dello shader originale per recuperare le informazioni complete sull'istruzione.

CurrentGlobalCycle

Conteggio del ciclo globale per questo passaggio. È possibile usare questo membro per correlare l'esecuzione di thread paralleli tramite più tracce simultanee, ad esempio per lo shader di calcolo.

Nota Più thread nello stesso punto di esecuzione potrebbero registrare lo stesso CurrentGlobalCycle.
 

Commenti

Questa API richiede Windows Software Development Kit (SDK) per Windows 8.

Requisiti

   
Client minimo supportato Windows 8 [solo app desktop]
Server minimo supportato Windows Server 2012 [solo app desktop]
Intestazione d3d11shadertracing.h

Vedi anche

Strutture shader