Sistemas com vários adaptadores

Descreve o suporte no Direct3D 12 para sistemas que têm vários adaptadores instalados, abrangendo cenários em que seu aplicativo tem como alvo explícito diversos adaptadores de GPU e cenários em que os drivers usam implicitamente diversos adaptadores de GPU em nome do seu aplicativo.

Visão geral de vários adaptadores

Um adaptador de GPU pode ser qualquer adaptador (gráfico ou de computação, discreto ou integrado), de qualquer fabricante, que ofereça suporte ao Direct3D 12.

Vários adaptadores são referenciados como nós. Vários elementos, como as filas, se aplicam a cada nó. Portanto, se houver dois nós, haverá duas filas 3D padrão. Outros elementos, como o estado do pipeline e as assinaturas raiz e de comando, podem se referir a um ou mais nós, conforme mostrado no diagrama.

as filas se aplicam a cada adaptador gráfico

Compartilhar heaps entre adaptadores

Consulte o tópico Heaps compartilhados.

APIs de vários adaptadores e máscaras de nó

Semelhante às APIs Direct3D anteriores, cada conjunto de adaptadores vinculados é enumerado como um objeto único IDXGIAdapter3. Todas as saídas anexadas a qualquer adaptador no link são enumeradas como anexadas ao objeto único IDXGIAdapter3.

Seu aplicativo pode determinar o número de adaptadores físicos associados a um determinado dispositivo chamando ID3D12Device::GetNodeCount.

Muitas APIs no Direct3D 12 aceitam uma máscara de nó (uma máscara de bits), que indica o conjunto de nós aos quais a chamada de API se refere. Cada nó tem um índice de base zero. Mas na máscara de nó, zero se traduz em bit 1; 1 se traduz em bit 2; e assim por diante.

Nós únicos

Ao chamar as seguintes APIs (nó único), seu aplicativo especifica um nó único ao qual a chamada de API será associada. Na maioria das vezes, isso é especificado por uma máscara de nó. Cada bit na máscara corresponde a um nó único. Para todas as APIs descritas nesta seção, você deve definir exatamente um bit na máscara de nó.

Vários nós

Ao chamar as seguintes APIs (vários nós), seu aplicativo especifica um conjunto de nós aos quais a chamada de API será associada. Você especifica a afinidade de nó como uma máscara de nó, potencialmente com vários bits definidos. Se o seu aplicativo passar 0 para essa máscara de bits, o driver Direct3D 12 converterá isso para a máscara de bits 1 (indicando que o objeto está associado ao nó 0).

APIs de criação de recursos

As APIs a seguir fazem referência a máscaras de nó.

Ao criar um recurso reservado, nenhum índice de nó ou máscara é especificado. O recurso reservado pode ser mapeado em um heap em qualquer nó (seguindo as regras de compartilhamento entre nós).

O método MakeResident funciona internamente com filas do adaptador, não há necessidade de seu aplicativo especificar nada para isso.

Ao chamar as seguintes APIs ID3D12Device, seu aplicativo não precisa especificar um conjunto de nós aos quais a chamada de API será associada, pois a chamada de API se aplica a todos os nós.

Guia de programação do Direct3D 12