混合系统 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) 及更高操作系统版本上,混合系统上的用户模式显示驱动程序 (UMD) 必须支持 pfnQueryDListForApplication2 DDI,这将取代 pfnQueryDListForApplication1,无论它是否实现对 CASO 的支持。
设置 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