Поделиться через


структура D3D11_TRACE_STEP (d3d11shadertracing.h)

Описывает шаг трассировки, который является инструкцией.

Синтаксис

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;

Члены

ID

Число, идентифицирующее инструкцию в виде смещения в исполняемых инструкциях, присутствующих в шейдере.

Сведения об отладке HLSL используют то же соглашение. Поэтому инструкции HLSL сопоставляются с набором идентификаторов. Затем можно сопоставить идентификатор с дизассемблированной строкой, которая может отображаться пользователю.

InstructionActive

Значение типа , указывающее, активна ли инструкция. Это значение равно TRUE, если что-то произошло; Поэтому следует проанализировать другие данные в этой структуре. В противном случае ничего не произошло; Например, если инструкция отключена из-за управления потоком, даже если другие пиксели в метке выполняют ее.

NumRegistersWritten

Количество регистров инструкции, в которую записываются. Диапазон регистров — [0...NumRegistersWritten-1]. Вы можете передать номер регистра в параметр writenRegisterIndexid3D11ShaderTrace::GetWrittenRegister , чтобы получить сведения об отдельных регистрах записи.

NumRegistersRead

Количество регистров для инструкции, из которых считывается. Диапазон регистров — [0...NumRegistersRead-1]. Вы можете передать номер регистра в параметр readRegisterIndexid3D11ShaderTrace::GetReadRegister , чтобы получить отдельные сведения о регистрации чтения.

MiscOperations

Сочетание следующих значений, объединенных с помощью побитовой операции OR . Полученное значение задает маску для различных операций трассировки. Эти флаги указывают на возможный эффект операции шейдера, если она не записывает выходные регистры. Например, операция add r0, r1 ,r2 выполняет запись в регистр r0; Таким образом, вы можете просмотреть сведения регистра трассировки, чтобы определить, что изменилось в операции. Однако некоторые инструкции шейдера не записывают регистры, но по-прежнему влияют на эти регистры.

Flag Описание
D3D11_TRACE_MISC_GS_EMIT (0x1) Операция представляла собой данные геометрического шейдера.
D3D11_TRACE_MISC_GS_CUT (0x2) Операция была вырезана геометрической полосой шейдера.
D3D11_TRACE_MISC_PS_DISCARD (0x4) Операция была отброшена пиксельным шейдером, который отклоняет пиксель.
D3D11_TRACE_MISC_GS_EMIT_STREAM (0x8) То же, что и D3D11_TRACE_MISC_GS_EMIT, за исключением модели шейдера 5 , в которой можно указать конкретный поток для передачи.
D3D11_TRACE_MISC_GS_CUT_STREAM (0x10) То же, что и D3D11_TRACE_MISC_GS_CUT, за исключением модели шейдера 5 , где можно указать конкретный поток для обреза.
D3D11_TRACE_MISC_HALT (0x20) Операция была инструкцией остановки шейдера, которая останавливает выполнение шейдера. Встроенная функция прерывания HLSL приводит к остановке.
D3D11_TRACE_MISC_MESSAGE (0x40) Операция была выходным сообщением шейдера, которое можно заносить в очередь сведений. Встроенные функции printf и errorf HLSL вызывают сообщения.
 

Если элемент NumRegistersWritten имеет значение 0, проверьте этот элемент, хотя он по-прежнему может быть пустым (0).

OpcodeType

Число, указывающее тип инструкции (например, add, mul и т. д.). Этот элемент можно игнорировать, если вы не знаете номер для типа инструкции. Этот член предлагает небольшое удобство за счет вздутие трассировки слегка. Чтобы получить полные сведения об инструкции, можно использовать элемент идентификатора и сопоставить его с исходным кодом шейдера.

CurrentGlobalCycle

Глобальное число циклов для этого шага. Этот элемент можно использовать для корреляции параллельного выполнения потока с помощью нескольких одновременных трассировок, например для вычислительного шейдера.

Примечание Несколько потоков в одной и той же точке выполнения могут записывать в журнал один и тот же CurrentGlobalCycle.
 

Комментарии

Для этого API требуется пакет средств разработки программного обеспечения Windows (SDK) для Windows 8.

Требования

   
Минимальная версия клиента Windows 8 [только классические приложения]
Минимальная версия сервера Windows Server 2012 [только классические приложения]
Верхняя часть d3d11shadertracing.h

См. также раздел

Структуры шейдеров