>I can only conclude either that they do not see it as a problem, or that they are incapable of fixing it.
They really shot themselves in the foot 10 years ago when they decided to go all-in on making their desktop and server OSes a giant advertisement for their tablets.
Which nobody bought, of course. Didn't help that it took them 4 years to get up to feature parity with what you could do on iOS and Android out of the box (like support for SQLite) or that the sandboxed nature of WinRT/UWP meant that you had to jump through a bunch of extra hoops if you so much dared to save a file to the local machine.
They just haven't recovered from that, have had zero incentive to improve, and it shows (MS lost the mobile OS war just as hard as IBM lost the desktop OS war); workplaces are going to buy licenses no matter what, and home users only got the ability to pass through a subset of consumer-level nVidia GPUs (which IIRC doesn't apply to laptops, so you're still stuck there) to a Windows guest VM thanks to a recent driver hack, and that's only for technically competent users who are running Linux on hardware that isn't cutting edge (yep, it's still a problem for Linux) and who are willing to accept the associated 5% performance penalty.
No free solutions to force MS to clean up their act means they just won't, no matter how many collective years of human life is wasted clicking through 5000 different boxes now.
>and home users only got the ability to pass through a subset of consumer-level nVidia GPUs (which IIRC doesn't apply to laptops, so you're still stuck there)
That's not quite correct any longer. Nvidia now supports passthrough on all consumer GPUs that work with their current driver. This also includes laptops with Nvidia chips and they've been actively fixing bugs and compatibility problems in every driver release since then.
Before official support the Nvidia kernel driver just crashed Windows with a BSOD on my laptop. Then it suddenly worked, but I wasn't able to open the control panel and worse, the HDMI output didn't work. The driver after that fixed those problems. The only things still not working are voltage and power monitoring, although temps work.
Additionally, and I know this is a special case, performance is actually better than on bare metal. The reason is that in a VM I can inject a modded VBIOS with higher power limits and that gives me a nice 15-20% boost. I can't do that on bare metal because the VBIOS is stored in the system firmware and accessed via an ACPI method by the driver. Sadly only signed firmware can be flashed directly and even a flash programmer wouldn't help because at boot the firmware is verified and overwritten by a clean if it doesn't pass. This doesn't matter for desktop chips, but on a laptop you can actually get way more FPS if the power limits are ridiculously low by default! In my case I went from 30W or so to 75W (PCIe limit) and even though clocks stayed the same, games ran much faster. I guess it was hitting power limits and throttled, but didn't down lock because clocks only depend on voltage and available voltage level on temperature. I also ever saw power limits (via AfterBurner OSD) in furmark, but apparently it was also limited in other workloads without indicating it. With the modded VBIOS I don't even see power limits in furmark. It's either voltage or temps.
Perhaps, but the standard VFIO-style passthrough methods (if you can call anything about that "standard") is still a terrible solution; it requires more than one GPU to use both systems at once, requires navigating horrifically underdocumented driver systems that brick the system when experimented with (just like everything in Linux does, for that matter), and requires at the very least switching inputs between the host and the guest even if all of that works perfectly somehow.
Sure, there might not be any more Code 43 (which wasn't the hardest thing to bypass, but you did have to hide the fact that the VM was a VM), but Code 43 was the relative tip of the iceberg compared to all the other setup you had to do to even get there in the first place.
Passing through an nVidia GPU the way that data centers do it, where you can run several hardware-accelerated VMs on the same GPU (as well as the host, on only one set of outputs), to my knowledge still requires this hack (https://github.com/DualCoder/vgpu_unlock); this is specifically what I'm referring to and is really the only workable solution as it's the closest to "press button get seamless performance from your gaming Windows VM" as we can get right now.
I'd be delighted to now be wrong about my assessment of how difficult trying to set that nonsense up was, because then I could do it and stop worrying about how awful the Windows 11 experience is going to be (even GNOME, for all its user-hostility, still isn't stupid enough to ditch the taskbar labels for the full OS X dock; Windows 11 has so far made that shit mandatory).
In my experience the whole VFIO subsystem is quite stable and at least Nvidia hardware can be detached and attached to a different driver without any difficulty. Intel GPUs have trouble being reattached to the host because of driver issues and AMD needs workarounds because of hardware level bugs. Also, if you have a laptop, or a desktop Intel, you already have a perfectly usable GPU that the host can use included in the CPU!
It's true that setting up everything can take some time to get it working, but it depends very much on the hardware. In most cases on a desktop system all you need to do is select the right PCI device in libvirt's GUI and it should work. On laptops you need to hack together a custom OVMF UEFI firmware imagine with the VBIOS included, but there are ways to auto-generate it [1].
Input can be handled in multiple ways, which makes most sense depends on if you want to use dedicated output, or if you want to stream the output back to the host using something like Looking Glass. I just have a virtual qxl GPU in the VM which lets me use the qemu window for input and that works fine.
For audio there is scream[2], which gives me super-low latency 7.1 audio. According to pulseaudio latency is under 2ms in addition to whatever latency Windows itself has. I use a -ck kernel with MuQSS scheduler, the default scheduler won't be able to go that low.
I mean it can be tricky to set up, but if the hardware is capable it shouldn't be more than a weekend project. Once set up it's rock solid stability wise and compatibility is the same as bare metal. Caveat is some online games consider running in a VM cheating, but that doesn't affect me. It's not for everyone, but neither is Linux as a desktop OS
Overall I consider this the holy grail for those that want to primarily run Linux but don't want to give up games or deal with wine/proton issues. Actual dual booting is completely obsolete with GPU passthrough in my opinion. YMMV, depending on what you play and your exact hardware.
They really shot themselves in the foot 10 years ago when they decided to go all-in on making their desktop and server OSes a giant advertisement for their tablets.
Which nobody bought, of course. Didn't help that it took them 4 years to get up to feature parity with what you could do on iOS and Android out of the box (like support for SQLite) or that the sandboxed nature of WinRT/UWP meant that you had to jump through a bunch of extra hoops if you so much dared to save a file to the local machine.
They just haven't recovered from that, have had zero incentive to improve, and it shows (MS lost the mobile OS war just as hard as IBM lost the desktop OS war); workplaces are going to buy licenses no matter what, and home users only got the ability to pass through a subset of consumer-level nVidia GPUs (which IIRC doesn't apply to laptops, so you're still stuck there) to a Windows guest VM thanks to a recent driver hack, and that's only for technically competent users who are running Linux on hardware that isn't cutting edge (yep, it's still a problem for Linux) and who are willing to accept the associated 5% performance penalty.
No free solutions to force MS to clean up their act means they just won't, no matter how many collective years of human life is wasted clicking through 5000 different boxes now.