Contribute
Register

AMD Radeon Performance Enhanced SSDT

Status
Not open for further replies.
Introduction

A couple of weeks ago I got my hands on a new Navi GPU, The Sapphire RX 5500 XT 4 GB, everything was working but the performance was not there, everyone said it is on pair with the good old RX 580.

So I got my hands on the new macbook pro 16.1,mac pro 7.1, and looking into the ssdt, dsdt and ioreg I saw what was missing from my hackintosh machine.

With a few tweaks and frambuffer injection, the performance went up especially with metal apps, low power consumption too.

The RX 5700 XT SSDT.aml works with RX 5600/5700/5700XT.
The RX 5500 XT SSDT.aml works with RX 5500/5500XT.

This method tries to mimic a real working mac.



How to install

Right now I am using Open Core Bootloader, but it works with clover too.

There are 2 methods for this to work, same methods are used by Apple : SSDT.aml for headless installation or Property Injection method for advanced users ( just copy the things from the SSDT.aml and add into the Property Injection section).


Clover method
  1. First thing to do is to download the SSDT.aml file corresponding to your GPU and drag&drop into /Volumes/EFI/EFI/CLOVER/ACPI/patched
  2. Second thing to do is to download WhateverGreen and place it into /Volumes/EFI/EFI/CLOVER/kexts/Other -- this will fix the video ports
  3. Download the dummy kext dAGPM (made by @toleda) that will help with power management for the GPU and place it into /Volumes/EFI/EFI/CLOVER/kexts/Other
  4. Edit the Clover Config file from /Volumes/EFI/EFI/CLOVER and add this DSDT renaming : rename PEGP to EGP0 find : 50454750 replace : 45475030 also add boot args : agdpmod=pikera (fix black screen on some gpus, mine works without).View attachment 464763


Open Core method
  1. Download the SSDT.aml file corresponding to your GPU and drag&drop into /Volumes/EFI /EFI/OC/ACPI
  2. Second thing to do is to download WhateverGreen and place it into /Volumes/EFI /EFI/OC/Kexts
  3. Download the dummy kext dAGPM (made by @toleda) that will help with power management for the GPU and place it into /Volumes/EFI /EFI/OC/Kexts
  4. Edit the OC config file from /Volumes/EFI /EFI/OC and add this patch renaming TableSignature SSDT find: 50454750 replace : 45475030 comment: replace : 45475030 ---- also add boot args : agdpmod=pikera (fix black screen on some gpus, mine works without)

View attachment 464767 View attachment 464768


5. Add the SSDT.aml file and whatevegreen kext and dAGPM kext into the config file and enable it .

View attachment 464769 View attachment 464770 View attachment 464772View attachment 464773



Conclusion

As you can see in the pictures the performance improve very much, in open gl test there is no improvement, only in open cl and metal, sometimes after opening many apps the score went very high. The open cl score did match the one from Windows 10.
The best performance was achieved using SMBios iMac Pro 1.1, DRM works on all video output ports.

View attachment 464780View attachment 464781 View attachment 464787


Coming soon

RX Vega 64

Hi @mattystonnie Thanks for posting the results of your research, but in the end it does not empower anyone if you do not explain what each properties actually do to the GPU.
I see a lot of requests to fix EFIs but no clear explanations or references (like on Dortania).
Same goes for the kext method. We are still "in the dark".
Also reading the 100s of posts to keep track is not helping. Could you share what you learned and keep the first post updated?
Thanks for your involvement and passion to try resolve the Hacks optimisation gap! :clap:
 
So things I've tried and noticed with the latest RX-580 methods. Tried the SSDT and had no change, Tried the SSDT with adding SSDT-DTGP method and no change. Using the DeviceProperties method has mixed results. Currently I'm using Opencore with the DeviceProperties method. Ive had OpenCL results from 28000s and 36449 "36449 score was after wake from sleep". Metal Scores fluctuate from 35546 to 39457. What I've noticed with HW monitor is normally my memory only runs at 1.0Ghz during benchmarks. For the OpenCL score of 36449 my memory ran at 2.0Ghz. "which is its rated speed". For some reason it only randomly runs at 2.0Ghz in benchmarks. Any ideas?
 

Attachments

  • Paul’s iMac Pro.ioreg
    5.7 MB · Views: 76
  • Screen Shot 2020-05-01 at 2.04.02 PM.png
    Screen Shot 2020-05-01 at 2.04.02 PM.png
    358.5 KB · Views: 105
  • Screen Shot 2020-05-01 at 1.31.55 PM.png
    Screen Shot 2020-05-01 at 1.31.55 PM.png
    2 MB · Views: 124
You mean

Code:
<key>PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)</key>
            <dict>
                <key>@0,name</key>
                <string>ATY,Orinoco</string>
            </dict>

with nothing else in device properties, and use WEG + agdpmod=pikera (which I already do)??

I'm confused because you just told me the post before to remove the Orinoco line otherwise macOS wont boot.
ATY, Orinoco or ATY, Guariba .

I said to remove it because you was getting a black screen, I didnt know you was aiming for low power consumption.
 
Hi @mattystonnie Thanks for posting the results of your research, but in the end it does not empower anyone if you do not explain what each properties actually do to the GPU.
I see a lot of requests to fix EFIs but no clear explanations or references (like on Dortania).
Same goes for the kext method. We are still "in the dark".
Also reading the 100s of posts to keep track is not helping. Could you share what you learned and keep the first post updated?
Thanks for your involvement and passion to try resolve the Hacks optimisation gap! :clap:

I’m just trying to inject the gpu corectly like in a real working mac, mimic a mac.

Only Apple and AMD knows what every framebuffer does exactly.

My goals are better performance that can match windows or a little better.
I am not into overclocking and artificial boost.
 
So things I've tried and noticed with the latest RX-580 methods. Tried the SSDT and had no change, Tried the SSDT with adding SSDT-DTGP method and no change. Using the DeviceProperties method has mixed results. Currently I'm using Opencore with the DeviceProperties method. Ive had OpenCL results from 28000s and 36449 "36449 score was after wake from sleep". Metal Scores fluctuate from 35546 to 39457. What I've noticed with HW monitor is normally my memory only runs at 1.0Ghz during benchmarks. For the OpenCL score of 36449 my memory ran at 2.0Ghz. "which is its rated speed". For some reason it only randomly runs at 2.0Ghz in benchmarks. Any ideas?

Try more monitoring apps for your gpu. Did you tried iStats?
 
Try more monitoring apps for your gpu. Did you tried iStats?
Im running both iStats and HWMonitor. Both show my VRAM staying at 1.0Ghz. Only the one time during an OpenCL bench run did my VRAM hit 2.0Ghz. Strange. But my result was 10K higher.
 
Hi @mattystonnie

a week or two ago, you helped me with my EFI (thanks for that!) and everything seems to be working great. That said, I have yet to find a way to get my GPU temps or frequency to show up in iStat Menu ... do you (or anyone else!!) have any suggestions?
 
@mattystonnie, I am not sure if the injection is loaded successfully in my OC build. Can you point out what I am not doing right? I attached my config.plist and IOReg for your reference. Thanks in advance.
 

Attachments

  • config-SHD.plist
    21.6 KB · Views: 111
  • Radeon-RX580-SHD-IOReg.zip
    2.7 MB · Views: 79
ATY, Orinoco or ATY, Guariba .

I said to remove it because you was getting a black screen, I didnt know you was aiming for low power consumption.

I tried to set the @0,name key to ATY,Orinoco or ATY,Guariba and removed all other keys, so I had only the framebuffer name. Same issue: stuck on a black screen during the middle of the boot.

a week or two ago, you helped me with my EFI (thanks for that!) and everything seems to be working great. That said, I have yet to find a way to get my GPU temps or frequency to show up in iStat Menu ... do you (or anyone else!!) have any suggestions?
Maybe your question is unrelated to this thread.Do a small research and you should find more appropriate topics. Anyway, try switching between FakeSMC and VirtualSMC (but not both at the same time!), make sure they're up to date, and try different builds of HWMonitor (especially the "HWMonitorSMC 2") instead of istat.
 
I tried to set the @0,name key to ATY,Orinoco or ATY,Guariba and removed all other keys, so I had only the framebuffer name. Same issue: stuck on a black screen during the middle of the boot.


Maybe your question is unrelated to this thread.Do a small research and you should find more appropriate topics. Anyway, try switching between FakeSMC and VirtualSMC (but not both at the same time!), make sure they're up to date, and try different builds of HWMonitor (especially the "HWMonitorSMC 2") instead of istat.

Did you boot with -v ? Maybe those framebufers are not for your gpu.
Did you tried all the video ports, like dp, hdmi?
 
Status
Not open for further replies.
Back
Top