Contribute
Register

[Success] AMD RX6000 Series working in macOS

My XFX Merc 319 RX 6800 XT has Device ID 0x73BF, works great on macOS and the card itself next to silent when fully loaded. Recommended - if you can find one.
How do you make it run at full load? My 6900xt hardly works in FCPX
 
How do you make it run at full load? My 6900xt hardly works in FCPX

I haven't really looked into this, but there have been discussions in the past about getting FCPX to use the dGPU. I think one of the major factors is the SMBIOS. If you use an SMBIOS of a Mac that doesn't have an iGPU, like a MacPro, you can get the dGPU to do most of the functions. If you use an SMBIOS of a Mac that has an iGPU, it will split the workload between the iGPU and dGPU.

However, if you change the SMBIOS while you may gain a function, you may lose another. For example Sidecar will only work on an SMBIOS with an iGPU, like an iMac. Similarly, watching DRM protected videos seem to require a specific SMBIOS (I don't recall what the specifics are; I don't watch videos on my Hack).

Other than that, there are tutorials on the web that describe how to offload the work onto the dGPU. I haven't used FCPX in a while, but I seem to remember last year there was a setting in the Preferences where you could specify to use the dGPU for encoding.

See if there is something useful in this thread:

 
Last edited:
SUCCESS: My Sapphire RX 6900XT Toxic Extreme Edition (Device ID 0x73AF) now works !!!!!!

I would like to thank the CaseySJ for providing the files needed to get my video card working.
These files and explanations are located at:
https://www.tonymacx86.com/threads/success-radeon-rx-6800-xt-big-sur.306736/post-2244068
and
https://www.tonymacx86.com/threads/success-radeon-rx-6800-xt-big-sur.306736/post-2244286
Also FakePCIID.kext is needed.

My EFI is attached.

Before EFI Changes:

View attachment 521904


View attachment 521906
My System: Using gfxutil:
03:00.0 1002:73af /PCI0@0/D0A0@1,1/D0A7@0/pci-bridge@0/GFX0@0 = PciRoot(0x0)/Pci(0x1,0x1)/Pci(0x0,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)

I modified \ACPI\SSDT-Change-GPU-Device-ID.dsl to match my system and compiled with MaciASL.app to create SSDT-Change-GPU-Device-ID.aml. (This was to fake out the PCI-Bridge).

I used \Kexts\FakePCIID.kext & \Kexts\FakePCIID_RX6000_Graphics.kext with no changes.

After EFI changes:


View attachment 521908


View attachment 521909
IORegistryExplorer.app

View attachment 521910
I'm trying to use a XTHX gpu with my MacBook Pro. Are the two FakePCIID... kexts enough? I have a bootloader (Kryptonite) that uses the same EFI except very slimmed down.
 
I'm trying to use a XTHX gpu with my MacBook Pro. Are the two FakePCIID... kexts enough? I have a bootloader (Kryptonite) that uses the same EFI except very slimmed down.
The latest WEG, device properties device ID, and SSDT-BRG0.aml.
 
The latest WEG, device properties device ID, and SSDT-BRG0.aml.
I added the two FakePCIID... kexts as well as WhateverGreen.kext to EFI/OC/Kexts & to info.plist. I wasn't able to find "SSDT-BRG0.aml." Is it the same as "SSDT-Change-GPU-Device-ID.aml"? If so, are there any device specific changes needed (ignoring the cosmetic name change)? Furthermore, I don't know what you mean by "device properties device ID" as my device ID is the same as the one used in the post I originally replied to. Is "device properties" a separate item on your list from "device ID"? Lastly, is WhateverGreen.kext redundant/conflicting with Kryptonite.kext? I haven't tested this yet.
 
The attached file is the SSDT-BRG0.aml, only named differently. I chose to name mine SSDT-GFX0.aml. The .dsl file is what is used before compiling with MaciASL.app. Also, the two FakePCIID files can go away if you use WhateverGreen.kext. Also, you will need to add the latest boot-arg to your config.plist: agdpmod=pikera
 

Attachments

  • SSDT-GFX0.aml
    108 bytes · Views: 63
  • SSDT-GFX0.dsl
    2.2 KB · Views: 60
The attached file is the SSDT-BRG0.aml, only named differently. I chose to name mine SSDT-GFX0.aml. The .dsl file is what is used before compiling with MaciASL.app. Also, the two FakePCIID files can go away if you use WhateverGreen.kext. Also, you will need to add the latest boot-arg to your config.plist: agdpmod=pikera
Do I need to modify SSDT-BRG0 for my specific card (Powercolor Red Devil 6900 XT Ultimate)?
 
You will probably need to modify the script to match your PCI bus. For example, when I run Hackintool or IORegistry, under PCI ->Display, I see something that looks like this:
03:00.0 1002:73af /PCI0@0/D0A0@1,1/D0A7@0/pci-bridge@0/display@0 = PciRoot(0x0)/Pci(0x1,0x1)/Pci(0x0,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)

Using this, I only had to change these two lines:

External (_SB_.PCI0.D0A0.D0A7, DeviceObj)

Scope (\_SB.PCI0.D0A0.D0A7)

When I was done, IORegistry showed my display as:
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/D0A0@1,1/IOPP/D0A7@0/IOPP/BRG0@0/IOPP/GFX0@0

I hope this helps, because I realize this stuff is cryptic.
 
You will probably need to modify the script to match your PCI bus. For example, when I run Hackintool or IORegistry, under PCI ->Display, I see something that looks like this:
03:00.0 1002:73af /PCI0@0/D0A0@1,1/D0A7@0/pci-bridge@0/display@0 = PciRoot(0x0)/Pci(0x1,0x1)/Pci(0x0,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)

Using this, I only had to change these two lines:

External (_SB_.PCI0.D0A0.D0A7, DeviceObj)

Scope (\_SB.PCI0.D0A0.D0A7)

When I was done, IORegistry showed my display as:
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/D0A0@1,1/IOPP/D0A7@0/IOPP/BRG0@0/IOPP/GFX0@0

I hope this helps, because I realize this stuff is cryptic.
This is the hardest part matching your system IOReg to the SSDT.
AMD hacks need to edit it as well.
IOPP/GPP1/GFX0, or IOPP/GP07/GFX0 etc….
You need to use IOReg and Hackintool PCI tab or equivalent to find and replace the nomenclature and the Devices/Properties as well.
 
You will probably need to modify the script to match your PCI bus. For example, when I run Hackintool or IORegistry, under PCI ->Display, I see something that looks like this:
03:00.0 1002:73af /PCI0@0/D0A0@1,1/D0A7@0/pci-bridge@0/display@0 = PciRoot(0x0)/Pci(0x1,0x1)/Pci(0x0,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)

Using this, I only had to change these two lines:

External (_SB_.PCI0.D0A0.D0A7, DeviceObj)

Scope (\_SB.PCI0.D0A0.D0A7)

When I was done, IORegistry showed my display as:
IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/D0A0@1,1/IOPP/D0A7@0/IOPP/BRG0@0/IOPP/GFX0@0

I hope this helps, because I realize this stuff is cryptic.
Let me know if this is correct:

Using gfxutil:
48:00.0 1002:73af /PCI0@0/PEG2@1,2/UPSB@0/DSB1@1/UPS0@0/pci-bridge@1/pci-bridge@0/pci-bridge@0/display@0 = PciRoot(0x0)/Pci(0x1,0x2)/Pci(0x0,0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)

So:

External (_SB_.PCI0.PEG2.UPSB.DSB1.UPS0, DeviceObj)

Scope (\_SB.PCI0.PEG2.UPSB.DSB1.UPS0)

And then I just compile it and add it to EFI/OC/ACPI (already added to the plist of course).

You need to use IOReg and Hackintool PCI tab or equivalent to find and replace the nomenclature and the Devices/Properties as well.

Gigamaxx mentioned something about "Device/Properties." Is there something further I still need to do?
 
Back
Top