50

VirtualBox 6.0 provides a new setting called Graphics Controller. There are four options to choose from:

  • None
  • VBoxVGA
  • VMSVGA
  • VBoxSVGA

In the user manual I have found this information:

Graphics Controller: Specifies the graphics adapter type used by the guest VM. Note that you must install the Guest Additions on the guest VM to specify the VBoxSVGA or VMSVGA graphics controller. The following options are available:
– VBoxSVGA: The default graphics controller for new VMs that use Linux or Windows 7 or later. This graphics controller improves performance and 3D support when compared to the legacy VBoxVGA option.
– VBoxVGA: Use this graphics controller for legacy guest OSes. This is the default graphics controller for Windows versions before Windows 7.
– VMSVGA: Use this graphics controller to emulate a VMware SVGA graphics device.
– None: Does not emulate a graphics adapter type.

But still it does not describe which of them and why should I prefer.
When should I choose None?
Is VMSVGA better than VBoxSVGA?
What is wrong with VBoxVGA?

I have tested booting of archlinux-2019.02.01-x86_64.iso with virtualbox 6.0.4 in efi and legacy modes:

┌──────────┬─────────────────────────────────┬─────────────┐
│ 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          │
└──────────┴─────────────────────────────────┴─────────────┘

Also I have noticed that with VMSVGA and VBoxSVGA passing video=XRESxYRES parameter is ignored:

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

But it is still possible to set some of that ignored resolutions after boot with fbset.

  • I would not recommend using EFI in a virtual machine unless you absolutely need to. It is useless overhead. – Bachsau Mar 28 at 0:52
48

Based on what I've found in the source code:

VBoxVGA

This emulates a graphics adapter specific to VirtualBox, the same as in previous versions (<6.0.0).

  • This is the default for images created for previous versions of VirtualBox (<6.0.0) and for Windows guests before Windows 7.
  • It has some form of 3D passthrough, but – if I remember correctly – uses an insecure approach that just lets the guest dump any and all commands to the host GPU.
  • Using it on a Linux guest requires installing the guest additions because this adapter is not (yet) supported by the mainline Linux kernel.
  • Only supports OpenGL 1.1 on 64bit Windows 10 and all Linux guests.

This option likely exists just to provide continuity – after upgrading to 6.0, all old VMs have this mode selected automatically so there's no unexpected change in behavior; you don't lose whatever acceleration you previously had.

VMSVGA

This emulates the VMware Workstation graphics adapter with the "VMware SVGA 3D" acceleration method.

  • Contrary to what the manual says, this is currently the default for Linux guests.
  • It is supposed to provide better performance and security than the old method.
  • This is supported by the mainline Linux kernel using the SVGA driver.
  • Supports OpenGL 2.1 on all Windows and Linux guests.
  • It might also have the advantage of supporting old operating systems which had VMware guest additions available but not VirtualBox guest additions. (I plan to test this with Windows 9x, which is otherwise a massive pain to get even VESA graphics working with VirtualBox)

VBoxSVGA

This provides a hybrid device that works like VMSVGA (including its new 3D acceleration capabilities), but reports the same old PCI VID:PID as VBoxVGA.

  • This is the default for Windows guests.
  • The advantage of this mode is that you can upgrade existing VMs (which previously used VBoxVGA and had the VirtualBox Video driver installed) and they don't lose their graphics in the process – they still see the same device, until you upgrade the "guest additions" at any later time to enable 3D acceleration.
  • Also, because it's still VMware SVGA emulated by VirtualBox, choosing this option and using the VirtualBox driver may still have advantages over the VMware one, e.g. allow to make use of VirtualBox-specific additional features.

"None"

This is, obviously, no emulated graphics at all. Only use it if you provide a real GPU via PCI passthrough, or if your system absolutely doesn't need a GPU.

Sources

  • Source link please. – Biswapriyo Feb 8 at 4:51
  • 1
    <virtualbox.org/browser/vbox/trunk/src/VBox/Devices/Graphics/…>; note how both VBoxSVGA and VMSVGA result in VMSVGAEnabled=true and VMSVGA3dEnabled=${3DEnabled}, with the only difference between them being VMSVGAPciId. – grawity Feb 8 at 5:40
  • Cool – Pimp Juice IT Feb 10 at 4:07
  • 1
    @galgaesh VBoxVGA is supported by drivers/staging/vboxvideo as of approximately Linux 4.14. – grawity Feb 15 at 15:12
  • 1
    @Willtech: Apparently no; it still has a translator of some sort. I was previously under the impression that it didn't, but it couldn't actually be that way, since it'd just corrupt the host screen contents as soon as it tried to draw anything. – grawity Mar 18 at 10:20
10

But they do tell you quite explicitly when you should prefer them:

– VBoxSVGA: The default graphics controller for new VMs that use Linux or Windows 7 or later. This graphics controller improves performance and 3D support when compared to the legacy VBoxVGA option.

  • Linux or Windows >7
  • improves performance and 3D support

– VBoxVGA: Use this graphics controller for legacy guest OSes. This is the default graphics controller for Windows versions before Windows 7. 

  • (by inference) slightly lower performance but more compatibility with older OSes
  • Old OS or Windows < 7

– VMSVGA: Use this graphics controller to emulate a VMware SVGA graphics device. 

  • Emulates a VMWare device
  • probably best when your VM was originally set up on VMWare and has their tools installed
  • may not be as fast as VBox cards because it's trying to be compatible with something else.

– None: Does not emulate a graphics adapter type.

  • you don't want a graphics adapter
    i.e. you want to run the machine headless or over SSH and don't need the overhead of it emulating graphics.
  • could improve performance as it removes a layer or emulation

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.