Método IDMLDevice::CreateBindingTable (directml.h)
Crea una tabla de enlace, que es un objeto que se puede usar para enlazar recursos (como tensores) a la canalización.
La tabla de enlace encapsula un intervalo de un montón de descriptores administrados por la aplicación mediante los identificadores y recuentos de descriptores proporcionados. DirectML usa tablas de enlace para administrar el enlace de recursos escribiendo descriptores en el montón de descriptores en el desplazamiento especificado por CPUDescriptorHandle y enlazando esos descriptores a la canalización mediante los descriptores en el desplazamiento especificado por GPUDescriptorHandle. El orden en que DirectML escribe descriptores en el montón no se especifica, por lo que la aplicación debe tener cuidado de no sobrescribir los descriptores ajustados por la tabla de enlace.
Los identificadores de descriptores de CPU y GPU proporcionados pueden provenir de diferentes montones, pero es responsabilidad de la aplicación asegurarse de que todo el intervalo de descriptores al que hace referencia el identificador del descriptor de CPU se copia en el intervalo al que hace referencia el identificador del descriptor de GPU antes de la ejecución mediante esta tabla de enlace.
El montón de descriptores desde el que se proporcionan los identificadores debe tener el tipo D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV. Además, el montón al que hace referencia GPUDescriptorHandle debe ser un montón de descriptores visibles para sombreador.
No debe eliminar el montón al que hace referencia el identificador del descriptor de GPU hasta que todo el trabajo que haga referencia a él haya completado la ejecución en la GPU. Sin embargo, puede restablecer o liberar la propia tabla de enlace en cuanto se haya registrado el envío en la lista de comandos. De forma similar a la relación entre ID3D12CommandList y ID3D12CommandAllocator, IDMLBindingTable no posee la memoria subyacente a la que hacen referencia los identificadores del descriptor. En su lugar, id3D12DescriptorHeap sí. Por lo tanto, se le permite restablecer o liberar una tabla de enlace de DirectML antes de que el trabajo con la tabla de enlace haya completado la ejecución en la GPU.
Sintaxis
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*
Puntero opcional a un DML_BINDING_TABLE_DESC que contiene los parámetros de la tabla de enlace. Puede ser nullptr, lo que indica una tabla de enlace vacía.
riid
Tipo: REFIID
Referencia al identificador único global (GUID) de la interfaz que desea devolver en ppv. Se espera que sea el GUID de IDMLBindingTable.
[out] ppv
Tipo: void**
Puntero a un bloque de memoria que recibe un puntero a la tabla de enlace. Esta es la dirección de un puntero a un IDMLBindingTable, que representa la tabla de enlace creada.
Valor devuelto
Tipo: HRESULT
Si este método se realiza correctamente, devuelve S_OK. De lo contrario, devuelve un código de error de HRESULT.
Requisitos
Plataforma de destino | Windows |
Encabezado | directml.h |
Library | DirectML.lib |
Archivo DLL | DirectML.dll |