共用方式為


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以外,驅動程式不應該發生任何錯誤。 因此,如果驅動程式通過任何錯誤,除了 D3DDDIERR_DEVICEREMOVED 之外,在呼叫 pfnSetErrorCb 函式時,Direct3D 運行時間會判斷錯誤是否重要。 即使移除裝置,驅動程式也不需要傳回D3DDDIERR_DEVICEREMOVED;不過,如果裝置移除干擾 DispatchIndirect 的作業(通常不應該發生),驅動程式可以傳回D3DDDIERR_DEVICEREMOVED。

要求

要求 價值
最低支援的用戶端 從 Windows 7作系統開始,支援 DispatchIndirect。
目標平臺 桌面
標頭 d3d10umddi.h (包括 D3d10umddi.h)

另請參閱

CreateResource(D3D11)

D3D11DDIARG_CREATERESOURCE

D3D11DDI_DEVICEFUNCS

分派

pfnSetErrorCb