Compartilhar via


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

Confira também

Associação no DirectML

IDMLDevice