共用方式為


IDMLDevice::CreateBindingTable 方法 (directml.h)

建立系結資料表,這是可用來將資源系結 (的物件,例如) 至管線。

系結資料表會使用所提供的描述元控制碼和計數,包裝應用程式管理描述項堆積的範圍。 DirectML 會使用系結資料表來管理資源的系結,方法是將描述元寫入 CPUDescriptorHandle所指定位移的描述元堆積,並使用 GPUDescriptorHandle所指定位移的描述元,將這些描述元系結至管線。 DirectML 將描述元寫入堆積的順序未指定,因此您的應用程式必須小心不要覆寫系結資料表所包裝的描述項。

提供的 CPU 和 GPU 描述元控制碼可能來自不同的堆積,不過,接著,您的應用程式必須負責確保 CPU 描述元控制碼所參考的整個描述元範圍會複製到 GPU 描述元控制碼在使用這個系結資料表之前所參考的範圍。

提供控制碼的來源描述項堆積必須具有類型 D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV。 此外, GPUDescriptorHandle 所參考的堆積必須是著色器可見描述元堆積。

在參考 GPU 的所有工作都已完成 GPU 上執行之前,您不得刪除 GPU 描述元控制碼所參考的堆積。 不過,一旦將分派記錄到命令清單中,您就可以重設或釋放系結資料表本身。 類似于 ID3D12CommandListID3D12CommandAllocator之間的關聯性, IDMLBindingTable 不會擁有描述元控制碼所參考的基礎記憶體。 相反地, ID3D12DescriptorHeap 會執行。 因此,您必須先重設或釋放 DirectML 系結資料表,再使用系結資料表在 GPU 上完成執行。

語法

HRESULT CreateBindingTable(
  [in, optional] const DML_BINDING_TABLE_DESC *desc,
                 REFIID                       riid,
  [out]          void                         **ppv
);

參數

[in, optional] desc

類型:const DML_BINDING_TABLE_DESC*

包含系結資料表參數 之DML_BINDING_TABLE_DESC 的選擇性指標。 這可能是 nullptr,表示空的系結資料表。

riid

類型: REFIID

您想要在 ppv中傳回之介面的全域唯一識別碼 (GUID) 參考。 這必須是 IDMLBindingTable 的 GUID

[out] ppv

類型: void**

接收系結資料表指標的記憶體區塊指標。 這是 IDMLBindingTable指標的位址,代表所建立的系結資料表。

傳回值

類型: HRESULT

如果此方法成功,則會傳回 S_OK。 否則,它會傳回 HRESULT 錯誤碼。

需求

   
目標平台 Windows
標頭 directml.h
程式庫 DirectML.lib
Dll DirectML.dll

另請參閱

在 DirectML 中繫結

IDMLDevice