Get all 3 AMD GPUs working with Vulkan drivers on a Mac Pro 2019 running Windows 11 (Atlas OS).
The Mac Pro 2019 has three AMD GPUs:
- 2x Radeon RX 580 (8GB each) — aftermarket cards
- 1x Radeon Pro 580X (8GB) — Apple's factory GPU
On Windows, the two RX 580s get AMD drivers automatically. But the Pro 580X shows up as "Microsoft Basic Display Adapter" with no Vulkan support. AMD's standard Adrenalin driver refuses to claim it.
The Pro 580X uses Apple's OEM PCI subsystem ID:
PCI\VEN_1002&DEV_67DF&SUBSYS_0206106B&REV_C0
^^^^
106B = Apple Inc.
AMD blocks Apple OEM GPUs at two independent levels:
- INF Level —
ExcludeIDentries in the driver INF explicitly reject Apple subsystem IDs (vendor106B) - Kernel Level —
amdkmdag.syshas a built-in hardware whitelist that rejects unrecognized subsystem IDs during initialization
You can bypass level 1 by editing the INF. But level 2 causes Windows Error Code 31 ("cannot load the drivers") with STATUS_DLL_INIT_FAILED (0xC0000142) — the kernel driver loads but refuses to initialize.
Use BootCampDrivers.com Blue (Enterprise) Edition — a community-maintained AMD Adrenalin driver that has Apple OEM GPU support built into both the INF and the kernel driver.
# Run the install script
.\install-driver.ps1Or do it manually — see Manual Install Steps below.
This documents every approach we attempted before finding the solution, so you don't have to repeat our mistakes.
Approach: Copy AMD's driver folder, edit the INF to remove ExcludeID lines for 0206106B and add a device entry for the Pro 580X.
Result: pnputil /add-driver rejects modified INFs because the catalog hash no longer matches.
Approach: bcdedit /set testsigning on to allow unsigned drivers, then re-try adding the modified INF.
Result: Still failed — pnputil checks signatures independently of boot-level test signing.
Approach: Remove the .cat file from the driver package so there's nothing to verify against.
Result: "The third-party INF does not contain digital signature information."
Approach: Edit the INF directly in C:\Windows\System32\DriverStore\FileRepository\, then pnputil /scan-devices.
Result: Windows caches the original device matching data when a driver is first staged. Modifying the INF in-place doesn't get re-evaluated.
Approach: pnputil /remove-device the Pro 580X, then /scan-devices to re-discover it against the modified driver store INF.
Result: Windows re-discovered the device but still matched it to Basic Display Adapter — the driver store's cached device list wasn't updated.
Approach: bcdedit /set nointegritychecks on + bcdedit /set loadoptions DDISABLE_INTEGRITY_CHECKS then reboot and retry.
Result: Same "does not contain digital signature" error from pnputil.
Approach: Use New-FileCatalog to create a catalog for the modified driver, sign it with a self-signed certificate.
Result: New-FileCatalog creates PowerShell-format catalogs. Windows drivers need PKCS7 catalogs from inf2cat.exe (WDK tool). Set-AuthenticodeSignature also doesn't support .cat files.
Approach: Use the Win32 API via P/Invoke to force the driver onto the device (same API that devcon.exe update uses).
Result: Error 0xe000022f = ERROR_NO_CATALOG_FOR_OEM_INF. The API also requires a valid catalog.
Approach: Copy all 238 registry values + 87 subkeys from the working RX 580's driver class entry to a new instance, point the Pro 580X to it, change Service from BasicDisplay to amdwddmg.
Result: The AMD kernel driver loaded but failed with Error Code 31 (STATUS_DLL_INIT_FAILED). This proved the kernel driver itself has an internal hardware whitelist — no amount of registry or INF manipulation can bypass it.
Approach: Download the Blue (Enterprise) Edition from BootCampDrivers.com, which includes a kernel driver built to support Apple OEM hardware IDs. Trust their DigiCert code signing certificate, install via pnputil /add-driver /install.
Result: All 3 GPUs recognized with native Vulkan 1.3.260 and AMD proprietary driver 24.9.1.
| GPU | Device ID | Subsystem ID | Status |
|---|---|---|---|
| RX 580 #1 | VEN_1002&DEV_67DF |
SUBSYS_E3531DA2 |
Works with standard AMD driver |
| RX 580 #2 | VEN_1002&DEV_67DF |
SUBSYS_E3531DA2 |
Works with standard AMD driver |
| Pro 580X | VEN_1002&DEV_67DF |
SUBSYS_0206106B |
Requires BootCampDrivers.com |
All three GPUs use the same Polaris 20 (Ellesmere) silicon — device ID 67DF. The only difference is the subsystem ID: Apple uses vendor 106B, consumer cards use 1DA2 (XFX, Sapphire, etc.).
GPU0: Radeon RX 580 Series - Vulkan 1.3.260, AMD proprietary 24.9.1
GPU1: Radeon RX 580 Series - Vulkan 1.3.260, AMD proprietary 24.9.1
GPU2: AMD Radeon Pro 580X - Vulkan 1.3.260, AMD proprietary 24.9.1
- Mac Pro 2019 running Windows 10/11 (tested on Atlas OS / Windows 11)
- SSH or local admin access
- 7-Zip installed (
winget install 7zip.7zip)
Download the Blue (Enterprise) Edition for Polaris/Vega from BootCampDrivers.com:
Invoke-WebRequest -Uri "https://nc2.tomas-g.de/index.php/s/jZQ5LpemCgqnArq/download" `
-OutFile "$env:TEMP\bootcamp-amd-blue.exe" -UseBasicParsingThis is ~930 MB. The Blue (Enterprise) edition is recommended over Red (Gaming) for server/production use.
The .exe may not be compatible with your Windows version. Extract it with 7-Zip instead:
7z x "$env:TEMP\bootcamp-amd-blue.exe" "-o$env:TEMP\amd-bootcamp" -yThe driver is signed by BootCampDrivers.com with a legitimate DigiCert code signing certificate. Add it to the TrustedPublisher store:
$infDir = Get-ChildItem "$env:TEMP\amd-bootcamp" -Directory | Select-Object -First 1
$catFile = Get-ChildItem "$($infDir.FullName)\Packages\Drivers\Display\WT6A_INF\*.cat" | Select-Object -First 1
$sig = Get-AuthenticodeSignature $catFile.FullName
Export-Certificate -Cert $sig.SignerCertificate -FilePath "$env:TEMP\bootcamp-cert.cer" -Type CERT
Import-Certificate -FilePath "$env:TEMP\bootcamp-cert.cer" -CertStoreLocation "Cert:\LocalMachine\TrustedPublisher"$infFile = Get-ChildItem "$($infDir.FullName)\Packages\Drivers\Display\WT6A_INF\*.inf" `
| Where-Object { $_.Name -notlike "*original*" } | Select-Object -First 1
pnputil /add-driver $infFile.FullName /installYou should see:
Driver package installed on device: PCI\VEN_1002&DEV_67DF&SUBSYS_0206106B&REV_C0\...
Get-PnpDevice | Where-Object { $_.InstanceId -like "*67DF*" } |
Format-Table Status, FriendlyName, InstanceId -AutoSizeAll GPUs should show Status OK with AMD driver names.
Tested on:
- Hardware: Mac Pro 2019 (MacPro7,1), Xeon W-3245
- GPUs: 2x XFX Radeon RX 580 + 1x Apple Radeon Pro 580X
- OS: Atlas OS (Windows 11)
- Driver: BootCampDrivers.com Blue Edition, Adrenalin 24.9.1
Should also work with other Apple OEM AMD GPUs:
- Radeon Pro 560X (
SUBSYS_0161106B) - Radeon Pro 580 (
SUBSYS_0161106B) - Radeon Pro Vega II (
SUBSYS_0201106B) - Any GPU with subsystem vendor
106B
This fix enables native Vulkan multi-GPU inference with llama.cpp on the Mac Pro. On macOS, MoltenVK serializes Vulkan commands across GPUs at the system level — even separate processes on separate physical cards share a single Metal command queue. On Windows with native AMD Vulkan drivers, each GPU has its own independent command queue, enabling true parallel execution.
MIT License. Copyright (c) 2026 Northwoods Community Church.
| Project | Description | License |
|---|---|---|
| BootCampDrivers.com | Modified AMD Adrenalin drivers for Apple Boot Camp | Proprietary (AMD driver, community-modified INF/kernel) |
| Brigadier | Tool for downloading Boot Camp drivers (tested but not used) | Apache 2.0 |
