离散图形处理单元(GPU)通常只有一小部分通过 PCI 总线公开的帧缓冲区。 为了与 32 位作系统兼容,离散 GPU 通常为其帧缓冲区声明 256 MB I/O 区域。 此值用于典型固件的配置。
在支持可调整大小的基址寄存器(BAR)的 GPU 上,Windows 在 Windows 显示驱动程序模型 (WDDM) v2 及更高版本中的固件初始化后重新协商 GPU 的 BAR 的大小。 有关可调整大小的 BAR 的详细信息,请参阅 PCI SIG 规范库中的可调整大小的 BAR 功能规范。
支持可调整大小的 BAR 的 GPU 必须确保显示器在 BAR 的重新编程过程中继续显示静态图像。 在此过程中,屏幕不应熄灭或闪烁。 务必在固件所显示的图像、启动加载程序映像和内核模式驱动程序生成的第一个映像之间实现平滑过渡。 重新协商进行时,不会执行任何 PCI 事务到 GPU。
重新协商对于内核模式驱动程序来说几乎是不可见的。 重新协商成功后,内核模式驱动程序会检测到 GPU BAR 已被调整到其最大值,以展示离散 GPU 的整个 VRAM。
成功调整大小后,内核模式驱动程序应向视频内存管理器公开单个 CPUVisible 内存段。 当 CPU 需要访问内存段的内容时,视频内存管理器会将 CPU 虚拟地址直接映射到此范围。 有关详细信息,请参阅 DXGK_SEGMENTFLAGS 结构 - CPUVisible 成员。