Contribute
Register

Radeon Compatibility Guide - ATI/AMD Graphics Cards

@macnb
So I just picked up the Sapphire Nitro+ RX570 4GB. Do you know what I would need to do differently for this card as well as getting audio through DisplayPort? - appreciate any help :)

RX570 has same DeviceID as RX580 so should work same as way via config.plist (without requiring any Lilu.kext or Whatevergreen.kext).

Audio out of DP should be the same way.
It all depends on where you have working DSDT & SSDT's or where you rely on Clover to fix the DSDT on the fly (like I do as I do not have a DSDT.aml).

Post your config.plist and I can have a look.
 
RX570 has same DeviceID as RX580 so should work same as way via config.plist (without requiring any Lilu.kext or Whatevergreen.kext).

Audio out of DP should be the same way.
It all depends on where you have working DSDT & SSDT's or where you rely on Clover to fix the DSDT on the fly (like I do as I do not have a DSDT.aml).

Post your config.plist and I can have a look.

Hey @macnb - thanks appreciate the help so much!

(I've attached my config.plist)
Also I am not sure if I still need these within Clover Config:
1. Fixes > FixHeaders
2. SSDT > Generate Option > APSN/APLF/PluginType
3. Kernel and Kext Patches > Kernel PM/AppleIntelCPUPM

Appreciate all the help :)
 

Attachments

  • config.plist
    6.7 KB · Views: 169
@Pabloesc, Set Inject ATI = True:

Code:
<key>Graphics</key>
    <dict>
        <key>Inject</key>
        <dict>
            <key>ATI</key>
            <true/>

You can try it without modifying the config.plist in the Clover Option menu by checking the inject ATI box and then booting
Thanks, tried Inject ATI but it gives me black screen, I guess i probably need to make my own framebuffer patch for my card model which i'm not planning to do anytime soon because i'm using only one display and its also not worth the effort just for the sake of correct name display
 
Hey @macnb - thanks appreciate the help so much!

(I've attached my config.plist)
Also I am not sure if I still need these within Clover Config:
1. Fixes > FixHeaders
2. SSDT > Generate Option > APSN/APLF/PluginType
3. Kernel and Kext Patches > Kernel PM/AppleIntelCPUPM

Appreciate all the help :)

Never seen Fixes > FixHeaders and seems no documentation on Clover wiki so I have no idea what that does.
You did not say if you use a DSDT.aml. If you do not, then your Clover DSDT Fixes section is very empty for optimal system setup.

As it stands now, you only need RadeonDeInit=true to get your card to boot. Does it boot ?
If not, did you disable CSM in your BIOS ?
Did you set the AMD card as your Primary GPU and disable the IGD in BIOS ?

The AMD card name, DP audio, etc can be fixed later.
 
Thanks, tried Inject ATI but it gives me black screen, I guess i probably need to make my own framebuffer patch for my card model which i'm not planning to do anytime soon because i'm using only one display and its also not worth the effort just for the sake of correct name display

That's a little surprising as Injecting ATI should not affect the RadeonDeInit. Maybe R9 is a little older the the RX series and Clover injection has a side effect.
As a test, disable the AddProperties devices section and then inject ATI just to rule out any Injection issue.
 
No. Crashes just as hard. Back to 0x1912001.
I think I have fixed it. In ioreg I saw a bogus value for ig-platform-id for iGPU, not the 0x19020001 (HD530 connectorless) I had put in Clover/Graphics.
Probably SSDT-IGPU.aml is the culprit, can't remember why I had that, I took that out, cleaned caches, rebooted and now FCP seems to work. Nice. Will test more tomorrow. Looks like intel quicksync is still available.
 
Never seen Fixes > FixHeaders and seems no documentation on Clover wiki so I have no idea what that does.
You did not say if you use a DSDT.aml. If you do not, then your Clover DSDT Fixes section is very empty for optimal system setup.

As it stands now, you only need RadeonDeInit=true to get your card to boot. Does it boot ?
If not, did you disable CSM in your BIOS ?
Did you set the AMD card as your Primary GPU and disable the IGD in BIOS ?

The AMD card name, DP audio, etc can be fixed later.

Hey @macnb - Installed the RX570 Nitro and it boots up.

I believe the FixHeaders fix was used to install High Sierra with my previous Nvidia card because of a MACH error kernel panic.
- I guess I can disable that now.

I haven't checked my BIOS to see if CSM is disabled. I would assume it is if I'm able to boot.

Now all that's left is to set the card name and get DP Audio working. My Motherboard Audio works fine as usual (ALC892) but would love to get the DisplayPort Audio working so I have two options for Speaker and Headphones.

I'm attaching the 3 DSDT files that I currently have in my EFI/CLOVER/ACPI/origin folder. Forgive me but it has been a very long time since I installed El Capitan and Sierra and recently High Sierra. I do recall having to create a DSDT back then. I'm still using the same Motherboard, CPU and RAM from that build.

Here is a screenshot of my current Kexts within the /Other folder on my EFI partition
Here is a screenshot of my current drivers64UEFI for context

Also, do I need to enable InjectATI?

Let me know if you need anything else.
 

Attachments

  • DSDT-or.aml
    60.4 KB · Views: 114
  • DSDT-pa0.aml
    60.4 KB · Views: 121
  • DSDT-pa1.aml
    60.4 KB · Views: 109
Last edited:
yes I realise that the SSDT does not need the AMD reset code but does no harm (I believe).


Not sure that's quite correct. SSDT's have SCOPE because they are referring to devices already defined in the DSDT.
If one was patching the DSDT, then yes you would refer to it as Device (GFX0).
And the way the SSDT does that is by declaring the device as and external object.
See:
Code:
DefinitionBlock ("", "SSDT", 2, "APPLE ", "SSDTAMDG", 0x00001000)
{
    External (_SB_.PCI0, DeviceObj)    // (from opcode)
    External (_SB_.PCI0.PEG0, DeviceObj)    // (from opcode)
    External (_SB_.PCI0.PEG0.GFX0, DeviceObj)    // (from opcode)
    External (GFX0, DeviceObj)    // (from opcode)

    Scope (\_SB.PCI0.PEG0)
    {
        Scope (GFX0)
        {
..that tells the ACPI that _SB_.PCI0.PEG0.GFX0 is a Device Object already existing elsewhere and the Scope (GFX0) says that "what follows" applies to that device.

I'm pretty sure that's correct but please correct me if I'm wrong.

Since I don’t have your hardware I can be 100% but the scope for discrete graphics is usually _SB_.PCI0.PEG0.PEGP or _SB_.PCI0.PEG0.GFX0 then within that scope is Device (GFX0) if you run Toleda’s script for adding HDMI audio it adds it like I mentioned with Device (GFX0) at least on all my systems that is his script may do it dynamically based on the DSDT. But as the old saying goes if it’s working don’t mess with it or it won’t be working.
 
Hey @macnb - Installed the RX570 Nitro and it boots up.
Now all that's left is to set the card name and get DP Audio working. My Motherboard Audio works fine as usual (ALC892) but would love to get the DisplayPort Audio working so I have two options for Speaker and Headphones.

Also, do I need to enable InjectATI?

Let me know if you need anything else.

If you do not already have a DSDT.aml in your EFI/Clover/ACPI/Patched folder then don't worry about it for now.

Yes set Inject ATI = true.
To change the name of your card see my post #1728 above (credit to @carpentryplus25). Just add that to your config.plist.
To add audio to your ports see my #1729 above. Again just add that to your config.plist. I believe that should enable audio on DP's.

BTW, I do not use clover configurator (bad experience from the past that corrupted my config.plist too many times). I prefer to use Xcode editor or plistedit pro as they are much more versatile when it comes to ASCII & Base64 string conversions. Hence you will see in the above posts XML edits which are easier to understand - for me anyway ;)
 
Since I don’t have your hardware I can be 100% but the scope for discrete graphics is usually _SB_.PCI0.PEG0.PEGP or _SB_.PCI0.PEG0.GFX0 then within that scope is Device (GFX0) if you run Toleda’s script for adding HDMI audio it adds it like I mentioned with Device (GFX0) at least on all my systems that is his script may do it dynamically based on the DSDT. But as the old say:oops:ing goes if it’s working don’t mess with it or it won’t be working.

My h/w is as in my signatue (Z77X-UP5-TH, i7-3770K with Radeon RX580).
I now have a DSDT.aml (I did one last night) that works fine. Here's a snippet of the GFX0 device:
Code:
            Device (PEG0)
            {
                Name (_ADR, 0x00010000)  // _ADR: Address
                Method (_PRT, 0, NotSerialized)  // _PRT: PCI Routing Table
                {
                    If (PICM)
                    {
                        Return (AR02 ())
                    }

                    Return (PR02 ())
                }

                Device (GFX0)
                {
                    Name (_ADR, 0x0)  // _ADR: Address (was 0xFFFF)
                }
            }

So the actual discrete GPU device is within _SB.PCI0.PEG0 and is called GFX0. So I guess the scope _SB.PCI0.PEG0.GFX0 is correct ?

Actually, my SSDT is broken. I just tried turning OFF RadeonDeInit assuming my SSDT-RX580.aml will do the same job.
It does not work .... on boot I get the Apple logo, loading bar and half way through the screen freezes. the OS is up and running but no display output. :cry:

All this time, I thought everything was fine with my system (and hence SSDT)....and it was because RadeonDeInit was set to True which in effect was overriding my SSDT but in reality, the SSDT wasn't loading at all.

UPDATE:
I fixed my SSDT file inject problem. I now feel like a complete idiot :oops::rolleyes:
I placed my file : EFI/Clover/ACPI/Patched/SSDT-RX580.aml and assumed Clover will automatically inject it.
It wasn't for some reason. The only reason I can think of was that in config.plist ACPI->SortedOrder, the file was called SSDT-AMD.aml which Clover could not find but it ignored the SSDT-RX580.aml that was there.
Interestingly, Clover will load DSDT.aml even if you explicitly name BLAH-BLAH.aml in config.plist ACPI->DSDT->Name->BLAH-BLAH.aml. That is, it will not find BLAH-BLAH.aml but will find DSDT.aml and load it.

So now, I can turn REMOVE RadeonDeInit, AddProperties (for card naming), FBName (for choosing the Framebuffer) and AddHDMI_8000000 (for HDMI Audio) use the SSDT to do all that.;)
 
Last edited:
Back
Top