PFND3D11DDI_DISPATCHINDIRECTコールバック関数 (d3d10umddi.h)
DispatchIndirect 関数は、コンピューティング シェーダーを実行します。
構文
PFND3D11DDI_DISPATCHINDIRECT Pfnd3d11ddiDispatchindirect;
void Pfnd3d11ddiDispatchindirect(
D3D10DDI_HDEVICE unnamedParam1,
D3D10DDI_HRESOURCE unnamedParam2,
UINT unnamedParam3
)
{...}
パラメーター
unnamedParam1
hDevice [in]
ディスプレイ デバイスへのハンドル (グラフィックス コンテキスト)。
unnamedParam2
hBufferForArgs [in]
スレッド グループ グリッドの X、Y、Z ディメンションのサイズをスレッド グループで保持する 3 つの UINT 値を含むバッファーへのハンドル。 バッファーには、次の厳密にパックされた構造体が含まれています。
struct DispatchArgs {
UINT ThreadGroupCountX;
UINT ThreadGroupCountY;
UINT ThreadGroupCountZ;
}
unnamedParam3
alignedByteOffsetForArgs [in]
hBufferForArgs が指定するバッファーへのオフセット (バイト単位)。 alignedByteOffsetForArgs 4 の倍数である必要があります。
戻り値
何一つ
備考
ドライバーは、pfnSetErrorCb コールバック関数を使用してエラー コードを設定できます。
DispatchIndirect 関数は、ドライバーの Dispatch 関数の呼び出しと同じタスクを実行します。 Direct3D ランタイムは、ディスプレイ デバイスでドライバーの DispatchIndirect 関数を呼び出して、スレッド グループのグリッド内の複数のスレッドに対して計算シェーダーを実行します。 ただし、DispatchIndirect は、hBufferForArgs パラメーターが指定するバッファーの内容から実行するスレッド グループの数を取得します。 DispatchIndirect は、AlignedByteOffsetForArgs パラメーターが指定するバイト オフセットから始まる 3 つの UINT 値を読み取ります。
Direct3D ランタイムがドライバーの CreateResource(D3D11) 関数を呼び出して、hBufferForArgs パラメーターが指定するバッファー リソースを作成する場合、ランタイムは、D3D11DDIARG_CREATERESOURCE 構造体の MiscFlags メンバーにD3D11_DDI_RESOURCE_MISC_DRAWINDIRECT_ARGS フラグを設定する必要があります。
ドライバーは、D3DDDIERR_DEVICEREMOVEDを除き、エラーが発生しないようにする必要があります。 したがって、D3DDDIERR_DEVICEREMOVEDを除き、pfnSetErrorCb 関数の呼び出しでドライバーがエラーを渡した場合、Direct3D ランタイムはエラーが重大であると判断します。 デバイスが削除された場合でも、ドライバーはD3DDDIERR_DEVICEREMOVEDを返す必要はありません。ただし、デバイスの削除が DispatchIndirect の操作 妨げる場合 (通常は発生しないはずです)、ドライバーはD3DDDIERR_DEVICEREMOVEDを返すことができます。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | DispatchIndirect は、Windows 7 オペレーティング システム以降でサポートされています。 |
ターゲット プラットフォーム の | デスクトップ |
ヘッダー | d3d10umddi.h (D3d10umddi.h を含む) |
関連項目
pfnSetErrorCb の