структура 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
Глобальное число циклов для этого шага. Этот элемент можно использовать для корреляции параллельного выполнения потока с помощью нескольких одновременных трассировок, например для вычислительного шейдера.
Комментарии
Для этого API требуется пакет средств разработки программного обеспечения Windows (SDK) для Windows 8.
Требования
Минимальная версия клиента | Windows 8 [только классические приложения] |
Минимальная версия сервера | Windows Server 2012 [только классические приложения] |
Верхняя часть | d3d11shadertracing.h |