VirtualBox 中的 VBoxVGA、VMSVGA 和 VBoxSVGA 有什么区别?

Ash*_*ark 218 virtualbox display vga adapter

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

  • 没有任何
  • VBoxVGA
  • VMSVGA
  • VBoxSVGA

在用户手册中,我找到了以下信息:

图形控制器:指定来宾 VM 使用的图形适配器类型。请注意,您必须在来宾 VM 上安装来宾添加以指定 VBoxSVGA 或 VMSVGA 图形控制器。以下选项可用:
– VBoxSVGA:使用 Linux 或 Windows 7 或更高版本的新 VM 的默认图形控制器。与传统 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          ?
????????????????????????????????????????????????????????????
Run Code Online (Sandbox Code Playgroud)

我还注意到,通过 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 |
+----------+----------------+--------------+
Run Code Online (Sandbox Code Playgroud)

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

use*_*686 177

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

VBoxVGA

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

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

这个选项可能只是为了提供连续性——升级到 6.0 后,所有旧的 VM 都会自动选择这种模式,因此行为不会发生意外变化;您不会失去之前拥有的任何加速度。

VMSVGA

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

  • 与手册中所说的相反,这是当前 Linux 客户机的默认设置。
  • 它应该提供比旧方法更好的性能和安全性。
  • 这由使用SVGA 驱动程序的主线 Linux 内核支持。
  • 在所有 Windows 和 Linux 客户机上支持 OpenGL 2.1。
  • 它还可能具有支持旧操作系统的优势,这些操作系统具有 VMware 来宾添加可用但不支持 VirtualBox 来宾添加。(我计划在 Windows 9x 上测试这个,否则即使 VESA 图形与 VirtualBox 一起工作也是一个巨大的痛苦)

VBoxSVGA

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

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

“没有任何”

显然,这根本不是模拟图形。只有当你通过PCI直通提供一个真正的GPU,或者如果你的系统绝对不会使用它需要一个GPU。

来源

  • &lt;https://www.virtualbox.org/browser/vbox/trunk/src/VBox/Devices/Graphics/DevVGA.cpp&gt;; 请注意 VBoxSVGA 和 VMSVGA 如何导致“VMSVGAEnabled=true”和“VMSVGA3dEnabled=${3DEnabled}”,它们之间的唯一区别是“VMSVGAPciId”。 (2认同)
  • 从大约 Linux 4.14 开始,drivers/staging/vboxvideo 支持 @galgaesh VBoxVGA。 (2认同)
  • @Willtech:显然没有;它仍然有某种翻译器。我 _was_ 以前的印象是它没有,但实际上不可能那样,因为它会在尝试绘制任何内容时立即破坏主机屏幕内容。 (2认同)

Mok*_*bai 31

但是它们确实明确地告诉您何时应该更喜欢它们:

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

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

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

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

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

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

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

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


Luc*_*Luc 16

性能是一种差异。测试glxgears,我得到:

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

在第一次产生 VBoxVGA 弃用警告之前,来宾添加已经从 Debian 存储库更新,所以我可以切换它而无需先更新。使用dpkg -l | grep virtualbox.

来宾添加的是 version 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 和嵌套分页。

  • 我猜这很大程度上取决于主机和来宾系统。我在 Windows 10 i3 第三代 Probook 和带有 LXDE 的 Debian Buster guest 上运行 VirtualBox 6.1.18,glxgears 在未启用 3D 加速的情况下使用 VBoxVGA 显示 ~600 fps,VMSVGA 仅显示 ~500 fps。当启用 3D 加速时(HD Graphics 4000 并不真正支持),两者都会变得慢得多,约 190 和约 170 fps,VBoxVGA 仍然更快。顺便说一句,所有测试都使用 xserver-xorg-video-vmware 显示驱动程序进行测试,该驱动程序也奇怪地用于 VBoxVGA 适配器。因此,如果性能对于虚拟机显示器上的操作很重要,请自行测试。 (3认同)