Поделиться через


функция обратного вызова PFND3D11DDI_DISPATCH (d3d10umddi.h)

Функция Dispatch выполняет шейдер вычислений.

Синтаксис

PFND3D11DDI_DISPATCH Pfnd3d11ddiDispatch;

void Pfnd3d11ddiDispatch(
  D3D10DDI_HDEVICE unnamedParam1,
  UINT unnamedParam2,
  UINT unnamedParam3,
  UINT unnamedParam4
)
{...}

Параметры

unnamedParam1

hDevice [in]

Дескриптор устройства отображения (графический контекст).

unnamedParam2

ThreadGroupCountX [in]

Размер (в группах потоков) измерения X сетки группы потоков. Максимальный размер — 65535.

unnamedParam3

ThreadGroupCountY [in]

Размер (в группах потоков) измерения Y сетки группы потоков. Максимальный размер — 65535.

unnamedParam4

ThreadGroupCountZ [in]

Размер (в группах потоков) Z-измерения сетки группы потоков. Максимальный размер — 65535.

Возвращаемое значение

None

Remarks

Драйвер может использовать функцию обратного вызова pfnSetErrorCb , чтобы задать код ошибки.

Среда выполнения Direct3D вызывает функцию Dispatch драйвера на устройстве отображения для выполнения вычислительного шейдера. Скомпилированный шейдер вычислений определяет набор инструкций для каждого потока и количество потоков для каждой группы. Параметры группы потоков (ThreadGroupCountX, ThreadGroupCountY и ThreadGroupCountZ) указывают, сколько групп потоков необходимо выполнить. Каждая группа потоков содержит такое же количество потоков, как определено скомпилированным шейдером вычислений. Группы потоков организованы в трехмерной сетке. Общее количество групп потоков, выполняемых скомпилированным шейдером вычислений, определяется следующим вычислением:

ThreadGroupCountX * ThreadGroupCountY * ThreadGroupCountZ

В частности, если какое-либо из значений в параметрах группы потоков имеет значение 0, функция Dispatch ничего не делает.

Драйвер не должен столкнуться с какой-либо ошибкой, за исключением D3DDDIERR_DEVICEREMOVED. Таким образом, если драйвер передает любую ошибку, за исключением D3DDDIERR_DEVICEREMOVED, в вызове функции pfnSetErrorCb , среда выполнения Direct3D определяет, что ошибка является критической. Даже если устройство удалено, драйвер не обязан возвращать D3DDDIERR_DEVICEREMOVED; Однако если удаление устройства мешает работе dispatch (что обычно не должно происходить), драйвер может вернуть D3DDDIERR_DEVICEREMOVED.

Требования

Требование Значение
Минимальная версия клиента Диспетчеризация поддерживается начиная с операционной системы Windows 7.
Целевая платформа Персональный компьютер
Верхняя часть d3d10umddi.h (включая D3d10umddi.h)

См. также раздел

D3D11DDI_DEVICEFUNCS

pfnSetErrorCb