多配接器系統

說明 Direct3D 12 支援已安裝多個介面卡的系統,涵蓋您的應用程式明確以多個 GPU 介面卡為目標的案例,以及驅動程式代表應用程式隱含使用多個 GPU 介面卡的案例。

多配接器概觀

GPU 配接器可以是任何介面卡(圖形或計算、離散或整合),來自任何支援 Direct3D 12 的製造商。

多個配接器會參考為 節點 。 一些元素,例如佇列,會套用至每個節點,因此如果有兩個節點,則會有兩個預設的 3D 佇列。 其他元素,例如管線狀態和根和命令簽章,可以參考一或多個或所有節點,如圖表所示。

queues apply to each graphics adapter

跨配接器共用堆積

請參閱共用堆積 主題。

多配接器 API 和節點遮罩

與先前的 Direct3D API 類似,每個連結的配接器集合都會列舉為單 一 IDXGIAdapter3 物件。 連結中附加至任何配接器的所有輸出都會列舉為附加至單一 IDXGIAdapter3 物件。

您的應用程式可以呼叫 ID3D12Device::GetNodeCount ,以判斷與指定裝置相關聯的實體介面卡數目。

Direct3D 12 中的許多 API 都接受 節點遮罩 (位元遮罩),指出 API 呼叫所參考的節點集。 每個節點都有以零起始的索引。 但在節點遮罩中,零會轉譯為位 1;1 會轉譯為位 2;等等。

單一節點

呼叫下列 (單一節點) API 時,您的應用程式會指定與 API 呼叫相關聯的單一節點。 大部分時候,這會由節點遮罩指定。 遮罩中的每個位都會對應至單一節點。 針對本節所述的所有 API,您必須在節點遮罩中只設定一個位。

多個節點

呼叫下列 (多個節點) API 時,您的應用程式會指定一組與 API 呼叫相關聯的節點。 您可以將節點親和性指定為節點遮罩,可能已設定多個位。 如果您的應用程式針對此位元遮罩傳遞 0,則 Direct3D 12 驅動程式會將它轉換成位元遮罩 1(表示物件與節點 0 相關聯)。

資源建立 API

下列 API 參考節點遮罩。

建立保留的資源時,不會指定任何節點索引或遮罩。 保留的資源可以對應至任何節點上的堆積(遵循跨節點共用規則)。

MakeResident 方法 可在內部與配接器佇列搭配運作,您的應用程式不需要為此指定任何專案。

呼叫下列 ID3D12Device API 時,您的應用程式不需要指定 API 呼叫將相關聯的一組節點,因為 API 呼叫會套用至所有節點。

Direct3D 12 程式設計指南