структура 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[vertex][attribute]. В этом примере диапазон [атрибута] — [0..31]. Ось [вершины] имеет одинаковый размер для всех входных данных, которые определяются элементом GSInputPrimitive .
Аналогичным образом входные данные для шейдера корпуса и шейдера предметной области индексируются в двухмерном формате. Например, рассмотрим v[vertex][attribute]. В этом примере диапазон [атрибута] — [0..15]. Ось [вершины] имеет одинаковый размер для всех входных данных.
OutputMask[32]
Маска трассировки компонента для каждого выходного регистра o#. Сведения о D3D11_TRACE_COMPONENT_MASK см. в разделе D3D11_TRACE_VALUE.
Для вершинных шейдеров и геометрических шейдеров допустимым диапазоном является [0..31]. Для пиксельных шейдеров допустимым диапазоном является [0..7]. Для вычислительных шейдеров этот элемент неприменим. Для контрольных точек вывода для шейдеров корпуса регистры индексируются в двухмерном формате. Например, рассмотрим ocp[vertex][attribute]. В этом примере диапазон [атрибута] — [0..31]. Ось [вершины] имеет одинаковый размер для всех входных данных.
NumTemps
Число объявленных регистров temps, то есть 4x32-разрядных регистров r#.
MaxIndexableTempIndex
Максимальный индекс #+1 всех объявленных индексируемых временных параметров x#[]. Если они объявлены разреженно (например, x3[12] и x200[30]), это значение равно 201 (200+1).
IndexableTempSize[4096]
Количество temps для каждого индексируемого temp x#[numTemps]. В элементе MaxIndexableTempIndex можно использовать только значения temps.
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 типизированное значение, определяющее тип входного примитива геометрического шейдера. То есть это значение определяет: {точка, линия, треугольник, 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 |