Contribute
Register

[Success] AMD RX6000 Series working in macOS

Hi everyone!
I have a video card with device-id 0x73AF (XTXH chip). I used the spoffing method in order for card to work. Changed device-id to 0x73BF.
What works:
1. transparent interface
2. coding\decoding
Problems:
1. Interface lags
2. OpenCL Score in geekbanch - 30385 (nativ video cards shows 120 000 - 130 000)
what's done:
  1. Create correct SSDT-BRG0 table
  2. Set up a named frame buffer (Carswell)
  3. Added to the bootloader OC Power Play Table
 
I tried spoofe my asrock phantom 6950xt for Monterey ..but its not work,,, I really have no idea ... ask for help ..please!!! :thumbup: My PC config is B450mb 2700x cpu..

Location Path:
PCIROOT(0)#PCI(0301)#PCI(0000)#PCI(0000)#PCI(0000)
ACPI(_SB_)#ACPI(PCI0)#ACPI(GPP8)#PCI(0000)#PCI(0000)#PCI(0000)
ACPI(_SB_)#ACPI(USBX)#ACPI(GPP8)#PCI(0000)#PCI(0000)#PCI(0000)

Gfxutil:
PCI0@0/GPP8@3,1/pci-bridge@0/pci-bridge@0/GFX0@0

the SSDT-BRG0 .aml as below:

DefinitionBlock ("", "SSDT", 2, "ACDT", "BRG0", 0x00000000)
{
External (_SB_.PCI0.GPP8, DeviceObj)
Scope (\_SB.PCI0.GPP8)
{
Device (BRG0)
{
Name (_ADR, Zero) // _ADR: Address
Method (_STA, 0, NotSerialized) // _STA: Status
{
If (_OSI ("Darwin"))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}

Device (GFX0)
{
Name (_ADR, Zero) // _ADR: Address
}
}
}
}
 
I tried spoofe my asrock phantom 6950xt for Monterey ..but its not work,,, I really have no idea ... ask for help ..please!!! :thumbup: My PC config is B450mb 2700x cpu..

Location Path:
PCIROOT(0)#PCI(0301)#PCI(0000)#PCI(0000)#PCI(0000)
ACPI(_SB_)#ACPI(PCI0)#ACPI(GPP8)#PCI(0000)#PCI(0000)#PCI(0000)

Gfxutil:
PCI0@0/GPP8@3,1/pci-bridge@0/pci-bridge@0/GFX0@0
There are two unnamed bridges, so you use two (nested) blocks of code:

Code:
DefinitionBlock ("", "SSDT", 2, "ACDT", "BRG0", 0x00000000)
{
    External (_SB_.PCI0.GPP8, DeviceObj)

    Scope (\_SB.PCI0.GPP8)
    {
        Device (BRG0)
        {
            Name (_ADR, Zero)
            Method (_STA, 0, NotSerialized)  // _STA: Status
            {
                If (_OSI ("Darwin"))
                {
                    Return (0x0F)
                }
                Else
                {
                    Return (Zero)
                }
            }

            Device (BRG1)
            {
                Name (_ADR, Zero)
                Method (_STA, 0, NotSerialized)  // _STA: Status
                {
                    If (_OSI ("Darwin"))
                    {
                        Return (0x0F)
                    }
                    Else
                    {
                        Return (Zero)
                    }
                }

                Device (GFX0)
                {
                    Name (_ADR, Zero)  // _ADR: Address
                }
            }
        }
    }
}
 

Attachments

  • SSDT-BRG.aml
    171 bytes · Views: 22
  • SSDT-BRG.dsl
    1 KB · Views: 27
a first gen 6900XT name shows up fine. a seond gen one (XTX/H models) show up as unknown prototype even if spoofed to load as a first gen XTX card because deep down driver can still tell it's an unsupported card even if it was tricked into loading it under false pretenses. when I used a flashed bios to load my card, name was correct, but when i restored cards original bios and used spoofing, even though spoofing fixes cards name in about this mac, the driver can still recognize it as an unsuppoted card, thus the fallback generic prototype name and being unable to report metal capabilities in system information. I covered all this earlier in thread.
Hi, any luck whith correct spoffing XTXH card?
 
@Janestiger What is the Device Path/IOReg name for your RX6900 XT or XTXH card?

What does Hackintool > PCIe tab show for your dGPU when fully expanded horizontally? Example below showing the PCIe tab on my Z270 system with my Vega 56 card highlighted.

Screenshot 2023-07-08 at 19.45.26.png
 
Going by the information from Hackintool the simplest option would be to use DeviceProperties to spoof your GPU's device ID in your config.plist with the entry shown below.

Screenshot 2023-07-09 at 13.51.24.png

Device Path: PciRoot(0x0)/Pci(0x3,0x1)/Pci(0x0,0x0)/Pci(0x0,0x0)Pci(0x0,0x0)

Also the device ID 'Value' needs to be added in reverse pairs, so 100273BF becomes BF730000, as there is no need to add the AMD Vendor ID.


SSDT option:
The alternative is to use the IOReg Path in an SSDT to spoof the Device ID, plus ensure the card is named correctly in macOS.

Screenshot 2023-07-09 at 13.40.53.png
SSDT-GPU-SPOOF.dsl for RX 6900 XT utilising the Hackintool IOReg Path: (SB.PCI0.GPP8.SWUS.SWDS.GFX0)

Zipped copies of the .dsl and .aml ACPI tables are attached below.
 

Attachments

  • SSDT-GPU-SPOOF.dsl.zip
    1.2 KB · Views: 26
  • SSDT-GPU-SPOOF.aml.zip
    997 bytes · Views: 32
You have two unnamed bridges ('pci-bridge' in IOReg; 'PCI(0000)' in Windows). These need to have ACPI names for OpenCore to apply DeviceProperties to the GPU downstream.

Use SSDT-BRG.aml and then apply DeviceProperties:
PciRoot(0x0)/Pci(0x3,0x1)/Pci(0x0,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)
key device-id data <FF730000>
View attachment 558399
(Only device-id is required, further entries are purely cosmetic.)

Alternatively, a single SSDT-RX6650XT.aml may name the bridges and apply the spoof (no device property entries).

For the sake of clarity: Use either
a) SSDT-BRG and DeviceProperties entry or
b) SSDT-RX6650XT alone
but not both SSDTs together.

SSDTs and PCI path in DeviceProperties are specific to your board and to the slot used. Other users must adapt paths to their hardware.
One stupid question, Which method your prefer? and which one works better?
 
Going by the information from Hackintool the simplest option would be to use DeviceProperties to spoof your GPU's device ID in your config.plist with the entry shown below.

View attachment 568855

Device Path: PciRoot(0x0)/Pci(0x3,0x1)/Pci(0x0,0x0)/Pci(0x0,0x0)Pci(0x0,0x0)

Also the device ID 'Value' needs to be added in reverse pairs, so 100273BF becomes BF730000, as there is no need to add the AMD Vendor ID.


SSDT option:
The alternative is to use the IOReg Path in an SSDT to spoof the Device ID, plus ensure the card is named correctly in macOS.

View attachment 568852
SSDT-GPU-SPOOF.dsl for RX 6900 XT utilising the Hackintool IOReg Path: (SB.PCI0.GPP8.SWUS.SWDS.GFX0)

Zipped copies of the .dsl and .aml ACPI tables are attached below.
Hi, Edhawk.
Not sure if I did it correctly or not. I sometimes don't get the post on my monitor and sometimes it does. I have agdpmod=pikera in the boot-arg for RX6650XT. Another question I have is do you prefer a. SSDT-BRG and DeviceProperties entry or b.SSDT-RX6650XT alone

 

Attachments

  • SSDT-6650XT-SPOOF.aml
    185 bytes · Views: 18
Last edited:
Going by the information from Hackintool the simplest option would be to use DeviceProperties to spoof your GPU's device ID in your config.plist with the entry shown below.

View attachment 568855

Device Path: PciRoot(0x0)/Pci(0x3,0x1)/Pci(0x0,0x0)/Pci(0x0,0x0)Pci(0x0,0x0)

Also the device ID 'Value' needs to be added in reverse pairs, so 100273BF becomes BF730000, as there is no need to add the AMD Vendor ID.


SSDT option:
The alternative is to use the IOReg Path in an SSDT to spoof the Device ID, plus ensure the card is named correctly in macOS.

View attachment 568852
SSDT-GPU-SPOOF.dsl for RX 6900 XT utilising the Hackintool IOReg Path: (SB.PCI0.GPP8.SWUS.SWDS.GFX0)

Zipped copies of the .dsl and .aml ACPI tables are attached below.
Hi, I was able to spoofing the device id using the ssdt-gpu-spoof file when I changed the path to _SB_.PCI0.GPP8.SWUS.SWDS.VGA. But my graphics card still shows up in hackintool as before. Also, my opencl geekbench numbers are extremely low - 26,000, metal - 210 000
 
Back
Top