VGA接口

VGA接口

VirtualBox 6.0 提供了一个名为“图形控制器”的新设置。有四个选项可供选择:

  • 没有任何
  • VGA接口
  • 虚拟视频图形卡
  • VGA接口

在用户手册中我发现了以下信息:

图形控制器:指定客户虚拟机使用的图形适配器类型。请注意,您必须在客户虚拟机上安装客户机附加组件才能指定 VBoxSVGA 或 VMSVGA 图形控制器。以下选项可用:
– VBoxSVGA:使用 Linux 或 Windows 7 或更高版本的新虚拟机的默认图形控制器。与旧版 VBoxVGA 选项相比,此图形控制器提高了性能和 3D 支持。
– VBoxVGA:将此图形控制器用于旧版客户操作系统。这是 Windows 7 之前 Windows 版本的默认图形控制器。
– VMSVGA:使用此图形控制器模拟 VMware SVGA 图形设备。
– 无:不模拟图形适配器类型。

但它仍然没有描述其中哪一个以及为什么我应该选择它们。
什么时候我应该选择无?
VMSVGA 比 VBoxSVGA 更好吗?
VBoxVGA 有什么问题?

我已经在 efi 和传统模式下使用 virtualbox 6.0.4 测试了 archlinux-2019.02.01-x86_64.iso 的启动:

┌──────────┬─────────────────────────────────┬─────────────┐
│ Adapter  │            EFI mode             │ Legacy mode │
├──────────┼─────────────────────────────────┼─────────────┤
│ VBoxVGA  │ ok                              │ ok          │
│ VMSVGA   │ ok in systemd-boot menu,        │ ok          │
│          │ then black screen for some time │             │
│          │ when booting, then becomes ok   │             │
│ VBoxSVGA │ black screen                    │ ok          │
└──────────┴─────────────────────────────────┴─────────────┘

我还注意到,使用 VMSVGA 和 VBoxSVGA 传递 video=XRESxYRES 参数时会被忽略:

+----------+----------------+--------------+
| Adapter  |    EFI mode    | Legacy mode  |
+----------+----------------+--------------+
| VBoxVGA  | works          | works        |
| VMSVGA   | doesn't work   | doesn't work |
| VBoxSVGA | could not test | doesn't work |
+----------+----------------+--------------+

但是仍然可以使用 fbset 在启动后设置一些被忽略的分辨率。

答案1

根据我在源代码中发现的内容:

VGA接口

这模拟了 VirtualBox 特定的图形适配器,与以前的版本(<6.0.0)相同。

  • 这是为以前版本的 VirtualBox(<6.0.0)和 Windows 7 之前的 Windows 客户机创建的映像的默认设置。
  • 它具有某种形式的 3D 直通,但是 - 如果我没记错的话 - 它使用了一种不安全的方法,只是让客户机将任何和所有命令转储到主机 GPU。
  • 在 Linux 客户机上使用它需要安装客户机附加组件,因为主线 Linux 内核尚不支持此适配器。
  • 仅支持 64 位 Windows 10 和所有 Linux 客户机上的 OpenGL 1.1。

此选项可能只是为了提供连续性——升级到 6.0 后,所有旧虚拟机都会自动选择此模式,因此不会出现意外的行为变化;你不会失去你所需的任何加速度之前有。

虚拟视频图形卡

这使用“VMware SVGA 3D”加速方法模拟 VMware Workstation 图形适配器。

  • 与手册所述相反,这是当前 Linux 客户机的默认设置。
  • 它应该提供比旧方法更好的性能和安全性。
  • 这是由主线 Linux 内核支持的,使用SVGA 驱动程序
  • 在所有 Windows 和 Linux 客户机上支持 OpenGL 2.1。
  • 它还可能具有支持旧操作系统的优势,这些操作系统具有 VMware 客户机添加功能,但没有 VirtualBox 客户机添加功能。(我计划在 Windows 9x 上进行测试,否则即使是 VESA 显卡也很难与 VirtualBox 协同工作)

VGA接口

这提供了一种像 VMSVGA 一样工作的混合设备(包括其新的 3D 加速功能),但报告与 VBoxVGA 相同的旧 PCI VID:PID。

  • 这是 Windows 客户机的默认设置。
  • 这种模式的优点是,您可以升级现有的虚拟机(以前使用 VBoxVGA 并安装了 VirtualBox 视频驱动程序),并且它们不会在升级过程中丢失图形 - 它们仍然可以看到相同的设备,直到您稍后升级“客户添加项”以启用 3D 加速。
  • 此外,由于它仍然是 VMware SVGA模仿通过 VirtualBox,选择此选项并使用 VirtualBox 驱动程序可能仍然比 VMware 驱动程序有优势,例如允许使用 VirtualBox 特定的附加功能。

“没有任何”

显然,这根本不是模拟图形。仅当您通过 PCI 直通提供真实 GPU 时才使用它,或者您的系统绝对没有需要GPU。

来源

答案2

但他们明确地告诉你什么时候应该选择它们:

– VBoxSVGA:使用 Linux 或 Windows 7 或更高版本的新 VM 的默认图形控制器。与旧版 VBoxVGA 选项相比,此图形控制器提高了性能和 3D 支持。

  • Linux 或 Windows >7
  • 提高性能和 3D 支持

– VBoxVGA:将此图形控制器用于旧版客户操作系统。这是 Windows 7 之前 Windows 版本的默认图形控制器。 

  • (推断)性能略低,但与旧操作系统的兼容性更好
  • 旧操作系统或 Windows < 7

– VMSVGA:使用此图形控制器模拟 VMware SVGA 图形设备。 

  • 模拟 VMWare 设备
  • 最好是你的虚拟机最初是在 VMWare 上设置的,并且安装了他们的工具
  • 可能不如 VBox 卡快,因为它试图与其他东西兼容。

– 无:不模拟图形适配器类型。

  • 您不需要图形适配器
    ,即您想要以无头方式或通过 SSH 运行机器,并且不需要模拟图形的开销。
  • 可以提高性能,因为它删除了一层或模拟

答案3

性能是其中一个区别。使用 进行测试glxgears,我得到:

  • VBoxVGA:60fps +/- 2(非常低,但移动窗口并不流畅,所以似乎是合理的)
  • VMSVGA:1570fps +/- 50(重启后,我得到 1300fps +/- 200?!)
  • VBoxSVGA:970fps +/- 30(在此模式下,Cinnamon 警告我桌面环境的图形正在 CPU 上运行)

在第一次产生 VBoxVGA 弃用警告之前,Debian 存储库中已经更新了客户添加项,因此我可以直接切换它而无需先进行更新。使用 检查您的版本dpkg -l | grep virtualbox

客户添加的版本是6.0.4、mesa-utils(包含 glxgears)8.4.0-1+b1,基本操作系统是带有 Cinnamon 的 Debian 10(Buster)。

VM 启用了 PAE/NX、3D 加速但没有 2D 加速、分配了 2 个 CPU(主机有 2 个内核,每个内核有 2 个线程)、PV 默认、启用 VT-x/AMD-V 并且嵌套分页。

答案4

VGA接口无法识别CustomVideoMode1[1] 设置,只能虚拟视频图形卡认识并应用它们。

这可能是 wayland 和 swayvm 的问题,谁知道呢;无法找到更好的解决方案。

[1]https://www.virtualbox.org/manual/ch09.html#customvesa

相关内容