Share via


다중 어댑터 시스템

여러 어댑터가 설치된 시스템에 대한 Direct3D 12의 지원, 애플리케이션이 여러 GPU 어댑터를 명시적으로 대상으로 하는 시나리오 및 드라이버가 애플리케이션을 대신하여 여러 GPU 어댑터를 암시적으로 사용하는 시나리오를 설명합니다.

다중 어댑터 개요

GPU 어댑터는 Direct3D 12를 지원하는 모든 제조업체의 모든 어댑터(그래픽 또는 컴퓨팅, 불연속 또는 통합)일 수 있습니다.

여러 어댑터는 API에서 ‘노드’로 큐와 같은 많은 요소가 각 노드에 적용되므로 두 개의 노드가 있는 경우 두 개의 기본 3D 큐가 있습니다. 파이프라인 상태, 루트 및 명령 서명과 같은 다른 요소는 다이어그램에 표시된 것처럼 하나 이상의 노드 또는 모든 노드를 참조할 수 있습니다.

queues apply to each graphics adapter

어댑터에서 힙 공유

공유 힙 항목을 참조하세요.

다중 어댑터 API 및 노드 마스크

이전 Direct3D API와 마찬가지로 연결된 각 어댑터 집합은 단일 IDXGIAdapter3 개체로 열거됩니다. 링크로 어댑터에 연결된 모든 출력은 단일 IDXGIAdapter3 개체에 연결된 것으로 열거됩니다.

애플리케이션은 ID3D12Device::GetNodeCount를 호출하여 지정된 디바이스와 연결된 실제 어댑터 수를 확인할 수 있습니다.

Direct3D 12의 많은 API는 API 호출이 참조하는 노드 집합을 나타내는 노드 마스크(비트 마스크)를 허용합니다. 각 노드에는 0부터 시작하는 인덱스가 있습니다. 그러나 노드 마스크에서 0은 비트 1로 변환됩니다. 1은 비트 2로 변환됩니다. 등등.

단일 노드

다음(단일 노드) API를 호출할 때 애플리케이션은 API 호출이 연결될 단일 노드를 지정합니다. 대부분의 경우 노드 마스크로 지정됩니다. 마스크의 각 비트는 단일 노드에 해당합니다. 이 섹션에 설명된 모든 API의 경우 노드 마스크에서 정확히 한 비트를 설정해야 합니다.

다중 노드

다음(여러 노드) API를 호출할 때 애플리케이션은 API 호출이 연결될 노드 집합을 지정합니다. 노드 선호도를 여러 비트가 설정된 노드 마스크로 지정합니다. 애플리케이션이 이 비트 마스크에 대해 0을 전달하는 경우 Direct3D 12 드라이버는 개체가 노드 0과 연결되어 있음을 나타내는 비트 마스크 1로 변환합니다.

리소스 생성 API

다음 API는 노드 마스크를 참조합니다.

예약된 리소스를 만들 때 노드 인덱스 또는 마스크가 지정되지 않습니다. 예약된 리소스는 모든 노드의 힙에 매핑할 수 있습니다(노드 간 공유 규칙에 따름).

MakeResident 메서드는 어댑터 큐에서 내부적으로 작동하므로 애플리케이션에서 이를 위해 아무것도 지정할 필요가 없습니다.

다음 ID3D12Device API를 호출할 때 애플리케이션은 API 호출이 모든 노드에 적용되기 때문에 API 호출이 연결될 노드 집합을 지정할 필요가 없습니다.

Direct3D 12 프로그래밍 가이드