Contribute
Register

DSDT/SSDT-patching AMD RX 580 proper working advise

Status
Not open for further replies.
Joined
Jun 18, 2011
Messages
59
Motherboard
Gigabyte Z490m Gaming X
CPU
i5-10600
Graphics
RX 580
Mac
  1. iMac
  2. MacBook Pro
Mobile Phone
  1. iOS
Hey guys,

I'm a bit lost when it comes to techniques to get proper working AMD RX 580 with sleep/wake. I read on the interwebs; Whatervergreen and Lilu with personalities, framebuffer injection, kext-patching, DSDT-patching, SSDT-patching. Not using Whatevergreen. I'm totally lost. I don't know what is best practice today. I prefer DSDT/SSDT-patching.

I've got a Gigabyte Z87M-D3H Mobo, use Identity imac-14.2 and a Sapphire RX 580 8GB (with 2x DP, 2x HDMI and DVI-D. Think this is personality= Orinoco). I've dumped ACPI-tables with Clover (and later with Patchmatic).
  • Whatevergreen + Lilu doesn't work with Clover framebuffer personalities. A get artifacts on background of DP-screen. Second screen with HDMI doesn't work but is recognized in macOS Mojave > stays black though.
  • The DSDT-patch that did the best trick is "has=dsdt-ami-8_series_hdmi_audio.txt" (it's a laptop-patch) alongside with setting igpu to primary in BIOS. But sometimes video/system just crash. Or doesn't wake or doesn't boot. igpu is now recognized in Mojave, second screen works. Don't use Whatevergreen and Clover personalities. Sometimes second screen doesn't work and sometimes primary screen doesn't work > stays black. Have to do reattach cable.
  • Then did some reading on Insanelymac and here about "Tracing back the AMD GPU wakeup issue to its origin" and "Radeons Compatibility Guide - ATI/AMD Graphic Cards". Maybe I shouldn't patch DSDT for IGPU and GFX0 but SSDT-1-SaSsdt.aml. I'm not sure though. The unpatched DSDT (with patchmatic) contains device PEG0.PEGP and GFX0. DSDT.aml shows in External _SB_.PCIE.IGPU.xxx and _SB_.PCIE.PEGP.GFX0.xxx. I'm not sure what this means.

Who is willing to give me some pointers....

I've attached original APCI-tables dumped with Patchmatic. Also included Clover's config.plist.
 

Attachments

  • DSDT.aml
    53.5 KB · Views: 466
  • SSDT-1-SaSsdt .aml
    13.2 KB · Views: 499
  • config.plist
    6.5 KB · Views: 407
Last edited:
Okay guys I'm a bit further. I have decompiled SSDT's and DSDT in commandline; https://github.com/RehabMan/Intel-iasl Patching and Compiling SSDT-3-SaSsdt.aml with MacIASL just throws some errors you cant resolve. You have to decompile in Terminal;
Code:
iasl -da -dl DSDT.aml SSDT*.aml dynamic/SSDT*

I've patched DSDT with proper patched and searched first for "GFX0" and replaced it with "IGPU", then searched for "PEGP" and replaced it with "GFX0". All compiles nice. First check the impact by finding entries. I've patched SSDT-3-SaSsdt by searching for same entries as in DSDT. Also I dropped SaSsdt-table with Clover. So now dropped 3 tables, 2 dropped for Speedstep;

Code:
        <key>DropTables</key>
        <array>
            <dict>
                <key>Signature</key>
                <string>SSDT</string>
                <key>TableId</key>
                <string>CpuPm</string>
            </dict>
            <dict>
                <key>Signature</key>
                <string>SSDT</string>
                <key>TableId</key>
                <string>Cpu0Ist</string>
            </dict>
            <dict>
                <key>Signature</key>
                <string>SSDT</string>
                <key>TableId</key>
                <string>SaSsdt</string>
            </dict>
        </array>

After restarting system. AMD RX 580 changed from Graphics/Displays > "Metal: Supported, feature set macOS GPUFamily1 v4" to "Metal: Supported, feature set macOS GPUFamily2 v1". Intel HD4600 isn't recognized as Iris Pro or whatever. It's now "Display" might have to fix this. Wallpaper has artifacts though And Graphics have a lot of lag ;-(

So one little step further. Not done though.
 

Attachments

  • DSDT-patched.dsl
    451.9 KB · Views: 341
  • SSDT-3-SaSsdt-patched.dsl
    102.1 KB · Views: 321
For CPU PM, I would recommend you enable PluginType option in your config file. By using this, you can eliminate PM SSDT as well as the DropTable entries for it.

I'm surprised that WhatEverGreen does not work for you. If you're using it along with the Lilu kext then you shouldn't have to rename anything in your DSDT. WhatEverGreen does all that for you. I think you should give it a try once more. When you use this kext, you should not have to modify anything in the config file under Graphics section. Place both WhatEverGreen and Lilu in Other folder and change Inject Kexts to "Yes" temporarily.

If you do try it again, get rid of the DSDT, any SSDTs related to graphics from your patched folder. Also remove any changes you may have made for graphics in your config file.
 
For CPU PM, I would recommend you enable PluginType option in your config file. By using this, you can eliminate PM SSDT as well as the DropTable entries for it.

does it any harm? I'm running the Speedstep/EIST very several OSX/macOS versions. Never give me any problem. What's the advantage of doing the Clover-way?

I'm surprised that WhatEverGreen does not work for you. If you're using it along with the Lilu kext then you shouldn't have to rename anything in your DSDT. WhatEverGreen does all that for you. I think you should give it a try once more. When you use this kext, you should not have to modify anything in the config file under Graphics section. Place both WhatEverGreen and Lilu in Other folder and change Inject Kexts to "Yes" temporarily.

I've put Whatevergreen with Lilu in /kext/other. I've injected Intel-platform-id, RadeonDeinit, Inject ATI and Intel. Framebuffer Orinoco gets injected But second screen isn't switched on. It stays black. Monitor is recognised though.

If you do try it again, get rid of the DSDT, any SSDTs related to graphics from your patched folder. Also remove any changes you may have made for graphics in your config file.
Do you run dual screen with on RX 480? From what I dug in the nets one need SSDT-patching AMD RX460/470/480/580 GPU's for dualscreen. That's why I'm lost. Many approaches...
 
does it any harm? I'm running the Speedstep/EIST very several OSX/macOS versions. Never give me any problem. What's the advantage of doing the Clover-way?

I don't think it matters which way you enable CPU PM. Using the PluginType method requires less files and edits in config file.

I've put Whatevergreen with Lilu in /kext/other. I've injected Intel-platform-id, RadeonDeinit, Inject ATI and Intel. Framebuffer Orinoco gets injected But second screen isn't switched on. It stays black. Monitor is recognised though.

If you're using WhatEverGreen then the kext injects all the appropriate properties for you. You do not have to manually select any option in your config file. You should only inject Intel if you are also using onboard graphics. Properties like ATI, RadeonDeinit, platform-id, and Framebuffer do not have to be manually selected if you are using WhatEverGreen.

Do you run dual screen with on RX 480? From what I dug in the nets one need SSDT-patching AMD RX460/470/480/580 GPU's for dualscreen. That's why I'm lost. Many approaches...

I have never tried using dual monitors with the RX 480. I do have a SSDT for graphics which I mainly use to rename graphics to GFX1 to eliminate black screen issue since I'm using a MacPro6,1 SMBIOS. I am currently not using WhatEverGreen.
 
Okay Whatevergreen and Lilu injects IGPU@2 and GFX0@0. Also 5 ports are recognized. No framebuffer has been set. 5 ports are recognized as ATY,AMD,RadeonFramebuffer. DP-port 4K is shut off when booting. Manual reattaching the DP-connector will enable Dell 4K. I've let DSDT sit in Patched-folder but removed SSDT in Clover ACPI/patched-folder.

Screenshot 2018-10-27 at 11.26.29.png
 
Okay one step further. It appears when you want to apply ACPI-patches "GFX0 to IGPU" and "PEGP to GFX0" you have to enable PluginType=true. So I ditched SSDT for PM generated with PikerAlpha's Script. Also dropped SaSsdt cause of SSDT's in ACPI/patched.

Clover-snippet;
Code:
        <key>DropTables</key>
        <array>
            <dict>
                <key>Signature</key>
                <string>SSDT</string>
                <key>TableId</key>
                <string>SaSsdt</string>
            </dict>
        </array>
        <key>FixHeaders</key>
        <true/>
        <key>SSDT</key>
        <dict>
            <key>DropOem</key>
            <false/>
            <key>Generate</key>
            <dict>
                <key>CStates</key>
                <false/>
                <key>PStates</key>
                <false/>
                <key>PluginType</key>
                <true/>
            </dict>
        </dict>

I've also patched AMD9500Controller.kext with Clover with id of my RX580 (dump bios, open with TextEdit, then convert into Base64);
Code:
            <dict>
                <key>Comment</key>
                <string>RX 580 Identification</string>
                <key>Disabled</key>
                <false/>
                <key>Find</key>
                <data>
                MTEzLTRFMzUzQlU=
                </data>
                <key>InfoPlistPatch</key>
                <false/>
                <key>Name</key>
                <string>AMD9500Controller</string>
                <key>Replace</key>
                <data>
                MTEzLTRFMzUzV1U=
                </data>
            </dict>

With Dualscreen I have to set IGFX as primary in BIOS otherwise second monitor will not switch on. Now one thing I don't understand. When I inject Intel with Haswell platform-id macOS will identify iGPU (good) but RX 580 will change from
feature set macOS GPUFamily2 v1 to GPUFamily1 v4. iGPU doesn't have a monitor connected so no third screen in macOS (good stuff).
Code:
    <key>Graphics</key>
    <dict>
        <key>Inject</key>
        <dict>
            <key>ATI</key>
            <false/>
            <key>Intel</key>
            <true/>
            <key>NVidia</key>
            <false/>
        </dict>
        <key>NvidiaSingle</key>
        <false/>
        <key>RadeonDeInit</key>
        <true/>
        <key>ig-platform-id</key>
        <string>0x0D220003</string>
    </dict>

System sometimes suffer with reboot problems. The milion dollar question is; why is RX 580 sometimes laggy? Everything is really slow. I suspect feature set GPUFamily. Any pointers?

EDIT
Also rebooting will not enable Displayport Monitor, so I have to reattach plug.
 
Last edited:
does it any harm? I'm running the Speedstep/EIST very several OSX/macOS versions. Never give me any problem. What's the advantage of doing the Clover-way?



I've put Whatevergreen with Lilu in /kext/other. I've injected Intel-platform-id, RadeonDeinit, Inject ATI and Intel. Framebuffer Orinoco gets injected But second screen isn't switched on. It stays black. Monitor is recognised though.


Do you run dual screen with on RX 480? From what I dug in the nets one need SSDT-patching AMD RX460/470/480/580 GPU's for dualscreen. That's why I'm lost. Many approaches...


I run a Asus RX580 and both screens light up during the Mojave install. I have both running right now with no configuration yet. I have yet to install even WhateverGreen. Not saying I won't. Just trying to figure out what advantage it gives. My RX 580 is reported properly in 'About' and is functioning well. I am having lag problems with the 'Sony 4k Camp video and my iGPU is set to Auto (enabled). This is what I am trying to solve now.

I am working on my 3770k w/ Mojave in my signature right now, but the setup also works fine on the 8700k w/ High Sierra.
 
Status
Not open for further replies.
Back
Top