Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

Joe Dohn

macrumors 6502a
Original poster
Jul 6, 2020
840
748
Has anyone here tested connecting an eGPU into M1 Parallels?

While Apple says eGPUs are not supported by M1 Macs, eGPUs connected to an M1 Mac are detected. In other systems, if you have a connected device that is incompatible with the host OS but that's compatible with the guest OS, installing the drivers in the guest OS should make it run there.

So, in theory, even if eGPUs don't work with ARM Big Sur, it should be possible to make eGPUs work on the host ARM Windows build (possibly with GPU passthrough).

If no one has tried it, does anyone have an external GPU and is willing to report back to us?
 

Gnattu

macrumors 65816
Sep 18, 2020
1,107
1,671
Apple never implemented PCIe passthrough function in macOS. It's impossible on Intel Macs, and it is not possible on M1 Mac as well.

By the way, ARM windows has a very limited driver set. In other words, Windows on ARM might support even less hardwares than macOS on ARM. Neither AMD nor Nvidia is providing ARM driver for Windows. (Driver for ARM Linux does present though)
 

deconstruct60

macrumors G5
Mar 10, 2009
12,493
4,053
...but that's compatible with the guest OS, installing the drivers in the guest OS should make it run there.
....

So, in theory, even if eGPUs don't work with ARM Big Sur, it should be possible to make eGPUs work on the host ARM Windows build (possibly with GPU passthrough).

Apple's hypervisor framework is limited. It doesn't support IOMMU mappings to guests so there is no PCI-e (GPU) passthrough to leverage. The major issue is that the guest OS doesn't have raw access to devices (that's why it is a guest and not the host).

There might be a Rube Goldberg way of installing a System Extension that claims the external GPU ( since there is no driver in macOS claiming it) as a generic device and then the Parallels VM core code does some mapping between the guest driver and this 'adapter shim' to connect them (via some hops/redirect . ) Even if got that 'contraption' into the "happens to work" stage, it seems likely to be pretty brittle (hot plug events , low level quirks driver lowest level driver timing, etc. )

The other problem with a contraption is that if Apple later upgrades their hypervisor to be more robust... ( passthrough like most serious Type 1 hypervisors ) then Parallels would have sunk lots of effort into something with a relatively very short lifespan.

If Apple is going "all in" on virtualization being the only option ... then they need to evolve their hypervisor framework over time. What they have is extremely minimal relative to what is current common feature set.
 

deconstruct60

macrumors G5
Mar 10, 2009
12,493
4,053
By the way, ARM windows has a very limited driver set. In other words, Windows on ARM might support even less hardwares than macOS on ARM. Neither AMD nor Nvidia is providing ARM driver for Windows. (Driver for ARM Linux does present though)

Microsoft rolling out an increasingly larger number of ARM servers in AZURE (that are GPU less) should prove to be a bigger discrete GPU driver demand than "super ultramobile " laptops that all have integrated GPUs (and no basic need for a discrete GPU) and also have no Thunderbolt ports (nothing for the eGPU to connect to). [ The laptop Windows ARM market looks just like the Apple Developer Kit; a giant show stopper blocker for Thunderbolt devices. So should be no shock at all that that subset ecosystem has stunted development. ]

2021 could be a shift. It depends upon what Microsoft is going to focus Azure deployments on. on Linux ... sure. But if they also want to start to offer Windows instances in the cloud that should help substantially with driver demand. That would have a ripple downstream side effect on eGPU if they could get to laptops that had a TB port (and/or an internal, embedded dGPU). For now though, it is really growing the add-in card slots that can optionally be filled with a GPU.


Hypervisors that can pass through PCI-e lanes to a specific card shouldn't be a problem if not using Apple's.

So that lack of driver could uncork before end of Q3 of 2021 depending upon what is in flight now behind the scenes. At least on the Microsft/Azure side.
 

Joe Dohn

macrumors 6502a
Original poster
Jul 6, 2020
840
748
Microsoft rolling out an increasingly larger number of ARM servers in AZURE (that are GPU less) should prove to be a bigger discrete GPU driver demand than "super ultramobile " laptops that all have integrated GPUs (and no basic need for a discrete GPU) and also have no Thunderbolt ports (nothing for the eGPU to connect to). [ The laptop Windows ARM market looks just like the Apple Developer Kit; a giant show stopper blocker for Thunderbolt devices. So should be no shock at all that that subset ecosystem has stunted development. ]

2021 could be a shift. It depends upon what Microsoft is going to focus Azure deployments on. on Linux ... sure. But if they also want to start to offer Windows instances in the cloud that should help substantially with driver demand. That would have a ripple downstream side effect on eGPU if they could get to laptops that had a TB port (and/or an internal, embedded dGPU). For now though, it is really growing the add-in card slots that can optionally be filled with a GPU.


Hypervisors that can pass through PCI-e lanes to a specific card shouldn't be a problem if not using Apple's.

So that lack of driver could uncork before end of Q3 of 2021 depending upon what is in flight now behind the scenes. At least on the Microsft/Azure side.

If NVIDIA / AMD release drivers to the ARM architecture, maybe even sooner. It shouldn't be too hard for Parallels / VMware to create a virtual device to handle the eGPU.

And even if there's no ARM support to those cards anytime soon, they can probably build a basic 3D acceleration driver (e.g, based on OpenGL 3.0). Performance should be less than ideal, but at least it'd be something.
 

Gnattu

macrumors 65816
Sep 18, 2020
1,107
1,671
Hypervisors that can pass through PCI-e lanes to a specific card shouldn't be a problem if not using Apple's.
It will. Because Apple is deprecating classic kernel extensions, and an alternate hypervisor cannot be made without a classic kernel extension. I highly doubt if any company like VMware or Parallel will invest in a technology that Apple will stop support in the future. We have to wait for Apple for now, as macOS is Apple's the walled garden.
 

tdar

macrumors 68020
Jun 23, 2003
2,102
2,522
Johns Creek Ga.
What's Apple's path here? If I had to guess I'd say that Apple is planing to add GPU to AS systems that will make you forget about your eGPU.
 

deconstruct60

macrumors G5
Mar 10, 2009
12,493
4,053
It will. Because Apple is deprecating classic kernel extensions, and an alternate hypervisor cannot be made without a classic kernel extension. I highly doubt if any company like VMware or Parallel will invest in a technology that Apple will stop support in the future. We have to wait for Apple for now, as macOS is Apple's the walled garden.

It won't. Because Apple's Hypervisors is not used in the vast majority of cloud services shops. Those shops won't be running the M1. It is the Hypervisor on ARM server implementations I'm talking about there. The context here is talking about AMD/NVidia drivers coming up on Windows . M1 doesn't primarily define the Windows ARM space at all.

Alternative Hypervisors (like ESXi and the rest of VMware's product catalog besides Fusion (i.e., where the real money is) ) on M1 are in the same sinking boat as any other operating system besides macOS. Apple isn't allowing them to boot onto the RAW hardware. [ There are some hacks that rely on jailbreak hacks but those are likely to close on future iterations of M-series Macs. That isn't a 'business model'. ] None of the ARM server CPU vendors are trying to limit their CPU package to just one OS. Multiple Hypervisors will probably show up in that space. Vastly different ecosystem dynamics.

Apple will/could eventually get some trickle down, upside side-effect while being 'closed' because the other options are open.

Don't really need a classic kernel extension here. The kernel just need to 'ignore' the device while delegating the driver work to the guest OS. Apple's new System extension work by leveraging IOMMU. That is the same basic core mechanism that is needed here. However, the mapping needed to be done is different. System extensions map certain specially designated processes that are "in between" kernel and regular user address space into a narrow subset of kernel address space. What is needed here is to not map the device into the active kernel space at all , but solely into a guest kernel space. it is still basically an IOMMU mapping. However, that isn't going to follow the same object model design or basic implementation of Apple has now. Making that work stably and securely is real work that just isn't being done now. ( e.g., once that device is delegated to the guest OS the other kernel code and user space apps shouldn't be able to get to it either. That is not what System extensions generally do. ).

What Apple is doing is a 'minimal work for them' hypervisor. It isn't a Type 1 ( it is type 2) and they aren't particularly trying to be in the "1.5" zone. It is perhaps closer to being a toolkit to building a hypervisor than actually being one. (e.g. xhyve is "byhve" build on top the framework https://wiki.freebsd.org/bhyve#Q:_Could_bhyve_be_ported_to_other_operating_systems.3F
)

But yes, because Apple is kicking everyone out of the kernel and giving the hypervisor framework as the only path to constructing a hypervisor.... if they don't provide the tools for pass-thru in the over system library framework then the resulting hypervisors will be limited. However, if Apple is going to allow thunderbolt and eventually have a Mac Pro with at least some slots, their framework need to be flushed out over time. Especially, with the whole "virtualization is only path to other OS" dogma. This mapping extension may not make the 'add list" though if the cards/devices Apple completely is very small unit volume in those internal/external slots.

They don't need to extend the kernel, but the kernel just need to do the set up assignment work and then get out of the way. No need for 3rd parties to do the tweak kernel if Apple simply does the delegation work. It is already delegating for System extensions. ( the need for the general concept of drivers didn't drop to zero. ). This is just another "flavor" of delegation. Kernel extensions disappearing isn't completely a "show stopper".
 

bill-p

macrumors 68030
Jul 23, 2011
2,929
1,589
Well, but the gist of it is still that Apple has to provide us with support for such a functionality if we can't rely on kexts.

So in the end, the ball is still in Apple's court whether they want to make this a reality.

And personally, I think it's a very niche use case anyways. Microsoft will need to work with AMD and nVidia to provide ARM64 drivers for the GPUs, on top of Apple needing to provide us with the necessary APIs to implement it in the first place. And even after all of that, a developer still needs to go in and build the custom hypervisor.

I don't think that'll happen. Apple was very clear during their presentation that getting other OSes to function properly on M1 is not a high priority for them. Even their current hypervisor framework is just the bare minimum amount of effort, as you put it. There's no guarantee they will flesh it out further in the future.
 

Gnattu

macrumors 65816
Sep 18, 2020
1,107
1,671
The context here is talking about AMD/NVidia drivers coming up on Windows
My context is if we will have another "type 3 hypervisor" that can map IOMMU by itself. Another "type 2" hypervisor based on hvf is not "alternate hypervisor" to me, just a different frontend of hvf, just like qemu is a front-end of kvm on Linux, and front-end of hvf on macOS. Such 'hypervisor' will ultimately get its capability limited by the kernel.

They don't need to extend the kernel, but the kernel just need to do the set up assignment work and then get out of the way.
They don't need to extend the kernel if and only if the kernel is doing the necessary work, but it is not present now. We have to wait for Apple.
 

deconstruct60

macrumors G5
Mar 10, 2009
12,493
4,053
If NVIDIA / AMD release drivers to the ARM architecture, maybe even sooner. It shouldn't be too hard for Parallels / VMware to create a virtual device to handle the eGPU.

GPU drivers aren't released to the CPU instruction set architecture. They are released to the OS kernel context (that happens to run on a specific CPU context). Apple is already not signing Nvidia drivers on x86_64 + macOS. The GPU vendors aren't the sole arbiters of what driver gets released.

if the macOS kernel doesn't give them access, it will be quite hard. There is a significant gap between just cataloging device IDs of the connected devices and talking to them. The latter requires a driver and if don't have one then not doing much 'talking'. One of the primary points of putting user apps in user address space is just so that they can't just start randomly 'talking' to devices.

There is already a virtual GPU in the Parallels/VWWare solutions. It is a mapping down to the GPU that the applications can "talk" to. But if can't talk to some attached GPU it isn't going to do much good to create a "virtual" version of it.

Apple would need a "System extension to guest OS" mechanism for Parallels / VMWare / etc to build an "pass through adapter" to the guest OS. That is not quite what Apple's System extension framework does now.



And even if there's no ARM support to those cards anytime soon, they can probably build a basic 3D acceleration driver (e.g, based on OpenGL 3.0). Performance should be less than ideal, but at least it'd be something.

Yes. if Apple opens the door to 3rd party discrete GPUs ( either the last remaining non-apple kernel extensions distributed solely through Apple or Apple evolves System extensions to include GPUs too ) then yes the virtual machines could maps those up to the virtual GPU the VM present also. Both implementations already do a virtual GPU that present to OpenGL and DirectX of some version (DirectX 11 or 12 ) to the Windows instances they run.

But for Nvidia GPUs ... highly likely not going to happen.
AMD ... maybe ( depends on a couple of factors including just how small Apple shrinks the addressable dGPU macOS market for AMD. AMD might 'quit'. I think Apple will work out a compromise there though. )
Intel ... even smaller maybe ( can Intel even get their dGPUs "off the ground" to be interesting enough to Apple. )
 

leman

macrumors Core
Oct 14, 2008
19,521
19,677
Anyone with the insider access tried running 3dmark? I would be very curious about the results.
 

Gnattu

macrumors 65816
Sep 18, 2020
1,107
1,671
Apple is already not signing Nvidia drivers on x86_64 + macOS
About this: Apple wrote all its GPU drivers by themselves, including the Intel and AMD drivers
And Apple emphasizes that, they will not allow any 3rd party GPU drivers.
And Nvidia does not like its GPU driver been written by "3rd party" either, look at the nouveau situation right now.
At least one of Apple or Nvidia has to compromise to make Nvidia GPUs work on macOS again.
Given Apple is building their own GPUs, I guess Apple may not be the one who start the negotiation first.
This is off topic, we do not need a fully functional host driver to make the hardware working in guest.
 

Joe Dohn

macrumors 6502a
Original poster
Jul 6, 2020
840
748
If you can make another OS show up seamlessly through RDP on MacOS, another path would be that the eGPU has somehow an internal OS which does the processing and sends the processed image through networking. But it's more convoluted.
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.