混合式系統 DDI 和 dList DLL 支援
從 Windows 8.1 (WDDM 1.3) 開始,引進了混合式系統上的跨適配卡資源支援。 以下是可用的使用者模式和內核模式函式、結構和列舉:
- D3D10_DDI_RESOURCE_MISC_FLAG 列舉
- D3DDDI_RESOURCEFLAGS2 結構
- D3DDDI_SYNCHRONIZATIONOBJECT_FLAGS 結構
- D3DKMDT_GDISURFACEDATA 結構
- D3DKMDT_GDISURFACETYPE 列舉
- DXGK_DRIVERCAPS 結構
- DXGK_VIDMMCAPS 結構
- pfnQueryDListForApplication1 函式
從 Windows Server 2022 (WDDM 2.9) 開始,引進 跨適配卡資源掃描 (CASO) 功能。 CASO 已新增下列額外的支援:
- 已新增 pfnQueryDListForApplication2 函式 ()
- 已新增) D3DDDI_DLIST_QUERY_RESULT列舉 (
- 已新增) D3DDDI_DLIST_QUERY_DECISION_FACTOR列舉 (
- NoHybridDiscreteDListDllSupport 已新增至 DXGK_DRIVERCAPS 結構
- CrossAdapterResourceTexture 和 CrossAdapterResourceScanout 已新增至 DXGK_VIDMMCAPS 結構
注意
在 Windows Server 2022 (WDDM 2.9) 和更新版本的 OS 版本上,不論其是否實作 CASO 支援,混合式系統上的使用者模式顯示驅動程式 (UMD) 都必須支援 pfnQueryDListForApplication2 DDI,這會取代 pfnQueryDListForApplication1。
設定 dList DLL
dList 是一份應用程式清單,這些應用程式需要跨適配卡共用介面,才能在離散 GPU 上呈現高效能。
離散 GPU 的 UMD 會安裝個別的小型 dList DLL,以匯出其 pfnQueryDListForApplication2 函式 。 操作系統本身不會判斷應用程式應該在哪個 GPU 上執行。 相反地,Direct3D 運行時間最多會在 Direct3D 初始化期間呼叫 pfnQueryDListForApplication2 一次。
驅動程式必須查詢最新的進程資訊清單,以判斷進程是否需要離散 GPU 的增強效能,而不是整合式 GPU。
為了獲得最佳效能,DLL 應該:
- 大小低於 200 KB
- 將配置保持在最小值
- 能夠在 4 毫秒下從 pfnQueryDListForApplication2 傳回 。
註冊 dList DLL
UMD 會在其 INF 檔案的登錄機碼 UserModeDListDriverName 和 UserModeDListDriverNameWow 下提供小型 dList DLL 的名稱,後者位於 Wow64 登錄專案下。 以下是範例 INF 程式代碼:
[Xxx_SoftwareDeviceSettings]
...
HKR,, UserModeDListDriverName, %REG_MULTI_SZ%, dlistumd.dll
HKR,, UserModeDListDriverNameWow, %REG_MULTI_SZ%, dlistumdwow.dll