IDMLDevice::CreateBindingTable 方法 (directml.h)
建立系結資料表,這是可用來將資源系結 (的物件,例如) 至管線。
系結資料表會使用所提供的描述元控制碼和計數,包裝應用程式管理描述項堆積的範圍。 DirectML 會使用系結資料表來管理資源的系結,方法是將描述元寫入 CPUDescriptorHandle所指定位移的描述元堆積,並使用 GPUDescriptorHandle所指定位移的描述元,將這些描述元系結至管線。 DirectML 將描述元寫入堆積的順序未指定,因此您的應用程式必須小心不要覆寫系結資料表所包裝的描述項。
提供的 CPU 和 GPU 描述元控制碼可能來自不同的堆積,不過,接著,您的應用程式必須負責確保 CPU 描述元控制碼所參考的整個描述元範圍會複製到 GPU 描述元控制碼在使用這個系結資料表之前所參考的範圍。
提供控制碼的來源描述項堆積必須具有類型 D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV。 此外, GPUDescriptorHandle 所參考的堆積必須是著色器可見描述元堆積。
在參考 GPU 的所有工作都已完成 GPU 上執行之前,您不得刪除 GPU 描述元控制碼所參考的堆積。 不過,一旦將分派記錄到命令清單中,您就可以重設或釋放系結資料表本身。 類似于 ID3D12CommandList 與 ID3D12CommandAllocator之間的關聯性, 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 |