For a somewhat alternative if you want to run both Linux and Windows, you can run Linux natively and then run Windows in a VM with GPU passthrough. Then you can use Looking Glass which sends the Windows pixels to a Linux window with native performance. For the Linux machine, you can run it as a host or use something like Proxmox as a hypervisor if you need more VMs or containers. I use this setup to run Windows, macOS and Linux simultaneously, macOS mostly for iOS development.
This sounds really fantastic. Can you explain a bit more about the hardware requirements? If I have a decent notebook with an Intel-integrated GPU, how can I both passthrought the GPU to the VM and use it for rendering the GUI on the host?
It won't really work for laptops, at least without a lot of research and fiddling. You need a desktop with at least one GPU, for the guest. If you want to run the host as GUI, instead of headless, then you need a GPU for the host as well. You can shut down each guest and boot up another one but generally you'll need a GPU for each guest you want to run with a GUI, if you want proper hardware acceleration and if you want to run them simultaneously. I run on a 4 GPU system for example, one for the host and 3 for each OS.
However, for certain Intel systems, there is something called GVT-g which allows sharing one GPU with both the host and guest, as you mentioned. You can try that and see if it works, I'm not sure if it does on a laptop. Or if you don't really need GPU acceleration, just make a VM as you normally would. I suspect since you don't say whether the notebook has a dedicated GPU that you don't game and thus wouldn't necessarily need GPU acceleration.
"for certain Intel systems" makes it sound rare. https://wiki.archlinux.org/index.php/Intel_GVT-g says, anything Broadwell and up should work, so any device from 2015+ should work for creating vGPUs, and thus be able to use native acceleration at host and vm-guest level!
Do you, or anyone, happen to know, if WSL2 (=HyperV), or any other Hypervisor on Windows supports GVT-g (well), so that (wsl2) linux applications running on-guest can benefit from hardware assisted rendering?
WSL 2 does not support GPU pass through currently. I'm not sure if Hyper V does either, but this seems like it will change soon due to Windows 10 X. There has been development where for emulated Win32 apps they do use GPU / hardware acceleration. Sadly, with the the Neo being delayed past 2020, we might not see it until next year.
I wasn't aware Intel still made "Desktop-AddIn cards", or that the Non-Mobile versions are in any relevant way different to the mobile versions. In any case, the page I linked above does not seem to draw a distinction. So I assume, mobile versions are good to go too. Heard/read about differing experiences?
I have it setup on my Thinkpad T580, seems to work fine enough. I do get the occasional visual corruption with it but it works well enough for me to run things like Luminar and other photo editing things that need hardware acceleration. It doesn't seem to work reliably with video encoding, which might just be a driver issue somewhere that I haven't found a solution for yet.
In a World where virtualization has allowed to run several virtual machines on one physical machine (not even high-end) for 15+ years, it looks like a strange concept to need one physical piece of hardware per VM.
I actually understand why it makes sense, simplification and best performance for GPU intensive context, yet it feels like "let's virtualize, not really".
The real reason is money, as it usually is. Nvidia and AMD GPUs can in fact split their resources per VM - if only you buy their enterprise/research versions of their cards, like Quadro and Firepro. Most people have no need of VM GPU passthrough, so they don't support it for consumer cards. Intel does because they are not really in the graphics space (not yet anyway, we'll see how Xe does).
With Linux 4.16+ and an Intel Card of age Broadwell or newer (~2015+) you can use this howto: https://wiki.archlinux.org/index.php/Intel_GVT-g. Adapt from Arch Linux if you have something else.
I'm glad someone brought this up. I'm about to build a new rig and was hoping to make it compatible with Looking Glass (I can buy any hardware I need since it's a fresh build), but I can't make sense of the hardware requirements.
I was planning on an AMD GPU, since nvidia famously has bad Linux support and I don't want the driver headaches.
You'll notice they specifically say "passthrough gpu." What you use on the Linux side and what you passthrough don't have to be the same and probably shouldn't be. I'd optimize for the use cases you have, also as much as I truly hate to give this recommendation: youtube has a lot of resources on shit like this (because I hate having to watch a video for something I could read).
Also, you might want to really think about the GPU and its use-cases, newer isn't always better, because there are some specific ones you can buy that'll let you also run another OS 10 in a VM effortlessly :)
At the end of the day this all pretty much powered by Qemu, KVM, and virtio. So if you can't find a resources for "looking glass" then just go to one of the the sources above...
Prop nVidia has fantastic Linux support. I have been running GTX 1060 for about 3 years driving 5 4K screens on Debian 8, 9, and now 10, including video playback with no tearing. Rarely when a card experiences a crash after being fed a corrupt h264 chuck, it freezes for 10-20 seconds but it recovers by itself.
The open source driver... the open source driver crashes at least one a week driving two monitors. I gave up on it.
It only works with a Linux host and Windows guest. I posted this on HN as well, and I wrote that there have been rumors that Apple might implement something similar due to development happening with virtIO drivers in macOS, so perhaps you may not have to wait long for a macOS host running Windows.
I ran the 3 OS using a Proxmox (Linux) host and three guest VMs.
Yes that's actually what Looking Glass was mainly built for, you can game without using a program like Barrier or Synergy to pass inputs back and forth, and you can game on one window and have your work on the other, so context switching is a lot easier. Performance is basically 95%+ of native speed.
https://looking-glass.hostfission.com