Sistemi multi-adattatore

Descrive il supporto in Direct3D 12 per i sistemi con più schede installate, che coprono scenari in cui l'applicazione ha come destinazione esplicitamente più schede GPU e scenari in cui i driver usano in modo implicito più schede GPU per conto dell'applicazione.

Panoramica di più schede

Una scheda GPU può essere qualsiasi scheda (grafica o calcolo, discreta o integrata) da qualsiasi produttore che supporta Direct3D 12.

A più schede viene fatto riferimento come nodi. Un numero di elementi, ad esempio le code, si applica a ogni nodo, quindi se sono presenti due nodi, saranno presenti due code 3D predefinite. Altri elementi, ad esempio lo stato della pipeline e la radice e le firme dei comandi, possono fare riferimento a uno o più nodi, come illustrato nel diagramma.

queues apply to each graphics adapter

Condivisione degli heap tra gli adapter

Vedere l'argomento Heaps condiviso.

API con più adattatori e maschere di nodo

Analogamente alle API Direct3D precedenti, ogni set di adattatori collegati viene enumerato come singolo oggetto IDXGIAdapter3. Tutti gli output collegati a qualsiasi adattatore nel collegamento vengono enumerati come associati al singolo oggetto IDXGIAdapter3 .

L'applicazione può determinare il numero di adattatori fisici associati a un determinato dispositivo chiamando ID3D12Device::GetNodeCount.

Molte API in Direct3D 12 accettano una maschera di nodo (maschera di bit), che indica il set di nodi a cui fa riferimento la chiamata API. Ogni nodo ha un indice in base zero. Ma nella maschera del nodo, zero si traduce in bit 1; 1 si traduce in bit 2; E così via.

Nodi singoli

Quando si chiamano le API (a nodo singolo) seguenti, l'applicazione specifica un singolo nodo con cui verrà associata la chiamata API. Nella maggior parte dei casi, questa operazione viene specificata da una maschera di nodo. Ogni bit nella maschera corrisponde a un singolo nodo. Per tutte le API descritte in questa sezione, è necessario impostare esattamente un bit nella maschera del nodo.

Più nodi

Quando si chiamano le API seguenti (a più nodi), l'applicazione specifica un set di nodi a cui verrà associata la chiamata API. È possibile specificare l'affinità del nodo come maschera di nodo, potenzialmente con più bit impostati. Se l'applicazione passa 0 per questa maschera di bit, il driver Direct3D 12 converte tale maschera di bit nella maschera di bit 1 (a indicare che l'oggetto è associato al nodo 0).

API di creazione di risorse

Le API seguenti fanno riferimento alle maschere dei nodi.

Quando si crea una risorsa riservata, non viene specificato alcun indice o maschera del nodo. La risorsa riservata può essere mappata a un heap in qualsiasi nodo (seguendo le regole di condivisione tra nodi).

Il metodo MakeResident funziona internamente con le code degli adattatori, non è necessario che l'applicazione specifichi nulla per questo.

Quando si chiamano le API ID3D12Device seguenti, l'applicazione non deve specificare un set di nodi a cui verrà associata la chiamata API perché la chiamata API si applica a tutti i nodi.

Guida alla programmazione di Direct3D 12