VMware Communities
adrian_chung
Contributor
Contributor

Fusion 11 (11.0.2) with eGPU - Slow, laggy graphics performance in VM?

Is anyone else using Fusion on a Mac with an eGPU setup?

VMs running Windows 10 for example, are normal when used on the Mac without eGPU connected, using discrete or built-in graphics.  This is on a recent ThunderBolt 3 enabled MacBook Pro.

As soon as I connect a TB3 external GPU to the Mac, and restart the VM, the VM is almost unusable.  Opening Explorer for example happens very slowly, and the window draws so slowly you actually see blocking and pixelation.

Moving the mouse is laggy.  The dot animation when Windows is booting is slow.

I've tried enabling "Prefer external GPU" in Finder for Fusion, and also setting the mks.allowblacklisteddrivers(?) setting in the VMX, no difference.

I've also tried creating a brand new Windows 10 VM with the eGPU connected and enabled, same thing.

Parallels Desktop for what it's worth works fine under the same conditions.  In fact, the same native Fusion VM, opened and converted by Parallels works fine.

Guessing it's a shortcoming on the fusion side, but just wondering if there's a workaround or known issue.

Tags (3)
16 Replies
ColoradoMarmot
Champion
Champion

I haven't tried it, but it sounds like Fusion not picking up that it's been activated.  Have you tried rebooting the host with it active, and only then launching fusion?

Reply
0 Kudos
RickShu
VMware Employee
VMware Employee

Hi

eGPUs are not officially supported on Fusion. We are evaluating the demand for this.

Regards,

-Rick

Reply
0 Kudos
adrian_chung
Contributor
Contributor

I’ve tried rebooting with the eGPU active, and then launching Fusion, no avail.

I‘ve also tried on both the internal display and the external display attached to the eGPU, no difference.

One thing that just came to mind now that I have not tried is setting the primary monitor to the internal (by moving the menu bar in Display Prefs -> Arrangement) to the internal display.

There are some cases where the primary monitor selection governs which GPU renders.  Long shot, but worth a try.  I don’t care about using the eGPU for the VM, I’d just like to have at least equivalent performance regardless of whether or not an eGPU is connected.

Reply
0 Kudos
adrian_chung
Contributor
Contributor

Thanks RickShu, when you say “supported”, that makes me feel like you mean processing and rendering for all VM functions via the eGPU.

I’m not even primarily concerned with that, I just want consistent and equivalent performance to what I’d get if I had no eGPU connected.

The fact that I connect an eGPU and the VM becomes unusable does not seem to be a “supportability” issue, it would seem like a bug.

At least pin the rendering to internal/discrete graphics so that when folks do connect an eGPU, they don’t have to switch to Parallels to use their VMs.

In addition, I didn’t mention, but connecting an eGPU causes all running VMs to crash and power off.

Reply
0 Kudos
adrian_chung
Contributor
Contributor

Update on this one:

Fusion appears to render with whatever GPU is driving the current display the VM window is residing in.

Regardless of which display is set as primary in display preferences, or what is connected when Fusion is started or the VM is powered on, graphics performance within the VM is bad when on a screen driven by the eGPU, and normal when on the internal display.

As per RickShu​, eGPUs are not supported, and looks like because they're flagged as removable devices.  Not sure if there's a workaround in the VMX for that, or if there's a way to pin to a specific GPU.

In the meantime, at least moving the VM windows to the internal display allows the VM to be used.

2019-02-08T11:52:24.637-05:00| svga| W115: MTLRenderer: Ignoring removable device AMD Radeon RX Vega 56

2019-02-08T11:52:24.637-05:00| svga| W115: MTLRenderer: Ignoring removable device AMD Radeon RX Vega 56

2019-02-08T11:52:24.639-05:00| svga| I125: Metal Device name: AMD Radeon Pro 560X

2019-02-08T11:52:24.639-05:00| svga| I125: Metal Device headless: FALSE

2019-02-08T11:52:24.639-05:00| svga| I125: Metal Device lowPower: FALSE

2019-02-08T11:52:24.639-05:00| svga| I125: Metal Device maxThreadsPerThreadgroup: 1024x1024x1024

2019-02-08T11:52:24.639-05:00| svga| I125: Metal Device recommendedMaxWorkingSetSize: 4294967296

2019-02-08T11:52:24.639-05:00| svga| I125: Metal Device depth24Stencil8PixelFormatSupported: TRUE

2019-02-08T11:52:24.639-05:00| svga| I125: Metal 2: YES

2019-02-08T11:52:24.639-05:00| svga| I125: Metal Arg Buffer Support: Tier 2

2019-02-08T11:52:24.640-05:00| svga| I125: Metal Device PCI ID: 1002:67EF

2019-02-08T11:52:24.640-05:00| svga| I125: Metal Device chip: Baffin (GCN4)

2019-02-08T11:52:24.651-05:00| svga| I125: Metal Device plugin: AMDMTLBronzeDriver 2.4.9 20532

2019-02-08T11:52:24.652-05:00| svga| I125: MTLRenderer: Enabling workaround for depth zeroing

2019-02-08T11:52:24.656-05:00| svga| I125: Started Shim3D

2019-02-08T11:52:24.656-05:00| svga| I125: MKS-RenderMain: Started MTLRenderer

Reply
0 Kudos
perrykperry
Contributor
Contributor

FYI, @RickShu - with my MacBook Pro in clamshell mode, Fusion errors out when it tries to start the Windows 10 VM.

I get the following errors:

Could not open /dev/vmmon: Broken pipe

>

Failed to initalize monitor device

>

Transport (VMDB) error -14: Pipe connection has been broken

In order to get the VM to start, I have to reboot the Mac entirely.
It took me several hours to suss this out, as most of the troubleshooting steps I found for this "Broken pipe" error indicate a re-install of VMWare, and my IT department thought the entire VM needed to be rebuilt and the virtual disk transferred.

You *might* want to at least put in a check for an eGPU and error out with a more clear error, such as "eGPUs are unsupported"...

Reply
0 Kudos
Mikero
Community Manager
Community Manager

yah, this is why it's unsupported. It really messes with how we expect displays to normally behave.

Agreed that we should detect and handle that so folks don't end up like this.

We explicitly don't use an eGPU when it's connected, and in fact we force to use the onboard graphics. If your Mac is putting the onboard stuff to sleep because you have an eGPU connected and you're in clamshell mode, I would expect 'bad stuff will happen' like what you've seen here.

The issue is that there aren't the right API's we need from macOS order to handle the various use cases here.

For instance, if you unplug a GPU when it's running a VM... PCI slots that have GPU's in them aren't hot-pluggable, so we don't have a case to handle this at the virtual hardware layer, and Apple doesn't give us an API or a code path to handle this gracefully. (or at least, they haven't until lately I personally haven't checked if there are new APIs with Catalina yet).

-
Michael Roy - Product Marketing Engineer: VCF
Reply
0 Kudos
jdowns_AU
Contributor
Contributor

Hi Mike

I just set up a Mac mini and egpu as my main office computer running Windows 10 under Fusion.

I have 2 x 4k monitors.

It never occurred to me that Fusion would not support the egpu.

As you might expect, performance is terrible in Windows.

Could you please come up with a solution.

Thanks

Jamie

Reply
0 Kudos
ColoradoMarmot
Champion
Champion

Does Apple even support an eGPU on a MacMini?

Reply
0 Kudos
dempson
Hot Shot
Hot Shot

Does Apple even support an eGPU on a MacMini?

Yes. The 2018 Mac Mini has Thunderbolt 3, and Apple supports an eGPU on all Macs with Thunderbolt 3 running macOS 10.13.4 or later.

Use an external graphics processor with your Mac

Some eGPUs require a later macOS version: 10.13.6 or 10.14.1 for the ones listed on Apple's online store, all three of which list the 2018 Mac Mini as a supported model.

egpu - Apple

Reply
0 Kudos
ColoradoMarmot
Champion
Champion

Didn't know that, cool!  Might have to look at an upgrade 🙂

Reply
0 Kudos
wila
Immortal
Immortal

Hi,

Just as a FYI, eGPU support has now been added to VMware Fusion Tech Preview 20H2.

Looks like your report was instrumental for this support too :smileygrin:

DirectX 11 Now in Testing with VMware Fusion Tech Preview 20H2 - VMware Fusion Blog - VMware Blogs

--

Wil

| Author of Vimalin. The virtual machine Backup app for VMware Fusion, VMware Workstation and Player |
| More info at vimalin.com | Twitter @wilva
moserandrew
Enthusiast
Enthusiast

So how exactly is this supposed to work, vs' how I have gotten it to work?    I have a Mac Mini with an eGPU, and running my bootcamp partition directly as a VM, there is no GPU acceleration that I am seeing.  This is on Fusion 11.5 Pro, with latest release of Catalina.

I followed this post.  How to force VMware Fusion to use an eGPU - Ars Technica OpenForum 

Looking at the vmware.log I could see it wasn't seeing the eGPU.  After editing the vmx file with the particulars for my GPU, the VM is seeing it.  And running benchmark with/without it, is also night and day, Furmark score without was like 200.  With eGPU, like 2700.

So with Fusion 11.5 should I have to edit the vmx file to use the eGPU, or should this just work out of the box?

Reply
0 Kudos
ColoradoMarmot
Champion
Champion

Wila was referring to the tech preview, not 11.5.

Reply
0 Kudos
moserandrew
Enthusiast
Enthusiast

Doh...  I totally missed the fact that the Tech Preview 2020 H2 as out.   Downloaded that and reverted my VMX changes, and I see my AMD eGPU in the logs, and just for fun ran a new benchmark, and tripled what I was getting before, this is sweet!

ColoradoMarmot
Champion
Champion

That's darn cool - and DX11 to boot!  I may yet have to put an eGPU on my christmas list....