# 虚拟机里的显卡：直通、DDA 与 Windows 来宾能用到什么

> 把显卡交给 Windows 虚拟机的三种方式、各自支持什么，以及决定它能否启动的 IOMMU/vBIOS 问题。

**测试环境**

- 版本号: 26300.9457 / 26100.33650
- 版本: Pro (26H2) / Server
- 架构: x64
- 证据: E1
- 核验日期: 2026-10-29

## 一句话结论

"虚拟机里的显卡"有三种完全不同的东西，不能互换：

| 方式 | 来宾拿到什么 | 典型用途 |
|---|---|---|
| **DDA**（离散设备分配） | 一整块物理显卡，独占 | Hyper-V、工作站虚拟机 |
| **完整 PCIe 直通** | 一整块物理显卡，独占 | Proxmox/KVM、游戏虚拟机 |
| **虚拟 GPU（vGPU/GPU-P）** | 受支持显卡的一个切片 | VDI、多会话 |

三种情况下来宾都看到真实显卡驱动，宿主都失去这张卡（vGPU 除外，它需要授权且限定平台）。

## 决定能否成功的条件

1. 固件与 hypervisor 都开启 **IOMMU**。没有它就没有直通。
2. **显卡必须独占一个 IOMMU 组**——与芯片组或网卡同组就无法隔离。
3. **来宾需要该卡的驱动**——与裸机同一个驱动。
4. **vBIOS**——部分消费级卡在虚拟机里不初始化，除非提供 vBIOS 或厂商开关。
5. 配置过程中这张卡**不能是宿主唯一的显示输出**。

```powershell
Get-PnpDevice -Class Display | Select-Object FriendlyName,Status,InstanceId
Get-CimInstance Win32_VideoController | Select-Object Name,DriverVersion,AdapterRAM
```

来宾里的 `InstanceId` 仍像 PCI 设备，这在直通下是正常的。`Status : Error` 通常意味着驱动绑上了但卡没初始化。

## Windows Server 来宾：DDA 的具体要求

DDA 是 Hyper-V 上受支持的路径：

- 显卡从宿主**卸载**并分配给一台虚拟机；
- 分配/移除时虚拟机必须**关机**；
- 来宾**内部**要装厂商驱动；
- 部分服务器 GPU 支持分区（GPU-P），需要厂商支持与授权。

DDA 不是"显卡共享"：一张卡，同一时刻一台虚拟机。

## 桌面来宾：能期待什么

- **游戏**：KVM + vBIOS + 宿主用另一张卡时效果不错；延迟取决于显示路径（looking-glass、HDMI 直通，或直通卡上直接接显示器）。
- **计算（CUDA/ROCm）**：通常最简单——不需要显示路径。
- **视频编码**：需要来宾内的厂商编码器支持；部分消费级驱动在虚拟机里禁用编码。

> **警告: 嵌套虚拟化与显卡很难两全**
>
> 把显卡直通给一台还要跑 Hyper-V/WSL2 的虚拟机，通常会失败：内层 hypervisor 需要外层没有暴露的特性。两者都要，就得做选择。

## 常见失败与含义

| 现象 | 常见原因 |
|---|---|
| 带设备时虚拟机起不来 | IOMMU 未开，或设备在共享组里 |
| 来宾能启动，显卡报 43/31 | vBIOS 或驱动拒绝虚拟机 |
| 能用到重启 | 宿主回收了设备，或驱动更新 |
| 宿主失去显示 | 唯一的显卡被分配走了 |
| 性能极低 | 链路宽度/速率降级，或走了软件渲染 |

直通显卡的 43 错误是驱动策略拒绝，不是硬件故障——修复方式因厂商/驱动而异，部分消费级卡根本不支持。

## 投入一晚上之前先确认

```powershell
# 宿主（Proxmox 示例）：IOMMU 是否开启、设备如何分组
# dmesg | grep -e DMAR -e IOMMU
# for d in /sys/kernel/iommu_groups/*; do echo "IOMMU group ${d##*/}"; done
```

Windows 宿主上，设备管理器 → **查看 → 依连接排序设备** 能看出显卡挂在哪个 PCIe 根端口下，对应你要对付的分组。

## 相关

- [虚拟化开关检查](https://winbook.fyi/zh/hardware/cpu/virtualization-flags/)
- [在 Proxmox 上装 Windows 虚拟机](https://winbook.fyi/zh/windows/dev/pve-windows-vm/)
- [WDDM、HAGS 与 MPO](https://winbook.fyi/zh/hardware/gpu/wddm-hags-mpo/)

## 实验室边界

E1。DDA 与 GPU-P 的要求有微软文档依据。实验室宿主没有独显分配给虚拟机，未尝试直通——本文刻意不发布任何性能数字。

## 来源

- [Microsoft Learn — 使用离散设备分配部署设备](https://learn.microsoft.com/zh-cn/windows-server/virtualization/hyper-v/plan/plan-for-deploying-devices-using-discrete-device-assignment)
- [Microsoft Learn — 规划 Windows Server 中的 GPU 加速](https://learn.microsoft.com/zh-cn/windows-server/virtualization/hyper-v/plan/plan-for-gpu-acceleration-in-windows-server)
- [Microsoft Learn — Windows 11 要求](https://learn.microsoft.com/zh-cn/windows/whats-new/windows-11-requirements)

---

来源页面: https://winbook.fyi/zh/hardware/gpu/passthrough/
