可调整大小 BAR 的系统和驱动程序支持
目前, (GPU) 的离散图形处理单元通常只通过 PCI 总线公开其帧缓冲区的一小部分。 为了与 32 位 OS 兼容,离散 GPU 通常为其帧缓冲区声明 256 MB I/O 区域,这就是典型固件配置它们的方式。
在支持可调整基址寄存器 (BAR) 的 GPU 上,Windows 将在 Windows 显示驱动程序模型 (WDDM) v2 及更高版本的固件初始化后重新协商 GPU BAR 的大小。 有关可调整大小的 BAR 的详细信息,请参阅 PCI SIG 规范库中的可调整大小的 BAR 功能规范。
支持可调整大小的 BAR 的 GPU 必须确保它可以在 BAR 的重新编程期间保持显示状态并显示静态图像。 在此过程中,显示器不应为空,然后备份。 请务必在固件显示的映像、启动加载程序映像和内核模式驱动程序生成的第一个映像之间顺利过渡。 请注意,在进行重新协商时,不会对 GPU 发生 PCI 事务。
此重新协商对内核模式驱动程序大多不可见。 重新协商成功后,内核模式驱动程序将观察到 GPU BAR 已调整到其最大大小,以公开离散 GPU 的整个 VRAM。
成功调整大小后,内核模式驱动程序应向视频内存管理器公开单个 CPU 可见 内存段。 当 CPU 需要访问内存段的内容时,视频内存管理器会将 CPU 虚拟地址直接映射到此范围。