Compartilhar via


estrutura D3D11_TRACE_STEP (d3d11shadertracing.h)

Descreve uma etapa de rastreamento, que é uma instrução.

Sintaxe

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;

Membros

ID

Um número que identifica a instrução, como um deslocamento para as instruções executáveis presentes no sombreador.

As informações de depuração HLSL usam a mesma convenção. Portanto, as instruções HLSL correspondem a um conjunto de IDs. Em seguida, você pode mapear uma ID para uma cadeia de caracteres desmontada que pode ser exibida para o usuário.

InstructionActive

Um valor que especifica se a instrução está ativa. Esse valor será TRUE se algo acontecer; portanto, você deve analisar outros dados nessa estrutura. Caso contrário, nada aconteceu; por exemplo, se uma instrução estiver desabilitada devido ao controle de fluxo, mesmo que outros pixels no carimbo o executem.

NumRegistersWritten

O número de registros para a instrução em que são gravados. O intervalo de registros é [0...NumRegistersWritten-1]. Você pode passar um número de registro para o parâmetro writtenRegisterIndex de ID3D11ShaderTrace::GetWrittenRegister para recuperar informações individuais de registro de gravação.

NumRegistersRead

O número de registros para a instrução da qual são lidos. O intervalo de registros é [0...NumRegistersRead-1]. Você pode passar um número de registro para o parâmetro readRegisterIndex de ID3D11ShaderTrace::GetReadRegister para recuperar informações individuais de registro de leitura.

MiscOperations

Uma combinação dos valores a seguir que são combinados usando uma operação OR bit a bit. O valor resultante especifica a máscara para as operações diversas de rastreamento. Esses sinalizadores indicam o possível efeito de uma operação de sombreador quando ela não grava nenhum registro de saída. Por exemplo, a operação "add r0, r1 ,r2" é gravada no registro r0; portanto, você pode examinar as informações do registro gravado no rastreamento para determinar o que a operação mudou. No entanto, algumas instruções de sombreador não gravam nenhum registro, mas ainda afetam esses registros.

Sinalizador Descrição
D3D11_TRACE_MISC_GS_EMIT (0x1) A operação era uma emissão de dados de sombreador de geometria.
D3D11_TRACE_MISC_GS_CUT (0x2) A operação foi um corte de faixa de sombreador de geometria.
D3D11_TRACE_MISC_PS_DISCARD (0x4) A operação foi um descarte de sombreador de pixel, que rejeita o pixel.
D3D11_TRACE_MISC_GS_EMIT_STREAM (0x8) O mesmo que D3D11_TRACE_MISC_GS_EMIT, exceto no modelo de sombreador 5 em que você pode especificar um fluxo específico para emitir.
D3D11_TRACE_MISC_GS_CUT_STREAM (0x10) O mesmo que D3D11_TRACE_MISC_GS_CUT, exceto no modelo de sombreador 5 , em que você pode especificar um fluxo específico para remover o corte.
D3D11_TRACE_MISC_HALT (0x20) A operação foi uma instrução de parada de sombreador, que interrompe a execução do sombreador. A função intrínseca de anulação de HLSL causa uma parada.
D3D11_TRACE_MISC_MESSAGE (0x40) A operação era uma saída de mensagem de sombreador, que pode ser registrada na fila de informações. As funções intrínsecas printf e errorf HLSL causam mensagens.
 

Se o membro NumRegistersWritten for 0, examine este membro, embora esse membro ainda possa estar vazio (0).

OpcodeType

Um número que especifica o tipo de instrução (por exemplo, adicionar, mul e assim por diante). Você poderá ignorar esse membro se não souber o número do tipo de instrução. Esse membro oferece uma pequena conveniência ao custo do bloating do rastreamento ligeiramente. Você pode usar o membro da ID e mapear de volta para o código de sombreador original para recuperar as informações completas sobre a instrução.

CurrentGlobalCycle

A contagem de ciclo global para esta etapa. Você pode usar esse membro para correlacionar a execução de thread paralelo por meio de vários rastreamentos simultâneos, por exemplo, para o sombreador de computação.

Nota Vários threads no mesmo ponto de execução podem registrar o mesmo CurrentGlobalCycle.
 

Comentários

Essa API requer o SDK (Software Development Kit) do Windows para Windows 8.

Requisitos

   
Cliente mínimo com suporte Windows 8 [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2012 [somente aplicativos da área de trabalho]
Cabeçalho d3d11shadertracing.h

Confira também

Estruturas do sombreador