Systeme mit mehreren Adaptern

Beschreibt die Unterstützung in Direct3D 12 für Systeme, auf denen mehrere Adapter installiert sind. Dabei werden Szenarien beschrieben, in denen Ihre Anwendung explizit auf mehrere GPU-Adapter ausgerichtet ist, und Szenarien, in denen Treiber implizit mehrere GPU-Adapter im Namen Ihrer Anwendung verwenden.

Übersicht über mehrere Adapter

Ein GPU-Adapter kann ein beliebiger Adapter (Grafik oder Compute, diskret oder integriert) eines beliebigen Herstellers sein, der Direct3D 12 unterstützt.

Auf mehrere Adapter wird als Knoten verwiesen. Eine Reihe von Elementen, z. B. die Warteschlangen, gelten für jeden Knoten. Wenn also zwei Knoten vorhanden sind, gibt es zwei Standardmäßige 3D-Warteschlangen. Andere Elemente, z. B. der Pipelinestatus und Stamm- und Befehlssignaturen, können auf einen oder mehrere oder alle Knoten verweisen, wie im Diagramm dargestellt.

Warteschlangen gelten für jeden Grafikkarten.

Freigeben von Heaps über Adapter hinweg

Weitere Informationen finden Sie im Thema Freigegebene Heaps .

APIs mit mehreren Adaptern und Knotenmasken

Ähnlich wie bei früheren Direct3D-APIs wird jeder Satz verknüpfter Adapter als einzelnes IDXGIAdapter3-Objekt aufgezählt. Alle Ausgaben, die an einen beliebigen Adapter im Link angefügt sind, werden als an das einzelne IDXGIAdapter3-Objekt angefügt aufgezählt.

Ihre Anwendung kann die Anzahl der physischen Adapter bestimmen, die einem bestimmten Gerät zugeordnet sind, indem SIE ID3D12Device::GetNodeCount aufruft.

Viele APIs in Direct3D 12 akzeptieren eine Knotenmaske (eine Bitmaske), die den Knotensatz angibt, auf den sich der API-Aufruf bezieht. Jeder Knoten verfügt über einen nullbasierten Index. In der Knotenmaske wird null jedoch in Bit 1 übersetzt; 1 bedeutet Bit 2; Und so weiter.

Einzelne Knoten

Beim Aufrufen der folgenden APIs (einzelner Knoten) gibt Ihre Anwendung einen einzelnen Knoten an, dem der API-Aufruf zugeordnet wird. In den meisten Fällen wird dies durch eine Knotenmaske angegeben. Jedes Bit in der Maske entspricht einem einzelnen Knoten. Für alle in diesem Abschnitt beschriebenen APIs müssen Sie genau ein Bit in der Knotenmaske festlegen.

Mehrere Knoten

Beim Aufrufen der folgenden APIs (mehrere Knoten) gibt Ihre Anwendung eine Gruppe von Knoten an, denen der API-Aufruf zugeordnet wird. Sie geben die Knotenaffinität als Knotenmaske an, möglicherweise mit mehreren Bits. Wenn Ihre Anwendung 0 für diese Bitmaske übergibt, konvertiert der Direct3D 12-Treiber dies in die Bitmaske 1 (was angibt, dass das Objekt Knoten 0 zugeordnet ist).

APIs für die Ressourcenerstellung

Die folgenden APIs verweisen auf Knotenmasken.

Beim Erstellen einer reservierten Ressource wird kein Knotenindex oder keine Maske angegeben. Die reservierte Ressource kann einem Heap auf einem beliebigen Knoten zugeordnet werden (gemäß den Regeln für die knotenübergreifende Freigabe).

Die MakeResident-Methode funktioniert intern mit Adapterwarteschlangen. Ihre Anwendung muss dafür nichts angeben.

Beim Aufrufen der folgenden ID3D12Geräte-APIs muss Ihre Anwendung keine Gruppe von Knoten angeben, denen der API-Aufruf zugeordnet wird, da der API-Aufruf auf alle Knoten angewendet wird.

Direct3D 12-Programmieranleitung