Método IDMLDevice::CreateBindingTable (directml.h)
Cria uma tabela de associação, que é um objeto que pode ser usado para associar recursos (como tensores) ao pipeline.
A tabela de associação encapsula um intervalo de um heap de descritor gerenciado pelo aplicativo usando os identificadores de descritor fornecidos e a contagem. As tabelas de associação são usadas pelo DirectML para gerenciar a associação de recursos escrevendo descritores no heap de descritor no deslocamento especificado pelo CPUDescriptorHandle e associando esses descritores ao pipeline usando os descritores no deslocamento especificado pelo GPUDescriptorHandle. A ordem na qual o DirectML grava descritores no heap não é especificada, portanto, seu aplicativo deve tomar cuidado para não substituir os descritores encapsulados pela tabela de associação.
Os identificadores de descritor de CPU e GPU fornecidos podem vir de heaps diferentes, no entanto, é responsabilidade do aplicativo garantir que todo o intervalo de descritores referenciado pelo identificador do descritor de CPU seja copiado para o intervalo referenciado pelo identificador descritor de GPU antes da execução usando essa tabela de associação.
O heap do descritor do qual os identificadores são fornecidos deve ter o tipo D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV. Além disso, o heap referenciado pelo GPUDescriptorHandle deve ser um heap de descritor visível por sombreador.
Você não deve excluir o heap referenciado pelo identificador do descritor de GPU até que todo o trabalho referenciando ele tenha concluído a execução na GPU. No entanto, você pode redefinir ou liberar a própria tabela de associação assim que a expedição for registrada na lista de comandos. Semelhante à relação entre ID3D12CommandList e ID3D12CommandAllocator, o IDMLBindingTable não possui a memória subjacente referenciada pelos identificadores do descritor. Em vez disso, o ID3D12DescriptorHeap faz. Portanto, você tem permissão para redefinir ou liberar uma tabela de associação DirectML antes que o trabalho usando a tabela de associação tenha concluído a execução na GPU.
Sintaxe
HRESULT CreateBindingTable(
[in, optional] const DML_BINDING_TABLE_DESC *desc,
REFIID riid,
[out] void **ppv
);
Parâmetros
[in, optional] desc
Tipo: const DML_BINDING_TABLE_DESC*
Um ponteiro opcional para um DML_BINDING_TABLE_DESC que contém os parâmetros da tabela de associação. Isso pode ser nullptr, indicando uma tabela de associação vazia.
riid
Tipo: REFIID
Uma referência ao GUID (identificador global exclusivo) da interface que você deseja que seja retornado em ppv. Espera-se que esse seja o GUID de IDMLBindingTable.
[out] ppv
Tipo: void**
Um ponteiro para um bloco de memória que recebe um ponteiro para a tabela de associação. Esse é o endereço de um ponteiro para um IDMLBindingTable, representando a tabela de associação criada.
Valor retornado
Tipo: HRESULT
Se o método for bem-sucedido, ele retornará S_OK. Caso contrário, ele retornará um código de erro HRESULT.
Requisitos
Plataforma de Destino | Windows |
Cabeçalho | directml.h |
Biblioteca | DirectML.lib |
DLL | DirectML.dll |