Contribute
Register

Radeon Compatibility Guide - ATI/AMD Graphics Cards

Joined
Nov 4, 2016
Messages
113
Motherboard
GA-Z170x-Designare
CPU
Core i7-6700k
Graphics
AMD FirePro W9000 + Radeon 7970
@LostVector I have a PowerColor RX580 8GB with 3DP and 1 HDMI... as helper card I use the integrated (IGFX) HD630, which works perfectly. DO you know if there is any chance to have 5K working with my rig? Actually I have 2 monitors (both DP attached): one 4K and one 2K.
Based on the other user's experience, it should work. 5k is a little bit of a pain in the ass tho. A good 4k monitor looks quite close rescaled and it's much less hassle.
 
Joined
Aug 1, 2012
Messages
456
Motherboard
Asus Z490 Prime A
CPU
i9-10900K
Graphics
VEGA VII
Mac
  1. MacBook Pro
Mobile Phone
  1. iOS
Based on the other user's experience, it should work. 5k is a little bit of a pain in the ass tho. A good 4k monitor looks quite close rescaled and it's much less hassle.
Yes, I know... but I'm so tempted to try it out as I read what you wrote on post #1000 ... I'll keep you posted. could you be so kind to link me the original thread where you explain the modification to the kext?
 
Last edited:
Joined
Aug 26, 2016
Messages
47
Motherboard
Intel S2600CP2J
CPU
2 x Intel Xeon E5-2670
Graphics
AMD Radeon HD7970 GHz Edition
Mac
  1. MacBook Pro
  2. Mac Pro
Mobile Phone
  1. iOS
@Fl0r!an i was wondering if you could help me out with something.

I managed to get my hands on a reference 7970, but I'm getting a boot to black screen under El Capitan.

What settings should I be using in Clover? E.g. Do I need to include connector info, Inject ATI, and so on?
 
Joined
Aug 1, 2012
Messages
456
Motherboard
Asus Z490 Prime A
CPU
i9-10900K
Graphics
VEGA VII
Mac
  1. MacBook Pro
Mobile Phone
  1. iOS
5K ENABLED (with some limitations)​

the machine is that in the signature (Elektra).

Monitors:

GPU:


Modifications to kexts according to post #998 , I made the following:

  • The frame buffer personality used by ATI graphic card needs to use policies described by AGDP.kext. In my case, as I'm using an RX480/RX580 the correct kext is AMD9510Controller.kext. Open its info.plist and search for this var "CFG_USE_AGDC" , without quotes), and put it to true. In this kext there are two occurrences for this variable:
Code:
<key>CFG_USE_AGDC</key>
                    <true/>
but in other AMD kexts it could be different. So put attention at this aspect.​
  • the AGDP.kext contained in AGP.kext has been modified in its info.plist:
Code:
<key>Config1</key>
            <dict>
                <key>GFX1</key>
                <dict>
                    <key>unload</key>
                    <true/>
                </dict>
            </dict>
            <key>Custom</key>  //created a custom EMPTY section
            <dict>
            </dict>
            <key>Config2</key>
            <dict>
                <key>GFX0</key>
                <dict>
                    <key>EDID</key>
                    <dict>
                        <key>index</key>
                        <integer>0</integer>
                    </dict>
                    <key>FeatureControl</key>
                    <integer>12</integer>
                    <key>unload</key>
                    <false/>
                </dict>
            </dict>
            <key>Config3</key>
            <dict>
                <key>GFX0</key>
                <dict>
                    <key>EDID</key>
                    <dict>
                        <key>index</key>
                        <integer>0</integer>
                    </dict>
                    <key>FeatureControl</key>
                    <integer>12</integer>
                    <key>unload</key>
                    <false/>
                </dict>
                <key>IGPU</key>
                <dict>
                    <key>unload</key>
                    <true/>
                </dict>
            </dict>
            <key>ConfigMap</key>
            <dict>
                <key>Mac-00BE6ED71E35EB86</key>
                <string>none</string>
                <key>Mac-031B6874CF7F642A</key>
                <string>none</string>
                <key>Mac-27ADBB7B4CEE8E61</key>
                <string>none</string>
                <key>Mac-42FD25EABCABB274</key>
                <string>Config2</string>
                <key>Mac-4B7AC7E43945597E</key>
                <string>none</string>
                <key>Mac-65CE76090165799A</key>
                <string>Config2</string>
                <key>Mac-77EB7D7DAF985301</key>
                <string>none</string>
                <key>Mac-81E3E92DD6088272</key>
                <string>none</string>
                <key>Mac-B809C3757DA9BB8D</key>
                <string>Config2</string>
                <key>Mac-C3EC7CD22292981F</key>
                <string>none</string>
                <key>Mac-C9CF552659EA9913</key>
                <string>none</string>
                <key>Mac-DB15BD556843C820</key> //my board ID points to Custom
                <string>Custom</string>
                <key>Mac-F221BEC8</key>
                <string>none</string>
                <key>Mac-F221DCC8</key>
                <string>none</string>
                <key>Mac-F42C88C8</key>
                <string>none</string>
                <key>Mac-F60DEB81FF30ACF6</key>
                <string>Config1</string>
                <key>Mac-FA842E06C61E91C5</key>
                <string>Config2</string>
                <key>Mac-FC02E91DDD3FA6A4</key>
                <string>none</string>
            </dict>
            <key>Default</key> //default must point to Custom as well
            <dict>
                <key>Custom</key>
                <string></string>
            </dict>
Remember that all the previous modifications to have RX480/RX580 correctly working with acceleration must remain in place. Including Clover Kext to Patches section, if any.

At this point install both the modified kexts in S/L/E (backup the originals in some safe folder before), rebuild the cache and restart the hack.

Et voilà! HP Z27Q is working 5K and it's magnificent!!! :)
And it works with whatever combinations of my three DP on my GPU. (1-3), (2-3), (1-2) all works just fine.


412dqrVGi4L.jpg

As you can see I still have 1 DP, 1 HDMI, and 1 DVI available. I tried to connect my 2K BenQ monitor to any port available and it doesn't work anymore. It works only if connected to the integrated HD530 (which I don't want to because in this way I loose the sleep/wake functionality).

I revert to my classical configuration: one 4K monitor and one 2K monitor and it's the same story even without 5K: only one monitor allowed from RX480/RX580 at once with these kexts modifications.
So my preliminary conclusion is that in this way no matter if MST or SST but only ONE monitor is allowed to work with GFX0.


Fl0r!an
LostVector

Do you have any possible idea to have my multi monitor configurations back still keeping the 5K working? I'm open to experimenting with suggested kext modifications. Thank you.
 
Last edited:
Joined
Nov 4, 2016
Messages
113
Motherboard
GA-Z170x-Designare
CPU
Core i7-6700k
Graphics
AMD FirePro W9000 + Radeon 7970
I think this is probably an issue with your specific card configuration and macOS. I'm using a FirePro W7000 which is about as close to the MacPro 6,1 cards as you can get (I chose it specifically for that reason, even tho the chip architecture is a little out of date) ... and I'm driving two 5k monitors off its four displayports just fine. The tricky part for me is the fact that I'm only ever able to drive MST / 5K monitors off one of the ATI cards at any time (I have been testing with a 7970 and the W7000 and three Dell UP2715K's).
 
Joined
Nov 4, 2016
Messages
113
Motherboard
GA-Z170x-Designare
CPU
Core i7-6700k
Graphics
AMD FirePro W9000 + Radeon 7970
More 5K/MST information:

displaypolicyd is responsible for making MST/5K support work. It requires AGDC to even run, which is why AGDC must be enabled somehow in the controller kext. If you run a "strings" command on it (in /usr/libexec) you will see tons and tons of MST related stuff. However, I have not discovered what any of the switches or other options in there mean. launchd runs displaypolicyd with a "-k 1" param. No idea what that does either.

There seem to be tons of assumptions in Apple's code that you will only have one ATI card present.

1. If you try to run two different ATI cards with the auto detected RadeonFramebuffer, the second card will malfunction because it tries to use the first card's framebuffer on the second one. The way around this is presumably to add and patch specific framebuffers with SSDT's, etc. But this is very difficult because the patching features in Clover are oriented around a single card as well.

2. displaypolicyd only ever seems to load against one video card. As I've mentioned before, I've never gotten MST / 5K support to work on multiple cards.

Also, using two different video cards creates a once per second stutter on my system. I'm not sure what the source of this is, but the only common pattern is using more than one video card at a time. As soon as you turn off all the monitors on any extra video cards, the problem goes away. It's subtle and doesn't manifest in normal work, but watch a video with it once and you'll never unsee it.

So ... the only viable way to do serious multi monitor and especially multi MST monitors is to buy an ATI card with as many ports as you can get on it. I'd really love to test with a FirePro W9000 as I have every expectation it would drive all of my 5K monitors at once, but it's not a cheap card and Vega + modular Mac Pro is just around the corner ... seems like the runway for it wouldn't be that long.
 
Last edited:
Joined
Aug 1, 2012
Messages
456
Motherboard
Asus Z490 Prime A
CPU
i9-10900K
Graphics
VEGA VII
Mac
  1. MacBook Pro
Mobile Phone
  1. iOS
I think this is probably an issue with your specific card configuration and macOS. I'm using a FirePro W7000 which is about as close to the MacPro 6,1 cards as you can get (I chose it specifically for that reason, even tho the chip architecture is a little out of date) ... and I'm driving two 5k monitors off its four displayports just fine. The tricky part for me is the fact that I'm only ever able to drive MST / 5K monitors off one of the ATI cards at any time (I have been testing with a 7970 and the W7000 and three Dell UP2715K's).

Probably you might be right because a deeper analysis leads me to this preliminary conclusion:

  • As I'm using an RX480/RX580 the correct kext is AMD9510Controller.kext. In its info.plist the occurrences of "CFG_USE_AGDC" var are two. What I discover is that the first one is normally set to false, the second one is already set to true. If you put the 1st one to true you got the MST/5K functionality and if you revert it to false you lose it, no matter what you do the AGDP.kext contained in AGP.kext. The second occurrence of that var is not influential for getting 5K.
  • The amount of modifications in the AGDP.kext seems to be irrelevant. Infact I tried to repopulate the Custom section adding at least the GFX0 key, just to be sure it points to the wanted GPU but it changes nothing. I.e. :

Code:
            <key>Custom</key>
            <dict>
                <key>GFX0</key>
                <dict>
                    <key>EDID</key>
                    <dict>
                        <key>index</key>
                        <integer>0</integer>
                    </dict>
            </dict>
</dict>

it won't lead to any changes in the multi-monitor behaviour. But 5K/MST will be still in place.


My hope is that, since 12.6 or even High Sierra, would have an OOB support for RX480/580 with dedicated kexts, other than AMD9510 and different frame buffers than Baffin (which is used one), the situation can improve and we can have multi-monitor support back in place. As for my understanding till 12.5 the support of RX480 has been infact based upon the fact RX460 cards are OOB native in MacOS because of their MacBookPro presences. But RX460 it has 1DP only in its reference design. Of course this is just a supposition!
 
Joined
Nov 4, 2016
Messages
113
Motherboard
GA-Z170x-Designare
CPU
Core i7-6700k
Graphics
AMD FirePro W9000 + Radeon 7970
As I'm using an RX480/RX580 the correct kext is AMD9510Controller.kext. In its info.plist the occurrences of "CFG_USE_AGDC" var are two. What I discover is that the first one is normally set to false, the second one is already set to true. If you put the 1st one to true you got the MST/5K functionality and if you revert it to false you lose it, no matter what you do the AGDP.kext contained in AGP.kext. The second occurrence of that var is not influential for getting 5K.
That's very odd because the first instance of CFG_USE_AGDC is inside the Berbice framebuffer. Which means, of course, that your card is using the Berbice framebuffer. It's possible the framebuffer usage is hardcoded into that particular kext, or you've injected/setup framebuffers in such a way that the auto-detecting RadeonFramebuffer is not being used.
 
Joined
Aug 1, 2012
Messages
456
Motherboard
Asus Z490 Prime A
CPU
i9-10900K
Graphics
VEGA VII
Mac
  1. MacBook Pro
Mobile Phone
  1. iOS
That's very odd because the first instance of CFG_USE_AGDC is inside the Berbice framebuffer. Which means, of course, that your card is using the Berbice framebuffer. It's possible the framebuffer usage is hardcoded into that particular kext, or you've injected/setup framebuffers in such a way that the auto-detecting RadeonFramebuffer is not being used.

RX480/580 are loaded thanks to another kext, which is AMDRadeonX4100.kext. But inside this one there is no instance of CFG_USE_AGDC var. But inside the info.plist of this kext there are references to Baffin acceleration and as matter of fact my card has been seen as a "Baffin prototype", that's to say Baffin unknown model.
 
Last edited:
Top