共用方式為


落地概觀

概述

現在,使用者模式驅動程式會建置配置和修補程式位置清單資訊,以及它所建置的每個命令緩衝區。 視訊記憶體管理員會使用這項資訊來進行兩個用途:

  • 配置清單和修補程式位置清單可用來修補具有實際區段位址的命令緩衝區,再提交至圖形處理器 (GPU) 引擎。 Windows 顯示驅動程式模型 (WDDM) v2 中的 GPU 虛擬位址支援,不需要進行此修補。
  • 影片記憶體管理員會使用配置清單和修補程式位置清單來控制配置落地。 視訊記憶體管理員可確保命令緩衝區所參考的任何配置都會在命令緩衝區傳送至特定引擎的執行之前進行駐留。

引進新的落地模型后,落地會移至裝置上的明確清單,而不是個別命令緩衝區清單。 視訊記憶體管理員可確保特定裝置落地需求清單上的所有配置都會在屬於該裝置的任何內容都已排定執行之前進行駐留。

若要管理落地,使用者模式驅動程式可以存取兩個新的設備驅動器介面, (DIS) 、 MakeResidentEvict,以及實作新的 TrimResidency 回 呼的必要條件。 MakeResident 會將一或多個配置新增至裝置落地需求清單。 收回 將會從該清單中移除其中一個配置。 當需要使用者模式驅動程式以減少其落地需求時,視訊記憶體管理員會呼叫 TrimResidency 回呼。

MakeResidentEvict 也已更新為保留內部參考計數,這表示 對 MakeResident 的多個呼叫需要相同數目的 Evict 呼叫,才能實際收回配置。

在新的落地模型中,每個命令的緩衝區配置和修補程式位置清單會逐漸分階段。雖然這些清單將存在於某些案例中,但不會再控制落地。

重要 WDDM v2 中的落地是由裝置落地需求清單獨佔控制。 這適用於 GPU 的所有引擎,以及每個 API。

分階段配置和修補程式位置清單

配置和修補程式位置清單的角色將會隨著引進新的落地模型而大幅減少,而且實際上會完全離開硬體輔助排程。

在封包型排程模型中,配置清單會繼續存在,如下所示:

  • 對於不支援 GPU 虛擬尋址的引擎,配置清單和修補程式位置清單會繼續存在,不過,它們只會用於修補用途,而且不再控制落地。 配置清單和修補程式位置清單會同時提供給各種一般 DIS 中的使用者模式驅動程式和核心模式驅動程式,但任何未駐留的配置參考都會導致 GPU 排程器拒絕提交,並將裝置置於錯誤 (遺失) 。 此作業模式會被視為舊版,我們預期所有 GPU 引擎在未來的硬體版本中都支援 GPU 虛擬尋址。 預期此作業模式將會在未來版本的 WDDM 中卸除。
  • 對於支援 GPU 虛擬尋址的引擎,會新增新的內容建立旗標 (DXGK_CONTEXTINFO_NO_PATCHING_REQUIRED) ,以指出特定內容不需要任何修補。 指定此旗標時,不會配置任何修補程式位置清單,而且只會配置非常小的配置清單 (16 個專案) 。 配置清單將用來追蹤主要表面的寫入參考,而且沒有其他用途。 GPU 排程器必須知道特定命令緩衝區何時寫入主要介面,以便適當地同步處理該緩衝區的執行,以將可能發生翻轉到主要表面。

同樣地,配置清單會用於目前的核心模式驅動程式 Present 路徑中,以將有關 Present 作業來源和目的地的資訊傳遞給驅動程式。 在此內容中,配置清單會繼續存在以傳遞參數,不過,配置清單將不會用於落地。 在需要修補的 GPU 上, [目前 配置] 清單會包含如今天一樣預先修補的資訊,如果排入佇列到排程器的時間以及排程在 GPU 上執行的時間之間, 任何 資源都會在記憶體中四處移動,則會重新修補 Present 封包。

下表摘要說明 WDDM v2 驅動程式何時應該在各種使用者模式驅動程式和核心模式驅動程式 DIS 中收到配置和修補程式位置清單。

GPU 引擎 配置清單? 修補程式位置清單?
沒有 GPU 虛擬位址支援 (需要修補,預設)

是,完整大小,但只用於修補用途。

任何未駐留的配置參考都會造成提交裝置發生錯誤, (遺失) ,且排程器拒絕提交。
是,完整大小。
GPU 虛擬地址支援 (DXGK_CONTEXTINFO_NO_PATCHING_REQUIRED 旗標集)

是,16 個專案。

參考命令緩衝區寫入的主要介面,如果有的話。 GPU 排程器用於與顯示控制器上所發生的口語同步處理。 主要表面必須已經位於裝置落地需求清單上,否則將會拒絕參考。
No
GPU 虛擬地址支援 + 硬體排程 No