Share via


IDMLDevice::CreateBindingTable-Methode (directml.h)

Erstellt eine Bindungstabelle, bei der es sich um ein Objekt handelt, das zum Binden von Ressourcen (z. B. Tensoren) an die Pipeline verwendet werden kann.

Die Bindungstabelle umschließt einen Bereich eines von der Anwendung verwalteten Deskriptorheaps mithilfe der bereitgestellten Deskriptorhandles und -anzahl. Bindungstabellen werden von DirectML verwendet, um die Bindung von Ressourcen zu verwalten, indem Deskriptoren in den Deskriptorheap am durch CPUDescriptorHandle angegebenen Offset geschrieben und diese Deskriptoren mithilfe der Deskriptoren an den durch GPUDescriptorHandle angegebenen Offset an die Pipeline gebunden werden. Die Reihenfolge, in der DirectML Deskriptoren in den Heap schreibt, ist nicht angegeben, sodass Ihre Anwendung darauf achten muss, die von der Bindungstabelle umschlossenen Deskriptoren nicht zu überschreiben.

Die bereitgestellten CPU- und GPU-Deskriptorhandles können aus verschiedenen Heaps stammen. Es liegt jedoch in der Verantwortung Ihrer Anwendung sicherzustellen, dass der gesamte Deskriptorbereich, auf den das CPU-Deskriptorhandle verweist, vor der Ausführung mithilfe dieser Bindungstabelle in den Bereich kopiert wird, auf den das GPU-Deskriptorhandle verweist.

Der Deskriptorheap, aus dem die Handles bereitgestellt werden, muss über den Typ D3D12_DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV verfügen. Darüber hinaus muss der heap, auf den von GPUDescriptorHandle verwiesen wird, ein shader-visible descriptor heap sein.

Sie dürfen den Heap, auf den das GPU-Deskriptorhandle verweist, erst löschen, wenn alle Darauf verweisenden Arbeiten die Ausführung auf der GPU abgeschlossen haben. Sie können jedoch die Bindungstabelle selbst zurücksetzen oder freigeben, sobald die Verteiler in der Befehlsliste aufgezeichnet wurden. Ähnlich wie bei der Beziehung zwischen ID3D12CommandList und ID3D12CommandAllocator besitzt die IDMLBindingTable nicht den zugrunde liegenden Arbeitsspeicher, auf den die Deskriptorhandles verweisen. Stattdessen tut der ID3D12DescriptorHeap dies. Daher ist es Ihnen gestattet, eine DirectML-Bindungstabelle zurückzusetzen oder freizugeben, bevor die Ausführung der Arbeit mit der Bindungstabelle auf der GPU abgeschlossen ist.

Syntax

HRESULT CreateBindingTable(
  [in, optional] const DML_BINDING_TABLE_DESC *desc,
                 REFIID                       riid,
  [out]          void                         **ppv
);

Parameter

[in, optional] desc

Typ: const DML_BINDING_TABLE_DESC*

Ein optionaler Zeiger auf einen DML_BINDING_TABLE_DESC , der die Bindungstabellenparameter enthält. Dies kann nullptr sein, was eine leere Bindungstabelle angibt.

riid

Typ: REFIID

Ein Verweis auf die GUID (Globally Unique Identifier) der Schnittstelle, die in ppv zurückgegeben werden soll. Es wird erwartet, dass dies die GUID von IDMLBindingTable ist.

[out] ppv

Typ: void**

Ein Zeiger auf einen Speicherblock, der einen Zeiger auf die Bindungstabelle empfängt. Dies ist die Adresse eines Zeigers auf eine IDMLBindingTable, die die erstellte Bindungstabelle darstellt.

Rückgabewert

Typ: HRESULT

Wenn diese Methode erfolgreich ist, wird S_OK zurückgegeben. Andernfalls wird ein Fehlercode HRESULT zurückgegeben.

Anforderungen

   
Zielplattform Windows
Kopfzeile directml.h
Bibliothek DirectML.lib
DLL DirectML.dll

Weitere Informationen

Bindung in DirectML

IDMLDevice