Compartir a través de


Sistemas de varios adaptadores

Describe la compatibilidad con Direct3D 12 para sistemas que tienen varios adaptadores instalados, que abarcan escenarios en los que la aplicación tiene como destino explícitamente varios adaptadores de GPU y escenarios en los que los controladores usan implícitamente varios adaptadores de GPU en nombre de la aplicación.

Introducción a varios adaptadores

Un adaptador de GPU puede ser cualquier adaptador (gráficos o proceso, discreto o integrado) de cualquier fabricante que admita Direct3D 12.

Se hace referencia a varios adaptadores como nodos. Varios elementos, como las colas, se aplican a cada nodo, por lo que si hay dos nodos, habrá dos colas 3D predeterminadas. Otros elementos, como el estado de canalización y las firmas de raíz y comando, pueden hacer referencia a uno o varios nodos, como se muestra en el diagrama.

las colas se aplican a cada adaptador de gráficos

Uso compartido de montones entre adaptadores

Consulte el tema Montones compartidos.

API de varios adaptadores y máscaras de nodo

De forma similar a las API anteriores de Direct3D, cada conjunto de adaptadores vinculados se enumera como un único objeto IDXGIAdapter3. Todas las salidas asociadas a cualquier adaptador del vínculo se enumeran como adjuntas al único objeto IDXGIAdapter .

La aplicación puede determinar el número de adaptadores físicos asociados a un dispositivo determinado llamando a ID3D12Device::GetNodeCount.

Muchas API de Direct3D 12 aceptan una máscara de nodo (máscara de bits), que indica el conjunto de nodos al que hace referencia la llamada API. Cada nodo tiene un índice de base cero. Pero en la máscara de nodo, cero se traduce en bit 1; 1 se traduce en bit 2; y así sucesivamente.

Nodos únicos

Al llamar a las siguientes API (nodo único), la aplicación especifica un único nodo con el que se asociará la llamada API. La mayoría de las veces, se especifica mediante una máscara de nodo. Cada bit de la máscara corresponde a un único nodo. Para todas las API descritas en esta sección, debe establecer exactamente un bit en la máscara de nodo.

Nodos múltiples

Al llamar a las siguientes API (varios nodos), la aplicación especifica un conjunto de nodos con los que se asociará la llamada API. La afinidad de nodo se especifica como máscara de nodo, potencialmente con varios bits establecidos. Si la aplicación pasa 0 para esta máscara de bits, el controlador Direct3D 12 lo convierte en la máscara de bits 1 (lo que indica que el objeto está asociado con el nodo 0).

API de creación de recursos

Las siguientes API hacen referencia a máscaras de nodo.

Al crear un recurso reservado, no se especifica ningún índice o máscara de nodo. El recurso reservado se puede asignar a un montón en cualquier nodo (siguiendo las reglas de uso compartido entre nodos).

El método MakeResident funciona internamente con colas de adaptadores, no es necesario que la aplicación especifique nada para esto.

Al llamar a las siguientes API ID3D12Device, la aplicación no necesita especificar un conjunto de nodos con los que se asociará la llamada API porque la llamada API se aplica a todos los nodos.

Guía de programación para Direct3D 12