对于 32 位 OS 离散图形处理单元(GPU),不支持调整大小的 BAR 或调整帧缓冲区栏大小失败时,Windows 显示驱动程序模型 (WDDM) v2 将提供一种替代机制,可通过该机制高效访问离散 GPU VRAM。 对于支持可编程 BAR 地址空间的 GPU,WDDM v2 中引入了一项新的 CPU 主机光圈功能,以抽象这一功能。
公开 CPU 主机光圈时,内核模式驱动程序会为支持 CPU 主机光圈的每个段填充新的 DXGK_CPUHOSTAPERTURE 上限结构。 这定义了 CPU 主机光圈的大小,这允许驱动程序保留某些 BAR 供内部使用。 页面大小与内存段的 GPU 页相同。
然后,内核模式驱动程序公开两个新的设备驱动程序接口(DDI)来管理 BAR 地址空间,特别是 DxgkDdiMapCpuHostAperture 和 DxgkDdiUnmapCpuHostAperture。
CPU 主机光圈后面的页表的内存由驱动程序管理,并在驱动程序初始化过程中提前设置。 DxgkDdiMapCpuHostAperture 和 DxgkDdiUnmapCpuHostAperture 应在段枚举后立即运行,并在视频内存管理器初始化期间使用,以在适配器初始化期间将 CPU 虚拟地址映射到系统分页进程的页目录和页表。
当 CPU 需要访问内存段时,视频内存管理器会在 CPU 主机孔径中保留页面,并通过它映射内存段页面。 下面对此进行了说明。
在链接的显示适配器配置中,除以下情况外,内容类似。
- 默认 或 LinkMirrored 分配始终映射到 GPU0。
- LinkInstanced 分配拥有一个虚拟地址范围,这个范围是 AllocationSize*NumberOfGPUInLink,其中分配的各个部分会被映射到不同的 GPU。
下面对此进行了说明:显示