Поделиться через


Метод IDMLDevice::CreateBindingTable (directml.h)

Создает таблицу привязки, которая является объектом, который можно использовать для привязки ресурсов (например, тензоров) к конвейеру.

Таблица привязки заключает в оболочку диапазон кучи дескриптора, управляемой приложением, используя предоставленные дескрипторы дескриптора и счетчик. Таблицы привязки используются DirectML для управления привязкой ресурсов путем записи дескрипторов в кучу дескрипторов со смещением, указанным в cpuDescriptorHandle, и привязки этих дескрипторов к конвейеру с помощью дескрипторов со смещением, указанным в GPUDescriptorHandle. Порядок, в котором DirectML записывает дескрипторы в кучу, не определен, поэтому приложение должно следить за тем, чтобы не перезаписать дескрипторы, заключенные в таблицу привязки.

Предоставленные дескрипторы дескриптора ЦП и GPU могут поступать из разных куч, однако в этом случае ваше приложение отвечает за то, чтобы весь диапазон дескриптора дескриптора дескриптора ЦП копировался в диапазон, на который ссылается дескриптор GPU перед выполнением с помощью этой таблицы привязки.

Куча дескрипторов, из которой предоставляются дескрипторы, должна иметь тип D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV. Кроме того, куча, на которую ссылается GPUDescriptorHandle , должна быть видимой для шейдера кучей дескрипторов.

Не следует удалять кучу, на которую ссылается дескриптор 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

Ссылка на глобальный уникальный идентификатор (GUID) интерфейса, который вы хотите вернуть в ppv. Ожидается, что это будет GUID IDMLBindingTable.

[out] ppv

Тип: void**

Указатель на блок памяти, который получает указатель на таблицу привязки. Это адрес указателя на IDMLBindingTable, представляющий созданную таблицу привязки.

Возвращаемое значение

Тип: HRESULT

Если этот метод завершается успешно, он возвращает S_OK. В противном случае возвращается код ошибки HRESULT .

Требования

   
Целевая платформа Windows
Header directml.h
Библиотека DirectML.lib
DLL DirectML.dll

См. также раздел

Привязывание в DirectML

IDMLDevice