Contribute
Register

Radeon Compatibility Guide - ATI/AMD Graphics Cards

Hello! Im very new to this all but basically I have a non reference Sapphire Dual-X R9 285.

I have 3 monitors plugged in (out of the 4 ports). 2 are dvi and the other hdmi.

Hdmi pretty much always works (however if computer sleeps or tv turns off, if i turn it back on, it goes undetected and same goes for if i unplug it) BUT only one of the dvi ports ever works out of the 2. They both show up in all stages of the boot up process right up until login.

Someone suggested the ports may be linked but i have had them work together on a random bootup at some point (where i hadn't even changed any settings) but tbf they only thing I physically did there was switch the cables round accidentally after de dusting the gpu (taking it out which I doubt would affect anything but it clearly did)...

Do you have any idea what I can do to get this setup
work? I have ordered a displayport to dvi adapter to try.

Check this thread for editing the Framebuffer.
#1
 
I have 3 monitors plugged in (out of the 4 ports). 2 are dvi and the other hdmi.

Hdmi pretty much always works (however if computer sleeps or tv turns off, if i turn it back on, it goes undetected and same goes for if i unplug it) BUT only one of the dvi ports ever works out of the 2. They both show up in all stages of the boot up process right up until login.


@todadqa,

Check that you have the correct framebuffer assigned for your AMD card, according to the guide it should be "Lagotto" for AMD R9 285.

AMD Compatibility Gude said:
AMD9000Controller.kext (3rd Gen GCN architecture)
Graphics Card OOB min. OSX DevID Reference Port Layout Framebuffer Known Issues
R9 285 / R9 380 Yes 10.10 0x6939 DP, HDMI, 2x DVI Lagotto Needs RadeonDeInit (since 10.11)


You can look in the ioreg to check the current frame buffer, for most AMD GPU's it's under GFX0 -> Device_Type.

If your DVI Monitors are 1080P or higher then you must make sure the DVI ports are running in dual-link mode.

Installing Lilu + WhatEverGreen should be enough to ensure the correct AMD framebuffer is used and that the "RadeonDeInit" flag is set, it should also enable DVI dual-link.

If you dont already have Lilu + WhatEverGreen installed then you should try that first.

Alternatively you can use Clover (in which case do not use WhatEverGreen) to manually set all three parameters :-

Screenshot 2019-07-04 at 17.30.56.png

I dont have a AMD R9 285 GPU to test with but if you follow the recommended settings from post #1 it should work.

Cheers
Jay
 
Last edited:
Do you foresee support for RX 5700 XT????
 
@todadqa,

Check that you have the correct framebuffer assigned for your AMD card, according to the guide it should be "Lagotto" for AMD R9 285.




You can look in the ioreg to check the current frame buffer, for most AMD GPU's it's under GFX0 -> Device_Type.

If your DVI Monitors are 1080P or higher then you must make sure the DVI ports are running in dual-link mode.

Installing Lilu + WhatEverGreen should be enough to ensure the correct AMD framebuffer is used and that the "RadeonDeInit" flag is set, it should also enable DVI dual-link.

If you dont already have Lilu + WhatEverGreen installed then you should try that first.

Alternatively you can use Clover (in which case do not use WhatEverGreen) to manually set all three parameters :-

View attachment 414773

I dont have a AMD R9 285 GPU to test with but if you follow the recommended settings from post #1 it should work.

Cheers
Jay

Hey, Jay:

Wondering if you give me some help. On my Z370, 9900k system with my Vega 56, I can't use HDMI. I get a black screen at the end of the boot (on either Mojave or Catalina - doesn't matter which, black screen). I am using the very latest Lilu and Whatevergreen. I can remote desktop to it, and that will work for now, but I was hoping that HDMI would work on my AOC monitor.

Any ideas?
 
On my Z370, 9900k system with my Vega 56, I can't use HDMI. I get a black screen at the end of the boot (on either Mojave or Catalina - doesn't matter which, black screen). I am using the very latest Lilu and Whatevergreen.


@mm2margaret,

The AMD reference design for Vega 56 & 64 like my Sapphire Vega 64 LC use the "Kamarang" frame buffer which has 1 x HDMI and 3 x DP ports.

Some of the Power Cooler designs deviate from the reference and have 2 x HDMI and 2 x DP if this is the case with your card then the only thing i can think of is have you tried the other HDMI port ?

Sorry but I don't have any experience with non reference design Vega cards, I'm sure it should be possible to get it to work but you may have to patch the driver kext or find an alternate frame buffer that works with the ports on your card.

Cheers
Jay
 
@mm2margaret,

The AMD reference design for Vega 56 & 64 like my Sapphire Vega 64 LC use the "Kamarang" frame buffer which has 1 x HDMI and 3 x DP ports.

Some of the Power Cooler designs deviate from the reference and have 2 x HDMI and 2 x DP if this is the case with your card then the only thing i can think of is have you tried the other HDMI port ?

Sorry but I don't have any experience with non reference design Vega cards, I'm sure it should be possible to get it to work but you may have to patch the driver kext or find an alternate frame buffer that works with the ports on your card.

Cheers
Jay

Jay, thanks for the reply. My Power Color Vega 56 has a reference design with 3 DP ports and only one HDMI.....it's identical to all the other Vega 56 cards out there.....or at least it sure seems to.....

Also, I should have noted that I have the iGPU disabled on this system as I'm using iMacPro 1,1 sysdef......
 
Last edited:
Jay, thanks for the reply. My Power Color Vega 56 has a reference design with 3 DP ports and only one HDMI.....it's identical to all the other Vega 56 cards out there.....or at least it sure seems to.....

Also, I should have noted that I have the iGPU disabled on this system as I'm using iMacPro 1,1 sysdef......


@mm2margaret,

You are correct to disabling the IGPU when using iMacPro 1,1.

If your Vega 56 is a reference design then it should be using the "Kamarang" frame buffer. For my Sapphire Vega 64 LC I use a hot patch SSDT to configure the "Kamarang" frame buffer on all ports and set ACPI device name of "LTRE"

Code:
DefinitionBlock ("", "SSDT", 2, "hack", "Wake", 0x00000000)
{
    External (_SB_.PCI0.PEG0.PEGP.LTRE, DeviceObj)    // (from opcode)

    Device (_SB.PCI0.PEG0.PEGP.LTRE)
    {
        Name (_ADR, Zero)  // _ADR: Address
        Device (GFX0)
        {
            Name (_ADR, Zero)  // _ADR: Address
            Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
            {
                If (LEqual (Arg2, Zero))
                {
                    Return (Buffer (One)
                    {
                         0x03                                           
                    })
                }

                Return (Package (0x10)
                {
                    "AAPL,slot-name",
                    Buffer (0x07)
                    {
                        "Slot-1"
                    },

                    "@0,name",
                    Buffer (0x0D)
                    {
                        "ATY,Kamarang"
                    },

                    "@1,name",
                    Buffer (0x0D)
                    {
                        "ATY,Kamarang"
                    },

                    "@2,name",
                    Buffer (0x0D)
                    {
                        "ATY,Kamarang"
                    },

                    "@3,name",
                    Buffer (0x0D)
                    {
                        "ATY,Kamarang"
                    },

                    "device_type",
                    Buffer (0x13)
                    {
                        "ATY,KamarangParent"
                    },

                    "model",
                    Buffer (0x13)
                    {
                        "Radeon Pro Vega 64"
                    },

                    "hda-gfx",
                    Buffer (0x0A)
                    {
                        "onboard-2"
                    }
                })
            }
        }

        Device (HDAU)
        {
            Name (_ADR, One)  // _ADR: Address
            Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
            {
                If (LEqual (Arg2, Zero))
                {
                    Return (Buffer (One)
                    {
                         0x03                                           
                    })
                }

                Return (Package (0x04)
                {
                    "layout-id",
                    Buffer (0x04)
                    {
                         0x01, 0x00, 0x00, 0x00                         
                    },

                    "hda-gfx",
                    Buffer (0x0A)
                    {
                        "onboard-2"
                    }
                })
            }
        }
    }
}


You could try using the above SSDT code ... however you should first check the PCIe path your Vega 56 is on.

My Vega 64 is on "_SB_.PCI0.PEG0.PEGP" and the above code then adds the ACPI device name "LTRE"

If necessary you should modify the "External" and "Device" declarations in the code, you can also change the model name to "Radeon Pro Vega 56" then compile it using MaciASL and save as SSDT-Vega.aml, finally copy SSDT-Vega.aml to /EFI/Clover/ACPI/Patched.

On my system, without this SSDT the Vega 64 does not have a real ACPI device name which can cause problems when setting the AMD frame buffer.

I also have the latest versions of Lilu + WhatEverGreen installed in /L/E.

Thats what works for me.

Cheers
Jay
 
Has anyone been able to fix the DisplayPort audio bug with Radeon VII and Mojave? nothing seems to help fix this.
 
@mm2margaret,

You are correct to disabling the IGPU when using iMacPro 1,1.

If your Vega 56 is a reference design then it should be using the "Kamarang" frame buffer. For my Sapphire Vega 64 LC I use a hot patch SSDT to configure the "Kamarang" frame buffer on all ports and set ACPI device name of "LTRE"

Code:
DefinitionBlock ("", "SSDT", 2, "hack", "Wake", 0x00000000)
{
    External (_SB_.PCI0.PEG0.PEGP.LTRE, DeviceObj)    // (from opcode)

    Device (_SB.PCI0.PEG0.PEGP.LTRE)
    {
        Name (_ADR, Zero)  // _ADR: Address
        Device (GFX0)
        {
            Name (_ADR, Zero)  // _ADR: Address
            Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
            {
                If (LEqual (Arg2, Zero))
                {
                    Return (Buffer (One)
                    {
                         0x03                                          
                    })
                }

                Return (Package (0x10)
                {
                    "AAPL,slot-name",
                    Buffer (0x07)
                    {
                        "Slot-1"
                    },

                    "@0,name",
                    Buffer (0x0D)
                    {
                        "ATY,Kamarang"
                    },

                    "@1,name",
                    Buffer (0x0D)
                    {
                        "ATY,Kamarang"
                    },

                    "@2,name",
                    Buffer (0x0D)
                    {
                        "ATY,Kamarang"
                    },

                    "@3,name",
                    Buffer (0x0D)
                    {
                        "ATY,Kamarang"
                    },

                    "device_type",
                    Buffer (0x13)
                    {
                        "ATY,KamarangParent"
                    },

                    "model",
                    Buffer (0x13)
                    {
                        "Radeon Pro Vega 64"
                    },

                    "hda-gfx",
                    Buffer (0x0A)
                    {
                        "onboard-2"
                    }
                })
            }
        }

        Device (HDAU)
        {
            Name (_ADR, One)  // _ADR: Address
            Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
            {
                If (LEqual (Arg2, Zero))
                {
                    Return (Buffer (One)
                    {
                         0x03                                          
                    })
                }

                Return (Package (0x04)
                {
                    "layout-id",
                    Buffer (0x04)
                    {
                         0x01, 0x00, 0x00, 0x00                        
                    },

                    "hda-gfx",
                    Buffer (0x0A)
                    {
                        "onboard-2"
                    }
                })
            }
        }
    }
}


You could try using the above SSDT code ... however you should first check the PCIe path your Vega 56 is on.

My Vega 64 is on "_SB_.PCI0.PEG0.PEGP" and the above code then adds the ACPI device name "LTRE"

If necessary you should modify the "External" and "Device" declarations in the code, you can also change the model name to "Radeon Pro Vega 56" then compile it using MaciASL and save as SSDT-Vega.aml, finally copy SSDT-Vega.aml to /EFI/Clover/ACPI/Patched.

On my system, without this SSDT the Vega 64 does not have a real ACPI device name which can cause problems when setting the AMD frame buffer.

I also have the latest versions of Lilu + WhatEverGreen installed in /L/E.

Thats what works for me.

Cheers
Jay

Thanks!
 
Back
Top