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 指令与一组 ID 匹配。 然后,可以将 ID 映射到可向用户显示的反汇编字符串。

InstructionActive

一个 值,该值指定指令是否处于活动状态。 如果发生某种情况,此值为 TRUE;因此,应分析此结构中的其他数据。 否则,什么也没发生;例如,如果由于流控制而禁用某个指令,即使标记中的其他像素执行该指令也是如此。

NumRegistersWritten

写入的指令的寄存器数。 寄存器的范围是 [0...NumRegistersWritten-1]。 可以将注册号传递给 ID3D11ShaderTrace::GetWrittenRegisterwritenRegisterIndex 参数,以检索单个 write-register 信息。

NumRegistersRead

从中读取指令的寄存器数。 寄存器的范围是 [0...NumRegistersRead-1]。 可以将寄存器号传递给 ID3D11ShaderTrace::GetReadRegisterreadRegisterIndex 参数,以检索单个读取注册信息。

MiscOperations

使用以下值的组合,这些值通过使用按位 OR 运算进行组合。 生成的值指定跟踪杂项操作的掩码。 这些标志指示着色器操作在未写入任何输出寄存器时可能的效果。 例如,“添加 r0, r1 ,r2”操作写入 r0 寄存器;因此,可以查看跟踪写入的寄存器的信息,以确定操作发生了哪些更改。 但是,某些着色器指令不会写入任何寄存器,但仍影响这些寄存器。

标志 描述
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) 操作是着色器消息输出,可以记录到信息队列。 HLSL printferrorf 内部函数会导致消息。
 

如果 NumRegistersWritten 成员为 0,请检查此成员,尽管此成员可能仍为空 (0) 。

OpcodeType

一个数字,指定指令 (的类型,例如 ,addmul 等) 。 如果不知道指令类型的编号,则可以忽略此成员。 此成员提供少量便利,代价是稍微膨胀跟踪。 可以使用 ID 成员并映射回原始着色器代码,以检索有关指令的完整信息。

CurrentGlobalCycle

此步骤的全局周期计数。 可以使用此成员通过多个同时跟踪(例如,计算着色器)关联并行线程执行。

注意 执行中同一点的多个线程可能会记录相同的 CurrentGlobalCycle
 

备注

此 API 需要 Windows 8 的 Windows 软件开发工具包 (SDK) 。

要求

   
最低受支持的客户端 Windows 8 [仅限桌面应用]
最低受支持的服务器 Windows Server 2012 [仅限桌面应用]
标头 d3d11shadertracing.h

另请参阅

着色器结构