PFND3D11DDI_DISPATCHINDIRECT回调函数 (d3d10umddi.h)

DispatchIndirect 函数执行计算着色器。

语法

PFND3D11DDI_DISPATCHINDIRECT Pfnd3d11ddiDispatchindirect;

void Pfnd3d11ddiDispatchindirect(
  D3D10DDI_HDEVICE unnamedParam1,
  D3D10DDI_HRESOURCE unnamedParam2,
  UINT unnamedParam3
)
{...}

参数

unnamedParam1

hDevice [in]

显示设备的句柄 (图形上下文) 。

unnamedParam2

hBufferForArgs [in]

缓冲区的句柄,其中包含三个 UINT 值,这些值保存线程组网格的 X、Y 和 Z 维度的大小(以线程组为单位)。 缓冲区包含以下紧密打包的结构:

struct DispatchArgs {
  UINT ThreadGroupCountX; 
  UINT ThreadGroupCountY;
  UINT ThreadGroupCountZ;
}

unnamedParam3

AlignedByteOffsetForArgs [in]

hBufferForArgs 指定的缓冲区的偏移量(以字节为单位)。 AlignedByteOffsetForArgs 必须是 4 的倍数。

返回值

备注

驱动程序可以使用 pfnSetErrorCb 回调函数来设置错误代码。

DispatchIndirect 函数执行与调用驱动程序的 Dispatch 函数相同的任务。 Direct3D 运行时在显示设备上调用驱动程序的 DispatchIndirect 函数,以对线程组网格中的多个线程执行计算着色器。 但是, DispatchIndirecthBufferForArgs 参数指定的缓冲区的内容中获取要执行的线程组数。 DispatchIndirect 读取三个 UINT 值,从 AlignedByteOffsetForArgs 参数指定的字节偏移量开始。

当 Direct3D 运行时调用驱动程序的 CreateResource (D3D11) 函数来创建 hBufferForArgs 参数指定的缓冲区资源时,运行时必须在 D3D11DDIARG_CREATERESOURCE 结构的 MiscFlags 成员中设置 D3D11_DDI_RESOURCE_MISC_DRAWINDIRECT_ARGS 标志。

驱动程序不应遇到任何错误,D3DDDIERR_DEVICEREMOVED除外。 因此,如果驱动程序在调用 pfnSetErrorCb 函数时传递了除D3DDDIERR_DEVICEREMOVED以外的任何错误,则 Direct3D 运行时将确定错误严重。 即使删除了设备,驱动程序也不需要返回D3DDDIERR_DEVICEREMOVED;但是,如果设备删除干扰 DispatchIndirect (通常不应) 的操作,驱动程序可以返回D3DDDIERR_DEVICEREMOVED。

要求

要求
最低受支持的客户端 从 Windows 7 操作系统开始支持 DispatchIndirect。
目标平台 桌面
标头 d3d10umddi.h (包括 D3d10umddi.h)

另请参阅

CreateResource (D3D11)

D3D11DDIARG_CREATERESOURCE

D3D11DDI_DEVICEFUNCS

Dispatch

pfnSetErrorCb