I zwift on a MB Pro 2017, hooked up to a Razor Core X with a Sapphire Radeon RX VEGA 64 Nitro+.
It used to work perfect! But now the Zwift app launches as “zwiftappmetal”. And I can’t get that app/script (?) to choose the egpu over the inferior built in one…
Can this be fixed somehow?
I’m on Big Sur. on a 2014 mini with a rx 5500 xt eGPU. Same issue, I think. Frame rate in high single digits. Almost certainly using the integrated graphics for the heavy lifting instead of the eGPU.
I moved the metal version of the application out of the way and was able to run what I’ll call “Zwift Classic” to at least have a useable game.
ZwiftMetal lives in ~Library/Application Support/Zwift
Looking in my log file
[23:11:29] Initializing graphics window of size 0 x 0
[23:11:29] GFXDevice_Metal::Initialize(): Found device ‘<MTLIGAccelDevice: 0x7fd9aa8f2000>
name = Intel Iris Graphics’
[23:11:29] GFXDevice_Metal::Initialize(): Found device ‘<GFX10_MtlDevice: 0x7fd9aaf91000>
name = AMD Radeon RX 5500 XT’
[23:11:29] GFXDevice_Metal::Initialize(): Using device ‘<MTLIGAccelDevice: 0x7fd9aa8f2000>
name = Intel Iris Graphics’
[23:11:29] window scale (2.000000, 2.000000)
[23:11:29] framebuffer size (2560, 1440)
[23:11:29] Vendor = Intel Iris Graphics
[23:11:29] Renderer = Intel Iris Graphics
[23:11:29] [GFX]: Tier 1
[23:11:29] [LOADER]: Hardware instancing enabled
[23:11:29] Screen reported DPI: 34 physical DPI: 68 Scale: 2.00
[23:11:29] Calculating Graphics Score
[23:11:29] GFX: Found a vendor/model match for IRIS
[23:11:29] Initializing Render Targets
[23:11:29] Initializing Texture Systems
Both GPUs are found, but ZwiftAppMetal chooses to use the vastly inferior one.
My display is connected to the eGPU.
Hopefully just a server side config tweak required. It shouldn’t be ignoring your dGPU.
Thanks a lot for that detective work, Mark!
But, how do you move the metal version out of the way? For me it only appears in the Application Support folder when the game has already launched (as “zwiftappmetal”).
Never mind, I think I managed to remove it from the equation!
Chiming in on the metal support.
I’m running a 2014 Mac mini with an eGPU. Today, I suddenly had single-digit fps. I found that I was running the metal version of Zwift. I strongly suspect that it was using the integrated gpu for the heavy lifting rather then the eGPU (radeon rx 5500 xt). I moved the metal application out of its folder and relaunched. got the “classic” version with expected fps.
Get Info on the metal app did not include the checkbox to force it to use the egpu. I was looking forward to seeing a native metal version of Zwift. But until this is fixed, it is a huge step backwards.
Hi Mark - that’s handy to know, thanks.
Is it just a question of removing the ‘ZwiftAppMetal’ icon from the Zwift>Application Support folder?
Hey al - thanks for flagging this up to us. We’ve been migrating Apple devices that can support the Metal graphics engine away from running OpenGL in phases. If you see the “ZwiftAppMetal” on your Macs - this is why.
That said - we have not yet built in support for external GPU’s, but it’s on our to-do list for the next release cycle. Appreciate your patience. In the meantime, sounds like @Mark_Napier found a viable workaround.
That’s how it worked for me.
FYI: I ran the latest update (1.28.1) for the first time today, and the problem remains… The Metal app still chooses the internal GPU.
Today’s update (1.29)… Hurray!
Tried it out in “just watching” mode.
Zwiftalizer said I was using the medium profile. In the past, it had said I was using basic.
I’d actually symlinked basic to ultra.
So I did the same for medium.
Locked in at 30 fps. So I set my screen refresh to 60. Tried again. Almost locked in at 60fps. (occasionally drops a bit from 60 – but the average was 58-59)
I’m CPU-bound on my 2014 Mac mini. The eGPU is working about as hard as an A+ racer drafting a “D” Pacebot.
This was in Watopia. We’ll see how this rig fares in Neokyo…
I am very happy with the Zwift Metal support with my eGPU (AMD RX580 on a 2017 i7 MBP) in Zwift version 1.29. Consistent 30fps with the Ultra profile and 2160 resolution looked great. Activity Monitor reported 40-60% utilization of the eGPU for most of the ride, which is lower than I expected.
Credit where it is due, good job Zwift team!
Utilisation is that low because you’re only at 30fps; either due to vsync settings or CPU bottleneck. 60fps is a lot nicer.