D3D11_TRACE_STATS结构 (d3d11shadertracing.h)

指定有关跟踪的统计信息。

语法

typedef struct D3D11_TRACE_STATS {
  D3D11_SHADER_TRACE_DESC        TraceDesc;
  UINT8                          NumInvocationsInStamp;
  UINT8                          TargetStampIndex;
  UINT                           NumTraceSteps;
  D3D11_TRACE_COMPONENT_MASK     InputMask[32];
  D3D11_TRACE_COMPONENT_MASK     OutputMask[32];
  UINT16                         NumTemps;
  UINT16                         MaxIndexableTempIndex;
  UINT16                         IndexableTempSize[4096];
  UINT16                         ImmediateConstantBufferSize;
  UINT                           PixelPosition[4][2];
  UINT64                         PixelCoverageMask[4];
  UINT64                         PixelDiscardedMask[4];
  UINT64                         PixelCoverageMaskAfterShader[4];
  UINT64                         PixelCoverageMaskAfterA2CSampleMask[4];
  UINT64                         PixelCoverageMaskAfterA2CSampleMaskDepth[4];
  UINT64                         PixelCoverageMaskAfterA2CSampleMaskDepthStencil[4];
  BOOL                           PSOutputsDepth;
  BOOL                           PSOutputsMask;
  D3D11_TRACE_GS_INPUT_PRIMITIVE GSInputPrimitive;
  BOOL                           GSInputsPrimitiveID;
  D3D11_TRACE_COMPONENT_MASK     HSOutputPatchConstantMask[32];
  D3D11_TRACE_COMPONENT_MASK     DSInputPatchConstantMask[32];
} D3D11_TRACE_STATS;

成员

TraceDesc

描述此结构为其指定统计信息的着色器跟踪对象的 D3D11_SHADER_TRACE_DESC 结构。

NumInvocationsInStamp

跟踪标记中的调用数。 对于顶点着色器、外壳着色器、域着色器、几何着色器和计算着色器,此值始终为 1。 对于像素着色器,此值为 4。

TargetStampIndex

目标标记的索引。 对于顶点着色器、外壳着色器、域着色器、几何着色器和计算着色器,此值始终为 0。 但是,对于像素着色器,此值指示标记中四个像素中的哪一个是跟踪的目标。 可以检查标记中其他像素的跟踪,以确定导数计算的发生方式。 可以通过跨跟踪关联寄存器来做出此决定。

NumTraceSteps

跟踪的步骤总数。 对于所有标记调用,此数字相同。

InputMask[32]

每个输入 v# 寄存器的组件跟踪掩码。 有关D3D11_TRACE_COMPONENT_MASK的信息,请参阅 D3D11_TRACE_VALUE

对于顶点着色器、几何着色器、像素着色器、外壳着色器和域着色器,有效范围为 [0..31]。 对于计算着色器,此成员不适用。 此外,几何着色器的输入是 2D 索引的。 例如,请考虑 v[顶点][attribute]。 在此示例中,[attribute] 的范围是 [0..31]。 [顶点] 轴对于所有输入的大小相同,由 GSInputPrimitive 成员确定。

同样,外壳着色器和域着色器的输入是 2D 索引的。 例如,请考虑 v[顶点][attribute]。 在此示例中,[attribute] 的范围为 [0..15]。 所有输入的 [顶点] 轴的大小相同。

OutputMask[32]

每个输出 o# 寄存器的组件跟踪掩码。 有关D3D11_TRACE_COMPONENT_MASK的信息,请参阅 D3D11_TRACE_VALUE

对于顶点着色器和几何着色器,有效范围是 [0..31]。 对于像素着色器,有效范围为 [0..7]。 对于计算着色器,此成员不适用。 对于外壳着色器的输出控制点,寄存器采用 2D 索引。 例如,请考虑 ocp[vertex][attribute]。 在此示例中,[attribute] 的范围是 [0..31]。 所有输入的 [顶点] 轴的大小相同。

NumTemps

声明的临时数,即 4x32 位 r# 寄存器。

MaxIndexableTempIndex

声明的所有可索引 temps x#[] 的最大索引 #+1。 例如,如果它们声明为稀疏 (,则 x3[12] 和 x200[30] 仅) ,则此值为 201 (200+1) 。

IndexableTempSize[4096]

每个可索引 temp x#[numTemps] 的临时数。 只能将 temp 设置为 MaxIndexableTempIndex 成员中的值。

ImmediateConstantBufferSize

如果直接常量缓冲区中有任何) ,则 (4x32 位值的数目。

PixelPosition[4]

PixelCoverageMask[4]

注意 此成员仅适用于像素着色器 [stampIndex]。
 
一个掩码,指示每个标记所涵盖的 MSAA 样本。 此覆盖发生在对像素执行 alpha 到覆盖率、深度和模具操作之前。 对于非 MSAA,请检查 LSB) (最小有效位。 对于仅为支持相邻像素的导数而执行的像素,此掩码可以为 0。

PixelDiscardedMask[4]

注意 此成员仅适用于像素着色器 [stampIndex]。
 
一个指示已丢弃样本的掩码。 如果像素着色器以像素频率运行,则“放弃”会关闭所有样本。 如果所有样本都处于关闭状态,则以下四个掩码成员也为 0。

PixelCoverageMaskAfterShader[4]

注意 此成员仅适用于像素着色器 [stampIndex]。
 
指示所涵盖的 MSAA 样本的掩码。 对于非 MSAA,请检查 LSB。

PixelCoverageMaskAfterA2CSampleMask[4]

注意 此成员仅适用于像素着色器 [stampIndex]。
 
一个掩码,指示在 alpha-to-coverage+sampleMask 之后、深度和模具之前覆盖的 MSAA 样本。 对于非 MSAA,请检查 LSB。

PixelCoverageMaskAfterA2CSampleMaskDepth[4]

注意 此成员仅适用于像素着色器 [stampIndex]。
 
一个掩码,指示在 alpha-to-coverage+sampleMask+depth 之后、模具之前覆盖的 MSAA 样本。 对于非 MSAA,请检查 LSB。

PixelCoverageMaskAfterA2CSampleMaskDepthStencil[4]

注意 此成员仅适用于像素着色器 [stampIndex]。
 
一个掩码,指示在 alpha-to-coverage+sampleMask+depth+模具之后覆盖的 MSAA 样本。 对于非 MSAA,请检查 LSB。

PSOutputsDepth

一个 值,该值指定此跟踪是否适用于输出 oDepth 寄存器的像素着色器。 TRUE 表示像素着色器输出 oDepth 寄存器;否则为 FALSE。

PSOutputsMask

一个 值,该值指定此跟踪是否适用于输出 oMask 寄存器的像素着色器。 TRUE 表示像素着色器输出 oMask 寄存器;否则为 FALSE。

GSInputPrimitive

一个D3D11_TRACE_GS_INPUT_PRIMITIVE类型的值,用于标识几何着色器输入基元的类型。 也就是说,此值分别标识:{point、line、triangle、line_adj、triangle_adj}或顶点数:1、2、3、4 或 6。 例如,对于行,输入 v[][#] 实际上是 v[2][#]。 对于顶点着色器和像素着色器,将此成员设置为 D3D11_TRACE_GS_INPUT_PRIMITIVE_UNDEFINED

GSInputsPrimitiveID

一个 值,该值指定此跟踪是否适用于输入 PrimitiveID 寄存器的几何着色器。 TRUE 指示几何着色器输入 PrimitiveID 寄存器;否则为 FALSE。

HSOutputPatchConstantMask[32]

注意 此成员仅适用于外壳着色器。
 
外壳着色器输出的组件跟踪掩码。 有关D3D11_TRACE_COMPONENT_MASK的信息,请参阅 D3D11_TRACE_VALUE

D3D11_TRACE_INPUT_PRIMITIVE_ID_REGISTER值可通过调用 ID3D11ShaderTrace::GetInitialRegisterContents 方法获得。

DSInputPatchConstantMask[32]

注意 此成员仅适用于域着色器。
 
域着色器输入的组件跟踪掩码。 有关D3D11_TRACE_COMPONENT_MASK的信息,请参阅 D3D11_TRACE_VALUE

以下值可通过调用 ID3D11ShaderTrace::GetInitialRegisterContents 方法获得:

注解

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

要求

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

另请参阅

ID3D11ShaderTrace::GetTraceStats

着色器结构