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 函数,以在线程组网格中的多个线程上执行计算着色器。 但是,DispatchIndirect 从 hBufferForArgs 参数指定的缓冲区内容获取要执行的线程组数。 DispatchIndirect 读取三个 UINT 值,从 AlignedByteOffsetForArgs 参数指定的字节偏移量开始。
当 Direct3D 运行时调用驱动程序的 CreateResource(D3D11) 函数来创建 hBufferForArgs 参数指定的缓冲区资源时,运行时必须在 MiscFlags 成员 D3D11DDIARG_CREATERESOURCE 结构中设置D3D11_DDI_RESOURCE_MISC_DRAWINDIRECT_ARGS标志。
驱动程序不应遇到任何错误,除非D3DDDIERR_DEVICEREMOVED。 因此,如果驱动程序在调用 pfnSetErrorCb 函数时传递任何错误(D3DDDIERR_DEVICEREMOVED除外)时,Direct3D 运行时将确定错误至关重要。 即使删除了设备,驱动程序也不需要返回D3DDDIERR_DEVICEREMOVED;但是,如果设备删除会干扰 DispatchIndirect(通常不应发生),驱动程序可以返回D3DDDIERR_DEVICEREMOVED。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | 从 Windows 7作系统开始,支持 DispatchIndirect。 |
目标平台 | 桌面 |
标头 | d3d10umddi.h (包括 D3d10umddi.h) |