функция обратного вызова 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) |