One of the most common questions we get is: “what gpu should I use for a Mac OS VM,” and it’s frankly a hard one to answer.
Nvidia is essentially out of the question at this point, assuming you want to use a new release of their operating system, and new AMD cards don’t work well with UEFI Passthrough. It’s damned if you do, damned if you don’t.
Consider supporting us if you value independent tech news and research. This site will always be free of ads and sponsored content.
Our VFIO Increments Page is generally OK to follow for macs, but as picky as OS X can be about supported cards, it’s good to err on the side of caution. This is an addendum to the Increments page specifically for Mac OS GPU Selection
So, What AMD GPUs Aren’t Safe?
As far as we can tell from our (extensive) research, Hawaii cards (The R9 290, 290X, 390, and 390X) are the first cards that shipped with the reset bug. All newer cards, including Vega and the 5700 are affected, and won’t reset properly in a VM. Apple Drivers support the RX 400 and 500 series as well as Vega/Fury Cards, but it isn’t advisable to pick one up unless you never plan on rebooting your VM.
Narrowing things down Further, we know that cards too old to support UEFI Boot won’t work either, except for the special UGA variants pulled from or made for old mac pros, but those end support in 10.14 Mojave, so they aren’t worth talking about.
So where does that leave us?
Explicitly Supported Cards
Well, Apple explicitly lists exactly 1 “metal capable” reset bug free card in their Mojave announcement:
- The SAPPHIRE Radeon HD 7950
However, the drivers mojave ships with with support many cards out of the box as well. Mac OS is finnicky and won’t work if you don’t have an exact PCIe ID match, so, buyer beware, but generally we feel safe recommending these models:
- Any 7950/70 or 280/X that supports UEFI boot *
- Any 7850/70 or 270/X that supports UEFI boot *
- Any Firepro Card Based on CGN 1.0 that supports UEFI boot **
[*] XFX Cards can cause kernel panics on some models, the brand should generally be avoided
[**] The models that fit this description are: The Firepro W7000, 8000, 9000, and D300, 500, 700 Cards. The D Series was designed specifically for Macs.
You can check if your card supports UEFI boot on the Tom’s Hardware VBIOS Archives. You may want to pass a supported rom or update to the most recent vbios as well to make sure you have a revision that will work, because some cards from this era did not ship with UEFI support.
There’s also one possible exception to the “Newer than Hawaii” rule for the reset bug: The Sapphire Radeon RX 580 Pulse (Model SKU 11265-05-20G) — these cards were shipped with the Apple eGPU dev kits and we’ve had at least a few reports of successful resets with this model. We’re not giving it a hard recommendation because of the issues with other polaris cards, but it’s definitely worth trying and reporting back to us if you do already own this model.
The reason we don’t recommend 300 series cards is, while the apple drivers do support some of them, they seem to have PCIe ID mismatches more often than the older rebrands, so support varies on a model-by-model basis.
Lower end GCN 1.0 cards in the 7000 and 200 series can work as well, but often weren’t supported well or long enough to get a UEFI Boot bios update. If you already own one, though, it can’t hurt to look up if your model got a support update. We’ll be working on a patch guide as well, for those that already own a GCN 1.0 card with no UEFI support that still want to use their cards for Mac OS.
In addition to these conservative recommendations, Community member and MacOS-Simple-KVM Maintainer, Foxlet, Has compiled a list of explicitly supported PCI IDs in the Mac OS graphics drivers.
Some of these IDs do not match any known AMD device, so if you have a card that matches one with ??? in the model field, please contact us:
Apple Supported Device IDs
Device ID | Raw (Mac) | Model Identifier | Notes |
1002:6640 | 0x66401002 | Saturn XT [FirePro M6100] | Mobile |
1002:6641 | 0x66411002 | Saturn PRO [Radeon HD 8930M] | Mobile |
1002:6646 | 0x66461002 | Bonaire XT [Radeon R9 M280X] | Mobile |
1002:6647 | 0x66471002 | Saturn PRO/XT [Radeon R9 M270X/M280X] | Mobile |
1002:6650 | 0x66501002 | Bonaire | |
1002:6651 | 0x66511002 | Bonaire | |
1002:6780 | 0x67801002 | Tahiti XT GL [FirePro W9000] | |
1002:6790 | 0x67901002 | ??? | Firepro D 500? |
1002:6798 | 0x67981002 | Tahiti XT [Radeon HD 7970/8970 OEM / R9 280X] | Mobile |
1002:6800 | 0x68001002 | Wimbledon XT [Radeon HD 7970M] | Mobile |
1002:6801 | 0x68011002 | Neptune XT [Radeon HD 8970M] | Mobile |
1002:6806 | 0x68061002 | Neptune | Mobile |
1002:6810 | 0x68101002 | Curacao XT / Trinidad XT [Radeon R7 370 / R9 270X/370X] | Certain cards require a GOP-patched VBIOS for operation |
1002:6818 | 0x68181002 | Pitcairn XT [Radeon HD 7870 GHz Edition] | |
1002:6819 | 0x68191002 | Pitcairn PRO [Radeon HD 7850 / R7 265 / R9 270 1024SP] | |
1002:6820 | 0x68201002 | Venus XTX [Radeon HD 8890M / R9 M275X/M375X] | Mobile |
1002:6821 | 0x68211002 | Venus XT [Radeon HD 8870M / R9 M270X/M370X] | Mobile |
1002:6823 | 0x68231002 | Venus PRO [Radeon HD 8850M / R9 M265X] | Mobile |
1002:6825 | 0x68251002 | Heathrow XT [Radeon HD 7870M] | Mobile |
1002:6827 | 0x68271002 | Heathrow PRO [Radeon HD 7850M/8850M] | Mobile |
1002:6835 | 0x68351002 | Cape Verde PRX [Radeon R9 255 OEM] | |
1002:6839 | 0x68391002 | ??? | Firepro D300? |
1002:6860 | 0x68601002 | Vega 10 [Radeon Instinct MI25] | Reset Bug |
1002:6861 | 0x68611002 | Vega 10 XT [Radeon PRO WX 9100] | Reset Bug |
1002:6862 | 0x68621002 | Vega 10 XT [Radeon PRO SSG] | Reset Bug |
1002:6863 | 0x68631002 | Vega 10 XTX [Radeon Vega Frontier Edition] | Reset Bug |
1002:6864 | 0x68641002 | Vega | Reset Bug |
1002:6867 | 0x68671002 | Vega 10 XL [Radeon Pro Vega 56] | Reset Bug |
1002:6868 | 0x68681002 | Vega 10 [Radeon PRO WX 8100/8200] | Reset Bug |
1002:6869 | 0x68691002 | ??? | |
1002:6920 | 0x69201002 | ??? | |
1002:6921 | 0x69211002 | Amethyst XT [Radeon R9 M295X] | Mobile |
1002:6930 | 0x69301002 | ??? | |
1002:6938 | 0x69381002 | Tonga XT / Amethyst XT [Radeon R9 380X / R9 M295X] | Mobile |
1002:6939 | 0x69391002 | Tonga PRO [Radeon R9 285/380] | Reset Bug |
1002:665C | 0x665C1002 | Bonaire XT [Radeon HD 7790/8770 / R7 360 / R9 260/360 OEM] | |
1002:665D | 0x665D1002 | Bonaire [Radeon R7 200 Series] | |
1002:66A0 | 0x66A01002 | Vega 20 [Radeon Instinct] | Reset Bug |
1002:66A1 | 0x66A11002 | Vega 20 | Reset Bug |
1002:66A2 | 0x66A21002 | Vega 20 | Reset Bug |
1002:66A3 | 0x66A31002 | Vega 20 | Reset Bug |
1002:66A7 | 0x66A71002 | Vega 20 [Radeon Pro Vega 20] | Reset Bug |
1002:66AF | 0x66AF1002 | Vega 20 [Radeon VII] | Reset Bug |
1002:679A | 0x679A1002 | Tahiti PRO [Radeon HD 7950/8950 OEM / R9 280] | |
1002:679E | 0x679E1002 | Tahiti LE [Radeon HD 7870 XT] | |
1002:67B0 | 0x67B01002 | Hawaii XT / Grenada XT [Radeon R9 290X/390X] | Reset Bug |
1002:67C9 | 0x67C91002 | ??? | |
1002:67CA | 0x67CA1002 | Ellesmere [Polaris10] | Reset Bug |
1002:67CC | 0x67CC1002 | Ellesmere [Polaris10] | Reset Bug |
1002:67CF | 0x67CF1002 | Ellesmere [Polaris10] | Reset Bug |
1002:67D0 | 0x67D01002 | Ellesmere [Radeon Pro V7300X / V7350x2] | Reset Bug |
1002:67DF | 0x67DF1002 | Ellesmere [Radeon RX 470/480/570/570X/580/580X/590] | Reset Bug |
1002:67E0 | 0x67E01002 | Baffin [Radeon Pro WX 4170] | Reset Bug |
1002:67E1 | 0x67E11002 | Baffin [Polaris11] | Reset Bug |
1002:67E3 | 0x67E31002 | Baffin [Radeon Pro WX 4100] | Reset Bug |
1002:67E7 | 0x67E71002 | ??? | Reset Bug |
1002:67E8 | 0x67E81002 | Baffin [Radeon Pro WX 4130/4150] | Reset Bug |
1002:67E9 | 0x67E91002 | Baffin [Polaris11] | Reset Bug |
1002:67EB | 0x67EB1002 | Baffin [Radeon Pro V5300X] | Reset Bug |
1002:67EF | 0x67EF1002 | Baffin [Radeon RX 460/560D / Pro 450/455/460/555/555X/560/560X] | Reset Bug |
1002:67FF | 0x67FF1002 | Baffin [Radeon RX 550 640SP / RX 560/560X] | Reset Bug |
1002:682B | 0x682B1002 | Venus LE / Tropo PRO-L [Radeon HD 8830M / R7 M465X] | |
1002:682D | 0x682D1002 | Chelsea XT GL [FirePro M4000] | Mobile |
1002:682F | 0x682F1002 | Chelsea LP [Radeon HD 7730M] | Mobile |
1002:683B | 0x683B1002 | ??? | Firepro D700? |
1002:683D | 0x683D1002 | Cape Verde XT [Radeon HD 7770/8760 / R7 250X] | |
1002:683F | 0x683F1002 | Cape Verde PRO [Radeon HD 7750/8740 / R7 250E] | |
1002:686A | 0x686A1002 | ??? | |
1002:686B | 0x686B1002 | ??? | |
1002:686C | 0x686C1002 | Vega 10 [Radeon Instinct MI25 MxGPU] | Reset Bug |
1002:686D | 0x686D1002 | ??? | |
1002:686E | 0x686E1002 | ??? | |
1002:687F | 0x687F1002 | Vega 10 XL/XT [Radeon RX Vega 56/64] | Reset Bug |
1002:69A0 | 0x69A01002 | Vega 12 | Reset Bug |
1002:69A1 | 0x69A11002 | Vega 12 | Reset Bug |
1002:69A2 | 0x69A21002 | Vega 12 | Reset Bug |
1002:69A3 | 0x69A31002 | Vega 12 | Reset Bug |
1002:69AF | 0x69AF1002 | Vega 12 [Radeon Pro Vega 20] | Reset Bug |
1002:7300 | 0x73001002 | Fiji [Radeon R9 FURY / NANO Series] | Reset Bug, Present in late High Sierra Builds |
1002:730F | 0x730F1002 | ??? |
Just because your GPU has the same Identifier as one of the IDs listed here does NOT necessarily mean it will work out of the box. Check to make sure the id matches by running lspci -nnk | grep VGA
and cross referencing its output by searching for it in this document (ctrl +f.)
Even a matching ID does not guarantee functionality. Laptop GPUs will be difficult to set up and probably won’t work on the laptop’s built in monitor, because Apple uses custom muxing hardware in their implementations of those devices. In addition, cards with the reset bug or without UEFI Boot support out of the box will be a lot more trouble.
We’ll be working on populating this list with known good SKUs, so if you try one and have success, be sure to let us know in the discord or via email.
Consider Supporting us on Patreon if you like our work and want a say in what we cover and access to early content. We provide RSS feeds as well as regular updates on Twitter if you want to be the first to know about the next part in this series or other projects we’re working on. If you need help or have questions about any of our articles, you can find us on our Discord.
Images via Pixabay, special thanks to Foxlet for his tremendous help in Compiling the ID table