Is there a way to share a GPU with a guest VM in the same way we can share a CPU using VT-x/AMD-V?
I would love to run Linux as my daily driver but the common story of Windows support, particularly in gaming (think VR support, anti-cheat engines, etc), is a significant contributor to not jumping over 100% to linux.
I know when running virtual machines you are able to share your CPU completely with the host and there is minimal (if any?) loss in CPU performance. You have to "enable virtualization in the BIOS" and both AMD and Intel have their versions of this.
So my thinking is; if I could have a Linux host, run Windows in a VM and share my CPU/GPU, I could effectively relegate Windows to being a dedicated API layer (essentially being the reverse of WSL2).
My specific case is I have a 5700xt GPU and a AMD 5900x CPU. I can't pass through the entire GPU as I don't have a second.
Do GPUs support such a feature? Is it something specific to one brand (AMD/Nvidia)? If it doesn't, why does it not exist?
Yes, this exists, though it's vendor-specific (just like CPU virtualization) and it tends to be limited to a separate product line – both AMD and NVIDIA have separate "data center" or "virtualization-oriented" products. The audience seems to be mostly companies which use virtualization for centrally hosting everyone's workstations (i.e. thin client stuff).
Intel seems to be an exception here, as their GVT-g feature for CPU-integrated graphics appears to be officially available on pretty much all 5th-gen or newer CPUs (according to their official GitHub). It also works on Linux hosts.
(Though for NVIDIA, the necessary hardware seems to exist on some consumer GPUs as well, but is only accessible through a hack.)
- NVIDIA: https://www.nvidia.com/en-us/data-center/virtual-solutions/
- AMD "MxGPU": https://www.amd.com/en/graphics/workstation-virtual-graphics
- Intel "GVT-g": https://01.org/igvt-g/documentation/intel-virtual-gpu-delivers-virtualized-graphics