Freigeben über


Kopieren von Deskriptoren

Die Methoden ID3D12Device::CopyDescriptors und ID3D12Device::CopyDescriptorsSimple auf der Geräteschnittstelle verwenden die CPU, um Deskriptoren sofort zu kopieren. Sie können als freier Thread bezeichnet werden, solange mehrere Threads auf der CPU oder GPU keine potenziell in Konflikt stehenden Schreibvorgänge ausführen.

Deskriptoren sofort kopieren (CPU-Zeitachse)

Die Anzahl der Quelldeskriptoren (zum Kopieren aus), die als Satz von Deskriptorbereichen angegeben ist, muss der Anzahl von Zieldeskriptoren (zum Kopieren in) entsprechen, die als separater Satz von Deskriptorbereichen angegeben wird. Die Quell- und Zielbereiche müssen sich andernfalls nicht anreihen. Beispielsweise könnte ein Sparsesatz von Deskriptoren in ein zusammenhängendes Ziel kopiert werden, umgekehrt oder in einer bestimmten Kombination.

Mehrere Deskriptorheaps können am Kopiervorgang beteiligt sein, sowohl als Quelle als auch als Ziel. Die Verwendung von Deskriptorhandles als Parameter bedeutet, dass sich die Kopiermethoden nicht darum kümmern, in welchen Heaps ein gegebener Deskriptor liegt – sie sind alle nur Arbeitsspeicher.

Die Deskriptor-Heaptypen, die aus und kopiert werden, müssen übereinstimmen, sodass die Methoden einen einzelnen Deskriptor-Heaptyp als Eingabe verwenden. Der Treiber muss den Heaptyp aller Deskriptoren im angegebenen Kopiervorgang kennen, damit er weiß, welche Datengröße beim Kopiervorgang beteiligt ist. Der Treiber muss möglicherweise auch benutzerdefinierte Kopiervorgänge ausführen, wenn ein bestimmter Deskriptorheaptyp dies rechtfertigt – ein Implementierungsdetail. Beachten Sie, dass Deskriptorhandles selbst sonst nicht identifizieren, auf welchen Typ sie verweisen. Daher ist für den Kopiervorgang ein zusätzlicher Parameter erforderlich.

Eine alternative API zu CopyDescriptors wird für den einfachen Fall des Kopierens eines einzelnen Deskriptorsbereichs von einem Speicherort an einen anderen bereitgestellt – CopyDescriptorsSimple.

Für diese gerätebasierten Deskriptorkopiemethoden (CPU Zeitleiste) müssen Quelldeskriptoren aus einem Nicht-Shader-Deskriptorheap stammen. Die Zielbeschreibungen können sich in jedem Deskriptorheap befinden, der CPU sichtbar ist (Shader sichtbar oder nicht).

Deskriptoren