-
-
Notifications
You must be signed in to change notification settings - Fork 114
GPUPV
-
GPU-PV全称为GPU paravirtualization,中文名叫做GPU半虚拟化。此功能自从WDDM 2.4开始提供,这同时意味着,虚拟机和宿主的系统版本一定不能低于17134,否则没有任何实现的可能。
-
目前没有找到办法可以限制虚拟机GPU的资源使用,Set-VMGpuPartitionAdapter的设定参数并不会起到任何实质性作用。因此,在找到有效的方法前,不会提供资源分配功能。Nvidia的Grid驱动可以分割资源,但是它需要不菲的授权费。
-
通过GPU-PV创建的逻辑适配器,仅仅是从系统层面模拟物理适配器,但对于物理适配器独特的注册表参数、硬件特征、驱动特征并没有很好地继承。因此,如果您尝试打开的软件/游戏依赖于这些特殊的标志,很可能出现错误,需要针对性的魔法修复。
-
接下来介绍 WDDM 半虚拟化设计中涉及的各种组件。

- 以下是Windows版本和WDDM版本的对应关系,WDDM版本越高,GPU-PV的功能就越完善。
| Windows版本 | WDDM版本 | 虚拟化相关功能更新 |
|---|---|---|
| 17134 | 2.4 | 引入了基于 IOMMU 的 GPU 隔离。 |
| 17763 | 2.5 | 增强了虚拟化的支持,使得宿主和来宾之间的资源句柄管理和事件信号化,用户模式驱动(UMD)和内核模式驱动(KMD)能够更好地协同工作。 |
| 18362 | 2.6 | 提升了显存管理。虚拟机显存优先分配在GPU连续的物理显存,能收到内存的驻留状态。 |
| 19041 | 2.7 | 虚拟机设备管理器可以正确识别Microsoft Virtual Renderer Driver所对应的物理显卡型号。 |
| 20348 | 2.9 | 增加了支持跨适配器资源扫描输出(CASO)功能,渲染适配器的画面可以直接输出到显示适配器,而无需进行两次复制,降低了延迟和带宽需求。 |
| 22000 | 3.0 | 通过DMA重映射突破GPU地址限制,允许GPU访问超过硬件限制的更多内存。提高了用户模式驱动(UMD)和内核模式驱动(KMD)的事件信号机制,提升调试能力。 |
| 22621 | 3.1 | 用户模式驱动(UMD)和内核模式驱动(KMD)共享相同的内存区域,减少内存的复制和传输,优化内存的利用效率,提高数据访问速度。 |
| 26100 | 3.2 | 增加了GPU实时迁移功能。增强了图形驱动的超时检测和恢复分析。引入了WDDM功能查询机制。 |
宿主:Win11、Server 2022、Server 2025。
虚拟机:
-
17134以下版本不支持GPU半虚拟化。
-
17134到19040之间的版本(WDDM 2.4-2.6)可以调用GPU,但不会显示正确的显卡型号。
-
从19041版本(WDDM 2.7)开始,可以正常使用GPU功能。
在GPU半虚拟化模型中,虚拟机从宿主机获取到的GPU是作为“渲染适配器”存在的,通常会与作为“显示适配器”的 Microsoft Hyper-V 视频配对进行画面输出。然而,Microsoft Hyper-V 视频仅支持到1080p,刷新率也受到严重限制,因此我们需要一个更好的“显示适配器”。
总共有以下方案可以实现显示信号输出:
Microsoft Hyper-V 视频
这是默认选项,兼容性没有什么问题。资料整理中。
间接显示驱动程序
这是各种串流方案。资料整理中。
USB 显卡(需要DDA直通USB控制器x1)
比较常见的芯片是DL-6950和SM768,以下一组图片描述了渲染适配器(GTX 1050)和显示适配器(DL 6950)联合工作的场景,在144Hz下fortnite几乎无延迟。




-
工具会将宿主驱动导入到虚拟机,HostDriverStore下所有文件将设定为只读属性,以防止任何驱动文件丢失。
-
对于Nvidia,会自动导入宿主系统的nvlddmkm.reg,并修改其中的DriverStore为HostDriverStore。
-
一个虚拟机可以从同一张显卡获得多个逻辑适配器分区,但是总性能不变。
-
一个虚拟机可以从多张显卡获得多个逻辑适配器分区。