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]
PixelDiscardedMask[4]
PixelCoverageMaskAfterShader[4]
PixelCoverageMaskAfterA2CSampleMask[4]
PixelCoverageMaskAfterA2CSampleMaskDepth[4]
PixelCoverageMaskAfterA2CSampleMaskDepthStencil[4]
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_INPUT_PRIMITIVE_ID_REGISTER值可通过调用 ID3D11ShaderTrace::GetInitialRegisterContents 方法获得。
DSInputPatchConstantMask[32]
以下值可通过调用 ID3D11ShaderTrace::GetInitialRegisterContents 方法获得:
注解
此 API 需要 Windows 软件开发工具包 (SDK) Windows 8。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 8 [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2012 [仅限桌面应用] |
标头 | d3d11shadertracing.h |