找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 922|回复: 10

[分享] QEMU/KVM Windows客户机中实现3D显卡加速的方法

[复制链接]
发表于 2026-10-26 22:53:39 | 显示全部楼层 |阅读模式

在Linux主机上使用QEMU/KVM创建Windows虚拟机的方案已经十分完善了,但唯独在虚拟机内实现半虚拟化3D显卡加速这个问题一直都不好解决,需要很多复杂的方案,有的甚至还需要付费。下面介绍一些实现方案:

1. 显卡直通
将显卡直接分配到虚拟机内,虚拟机直接控制物理显卡硬件,这个方案已经很成熟了,网上也有很多教程,这里不再过多赘述。
参见:ArchWiki PCI GPU passthrough
优点:能发挥显卡的几乎全部性能,并且配置相对简单。
缺点:显卡硬件利用率低,一张显卡只能供一个虚拟机使用,若虚拟机里负载较低,那么空余的显卡资源就白白浪费了。

2. GPU虚拟化
将一张物理显卡划分成多张虚拟显卡,再将虚拟显卡分配给虚拟机,这个方案网上也有很多教程,不再赘述。
参见:ArchWiki GPU virtualization
优点:能发挥显卡的大部分性能,资源利用率比显卡直通高。
缺点:需要显卡支持,并且有的厂商(例如NVIDIA)需要特定型号的专用显卡,还要付授权费用才能使用。

3. 半虚拟化显卡(virtio-gpu)
得益于最近AI编程的发展,virtio-gpu开源显卡驱动已经有了很大的进步,甚至开源VMware SVGA 3D虚拟设备代码也有了进展。
参见:ArchWiki Virgil3d virtio-gpu paravirtualized device driver(过时历史信息)
优点:能发挥显卡大部分性能,并且不依赖厂商的闭源实现。
缺点:实现较为困难,因为缺乏微软WDDM和DirectX的文档,并且需要程序员具有极高的编程水平和显卡驱动开发经验。
3.1 【已弃用,不推荐】max8rr8的virtio-gpu驱动实现
  • 链接:virtio-win/kvm-guest-drivers-windows#943
  • 较早期的virtio-gpu实现,功能较为缺乏
  • 仅支持OpenGL(通过virgl协议传输指令)和Direct3D 10(在mesa gallium内部通过virgl协议传输指令)
  • 有许多bug,经常蓝屏崩溃、图形渲染错误,并且已经很久没有更新了,在最新的virglrenderer上已经无法运行
  • 仅作为一个参考实现,几乎不能实际使用

3.2 【已弃用,不推荐】anonymix007的旧virtio-gpu驱动实现(max8rr8的一个fork)

3.3 arehnman的virtio-gpu实现:Yttrium(max8rr8的一个fork)
  • 链接:arehnman/yttrium-virtio-gpu(主仓库)、arehnman/virtio-win-mesa(mesa代码)、arehnman/yttrium-qemu(修改版qemu代码)
  • 实现Vulkan、Direct3D 9/10/11(在mesa gallium内部通过venus协议传输指令)、OpenGL(通过zink转为vulkan指令执行)
  • 项目积极维护,并且作为桌面3D加速用途已经基本可用
  • 支持Win10/11,提供预编译的驱动包,安装指南详见仓库的README

3.4 anonymix的virtio-gpu实现(KMD从零开始用Rust重写)

3.5 osy的virtio-gpu实现:Neptune(基于anonymix007/kvm-guest-drivers-windows-venus实现)
  • 链接:osy/kvm-guest-drivers-windows(主仓库)、osy/virtio-win-mesa(mesa代码)、osy/dxvk(修改版dxvk代码)、osy/vkd3d-proton(修改版vkd3d代码)
  • 实现Vulkan、Direct3D 9-12(自研Neptune Direct3D序列化协议、Triton DDI转API接口层,将Direct3D命令发送到主机,由主机上的DXVK或VKD3D执行)
  • 项目积极维护,并且已经作为实验性3D加速显卡驱动提供给UTM(Mac上的虚拟机)
  • 支持Win10/11,作者提供预编译的驱动包,并且有有效的数字签名
  • 详细信息在UTM官方博客:Introducing Triton: DirectX 11 driver for QEMU
  • 开发过程中使用大量AI辅助

3.6 winboat的virtio-gpu实现:Helios(Rust全新开发)
  • 链接:winboat-org/helios
  • 实现Vulkan、Direct3D 9-12(通过DXVK翻译成Vulkan执行)、OpenGL、OpenCL
  • 目标支持Win10/11,项目积极维护,在WinBoat社区中内测,预计2026年底发布
  • 不提供说明文档,但在winboat-devenv中能找到由github workflow自动编译的驱动包
  • 开发过程以AI开发为主


3.7 qemu-vmvga:VMware SVGA 3D在QEMU下的实现
  • 链接:qemus/qemu-vmvga
  • 为QEMU实现VMware SVGA虚拟设备代码,将SVGA3D指令通过DXVK执行
  • 项目积极维护,作为桌面加速已经基本可用
  • 兼容VMware官方显卡驱动,支持WinXP以上的所有系统

发表于 2026-10-26 23:04:22 | 显示全部楼层
多谢楼主大佬分享实用的电脑小知识啊
回复

使用道具 举报

发表于 2026-10-27 07:32:56 | 显示全部楼层
有用的资源

评分

参与人数 1无忧币 +5 收起 理由
yyz2191958 + 5

查看全部评分

回复

使用道具 举报

发表于 2026-10-27 07:49:10 | 显示全部楼层
感谢经验分享
回复

使用道具 举报

发表于 2026-10-27 07:50:12 | 显示全部楼层
很不错的方法
回复

使用道具 举报

发表于 2026-10-27 08:46:50 | 显示全部楼层
感谢分享,楼主辛苦,
回复

使用道具 举报

发表于 2026-10-27 11:58:20 | 显示全部楼层
感谢楼主分享
回复

使用道具 举报

发表于 2026-10-27 16:20:34 | 显示全部楼层
感谢分享,试一下。
回复

使用道具 举报

发表于 2026-10-27 17:09:00 | 显示全部楼层
感谢分享
回复

使用道具 举报

发表于 2026-10-28 10:47:39 | 显示全部楼层
有用的资源,好
回复

使用道具 举报

发表于 2026-11-7 07:47:40 | 显示全部楼层
厉害,多谢老大的付出
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|捐助支持|无忧启动 ( 闽ICP备05002490号-1|闽公网安备35020302032614号 )

GMT+8, 2026-11-15 13:04

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表