Metodo IDMLDevice::CreateBindingTable (directml.h)
Crea una tabella di associazione, che è un oggetto che può essere usato per associare risorse (ad esempio tensor) alla pipeline.
La tabella di associazione esegue il wrapping di un intervallo di un heap descrittore gestito dall'applicazione usando gli handle e il conteggio del descrittore forniti. Le tabelle di associazione vengono usate da DirectML per gestire l'associazione delle risorse scrivendo descrittori nell'heap descrittore in corrispondenza dell'offset specificato dalla CPUDescriptorHandle e associando tali descrittori alla pipeline usando i descrittori in corrispondenza dell'offset specificato dalla GPUDescriptorHandle. L'ordine in cui DirectML scrive i descrittori nell'heap non è specificato, pertanto l'applicazione deve prestare attenzione a non sovrascrivere i descrittori avvolti dalla tabella di associazione.
Gli handle di descrittore CPU e GPU forniti possono derivare da heaps diversi, ma è quindi responsabilità dell'applicazione assicurarsi che l'intero intervallo descrittore a cui fa riferimento l'handle del descrittore DELLA CPU venga copiato nell'intervallo a cui fa riferimento l'handle descrittore GPU prima dell'esecuzione usando questa tabella di associazione.
L'heap descrittore da cui vengono forniti gli handle deve avere il tipo D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV. Inoltre, l'heap a cui fa riferimento la GPUDescriptorHandle deve essere un heap visibile dello shader.
Non è necessario eliminare l'heap a cui fa riferimento l'heap a cui fa riferimento l'handle del descrittore GPU fino a quando non viene completata l'esecuzione nella GPU. È tuttavia possibile reimpostare o rilasciare la tabella di associazione stessa non appena è stato registrato l'invio nell'elenco dei comandi. Analogamente alla relazione tra ID3D12CommandList e ID3D12CommandAllocator, IDMLBindingTable non possiede la memoria sottostante a cui fa riferimento gli handle del descrittore. Invece, l'ID3D12DescriptorHeap esegue. Pertanto, è possibile reimpostare o rilasciare una tabella di associazione DirectML prima di usare la tabella di associazione ha completato l'esecuzione nella GPU.
Sintassi
HRESULT CreateBindingTable(
[in, optional] const DML_BINDING_TABLE_DESC *desc,
REFIID riid,
[out] void **ppv
);
Parametri
[in, optional] desc
Tipo: const DML_BINDING_TABLE_DESC*
Puntatore facoltativo a un DML_BINDING_TABLE_DESC contenente i parametri della tabella di associazione. Può essere nullptr, che indica una tabella di associazione vuota.
riid
Tipo: REFIID
Riferimento all'identificatore univoco globale (GUID) dell'interfaccia da restituire in ppv. Si prevede che sia il GUID di IDMLBindingTable.
[out] ppv
Tipo: void**
Puntatore a un blocco di memoria che riceve un puntatore alla tabella di associazione. Si tratta dell'indirizzo di un puntatore a un IDMLBindingTable, che rappresenta la tabella di associazione creata.
Valore restituito
Tipo: HRESULT
Se questo metodo ha esito positivo, restituisce S_OK. In caso contrario, restituisce un codice di errore HRESULT .
Requisiti
Piattaforma di destinazione | Windows |
Intestazione | directml.h |
Libreria | DirectML.lib |
DLL | DirectML.dll |