What I don't get, which this article doesn't talk about, why would Apple’s Virtualization.framework expose a lesser Metal profile instead of reporting all capabilities supported by the host GPU?
All M-series chips support Metal 4. Wonder if we can fix this with a simple override somewhere.
QEMU/kvm does this as a default, because keeping a more generic CPU / etc makes moving VMs between machines with different hardware possible. If you try to move a VM it won't work, of course, if the new machine doesn't support what the old did.
Not sure of this is why Apple does it. With KVM, you tend to pick a baseline that all your machines support.
Because nobody knows.
Apple doesn't let you "pass" the GPU through to a VM like most other ARM/x86_64 processors (forwarding interrupts and PCIe memory regions). There are symbols defined to do this within the kernel (if you dump the binary) but they aren't used in retail macos.
Instead you end up creating a paravirtual device that emulates the GPU acting like a 'normal PCI device' which you give to clients. This is usually reserved (by other hardware vendors) for when you're doing multi-tenat time sharing of higher end GPUs (like Nvidia enterprise cards can do).
These paravirtualized GPUs then just have 'less features' and Apple (being Apple) states no reason why.