共用方式為


多配接器系統

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

多配接器概觀

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

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

佇列會套用至每個圖形適配卡

跨配接器共用堆積

請參閱共用堆積主題。

多配接器 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 程式設計指南