I've been doing more research on running a Windows VM through QEMU/KVM on Linux, with GPU and USB controller passthrough.
This will allow you to run Linux on your main system, and have a Windows VM that can run ANY Windows software with practically no performance impact.
This is the future, this is what personal computing will be in the future. This is how the Linux desktop will takeover. These features just need to become available for common hardware, and the process of setting this up needs to be made easier.
Basically, you NEED an Intel high-end-desktop (HEDT) motherboard and processor, previously x99 chipset mobos, now x299 chipset mobos. And not even all those mobos have proper IOMMU groupings, and there's not even any way to tell what the IOMMU groups on a motherboard are, unless someone buys the mobo and uploads a review online.
Basically you can only passthrough IOMMU groups to a VM, not actual devices, and on most motherboards, multiple devices are put in one IOMMU group.
For example if you have 2 GPUs, the PCI-e slots they're connected to will need to have different IOMMU groups, on most motherboards, multiple GPUs are put in the same IOMMU group, making passthrough either impossible, or requires you to use a patch which will either not work, or is really shitty if it does work.
The USB controllers will need to be in their own IOMMU group too, so you can pass them through, which you'll need to do if you want low latency for your mouse/keyboard, and working USB devices in the VM.
https://www.youtube.com/watch?v=i2AiRpafxDkPost too long. Click here to view the full text.