Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

CMMChris

macrumors 6502a
Original poster
Oct 28, 2019
850
794
Germany (Bavaria)
OUTDATED. PLEASE DON'T USE THIS KEXT ON ANYTHING LATER THAN CATALINA.
THIS KEXT IS NOT BEING MAINTAINED ANYMORE BECAUSE I SWITCHED TO APPLE SILICON MACS

Hello everyone!

Together with the help of @DSM2.Hackintosh I built a Kext aiming at removing limitations put in place by Apple for PC graphics cards that reduce performance in some benchmarks like Geekbench and some scenarios where memory bandwidth is crucial.

Likely most of you already know the issue that some GPUs don't perform as expected in Geekbench. For example, a Radeon VII only scores around 50k to 60k points while on Windows it can easily reach the 82k range - with overclocking even more. This issue is not only affecting the Radeon VII but numerous other graphics cards as well.

This problem started back when macOS 10.14.5 Mojave was released, introducing the fix for fan control on Vega 56 / 64 cards. As it turns out, Apple never fixed the fan issues but instead put a dirty workaround in place. Modern AMD GPUs utilize a so-called SMU firmware to manage some of the cards functions. This SMU firmware needs to be uploaded by the graphics driver. It looks like the Vega 56 / 64 fan control bug was caused by a faulty SMU firmware implementation by Apple. Instead of fixing it, all they did was to disable loading of SMU firmware on PC graphics cards. This can be verified by force loading the SMU firmware again on Vega 56 / 64 cards. The fan control bug will then be back. Not loading SMU firmware causes a number of issues and one of them is memory bandwidth being cut in half. Since Geekbench is very sensitive to memory bandwidth, this is what causes the low scores.

So essentially, Apple scammed their customers here, putting a dirty fix in place that now affects a large amount of graphics cards. And of course this not only affects hackintosh users but also Mac Pro users or eGPU users, utilizing PC graphics cards on their Mac.

Now this is where my RadeonBoost Kext comes in. It makes sure that SMU firmware is loaded again, removing the memory bandwidth limitations, making sure the GPU can be used to its fullest potential. The results really speak for themselves.

Radeon VII Geekbench Metal (1st with Radeon Boost, 2nd without)
metal-mit-radeonboost.jpgmetal-ohne-radeonboost.jpg
Radeon VII Geekbench OpenCL (1st with Radeon Boost, 2nd without)
opencl-mit-radeonboost.jpgopencl-ohne-radeonboost.jpg

RadeonBoost.kext has been built with Hackintosh users in mind, but of course it does work on a real Mac as well. That includes both Mac Pros as well as Macs with an eGPU. You can either inject the kext via OpenCore or put it into /Library/Extensions, repair permissions and rebuild kext cache. Putting it inside /L/E of course requires SIP (System Integrity Protection) to be disabled since the Kext is not signed.

Of course you can go ahead and edit the info.plist of RadeonBoost.kext to your likings. For example you can add your own properties. This comes handy if you want to additionally overclock or undervolt your GPU by using a PowerPlay Table, which of course can be added to the Kext as well.

List of supported GPUs:
  • RX480, RX580, RX590 (!!! USE ALONG WHATEVERGREEN !!!)
  • Radeon VII, RX 5500, RX 5500 XT, RX 5600, RX 5700, RX 5700 XT (WHATEVERGREEN NOT NECESSARY)

Download & Changelog
  • May 28 2020: V1.6 - Disabled SMU Firmware Loading for Navi10/14 due to broken SMU firmware starting from macOS 10.15.5, improved Polaris compatibility
  • April 24 2020: V1.4 - Added target SMBIOSes for AGPM injector to prevent overriding of stock AGPM configuration on SMBIOSes that don't need an AGPM injector (e.g. iMac19,1 etc)
  • April 20 2020: V1.3 Replaced "ATY,EFIVersion" with "ForceLoadFalconSmuFirmware" (thanks to Whatevergreen developers for discovery of this parameter), changed Polaris properties (RX480, 580, 590 users please re-test), removed Apple framebuffer properties (performance difference is minor)
  • April 19 2020: V1.2 Removed support for Vega 56, Vega 64 and Vega Frontier (REASON)
  • April 19 2020: V1.1 Removed unnecessary device properties, added integrated AGPM injector for SMBIOSes where it makes sense (iMacPro1,1; MacPro7,1; MacPro5,1; MacPro4,1)
  • April 17 2020: V1.0 Initial Public Release
For download of RadeonBoost.kext please check this posts attachements.

Enjoy!
 

Attachments

  • RadeonBoost.kext.zip
    3.5 KB · Views: 3,950
Last edited:
Also, it's feeling more "complete" to see the VBIOS version and EFI Driver version for my Radeon VII now :)
Screenshot 2020-04-18 at 1.28.07 AM.png
 
Last edited:
  • Like
Reactions: MIKX
I can confirm that CMMChris's RadeonBoost kext works as expected on cMP.

Also, as a beta tester of this kext, I can also confirm that no stability issue after running this kext.

I have opencore setup on my mac pro. Do i just have to copy the Kext file to my OC > Kexts folder and paste it? Any changes need to the config? I am using a Radeon Vii
 
Nice!

As an owner of a Radeon VII, the natural question then is: will it improve performance on anything besides GeekBench? 🤔
 
I suppose it overrides whatever PowerPlay table you have already implemented?

Slow score is with the RadeonBoost kext (blue) and the normal score (green) is with my own overclock on VEGA FE.

Screenshot 2020-04-17 at 20.02.31.png
 
I have opencore setup on my mac pro. Do i just have to copy the Kext file to my OC > Kexts folder and paste it? Any changes need to the config? I am using a Radeon Vii
You need to add the follow in the config plist under Kernel -> add
Code:
            <dict>
                <key>BundlePath</key>
                <string>RadeonBoost.kext</string>
                <key>Comment</key>
                <string></string>
                <key>Enabled</key>
                <true/>
                <key>ExecutablePath</key>
                <string></string>
                <key>MaxKernel</key>
                <string></string>
                <key>MinKernel</key>
                <string></string>
                <key>PlistPath</key>
                <string>Contents/Info.plist</string>
            </dict>
Just put the kext in OC/Kexts won't do anything. We need to tell OC how to load this kext.

[code updated to remove Contents/MacOS/PropertyInjector]
 
Last edited:
You need to add the follow in the config plist under Kernel -> add
Code:
            <dict>
                <key>BundlePath</key>
                <string>RadeonBoost.kext</string>
                <key>Comment</key>
                <string></string>
                <key>Enabled</key>
                <true/>
                <key>ExecutablePath</key>
                <string>Contents/MacOS/PropertyInjector</string>
                <key>MaxKernel</key>
                <string></string>
                <key>MinKernel</key>
                <string>18.0.0</string>
                <key>PlistPath</key>
                <string>Contents/Info.plist</string>
            </dict>
Just put the kext in OC/Kexts won't do anything. We need to tell OC how to load this kext.

I added it to the config plist. I also added it to the OC > Kexts folder. I rebooted but I do not see the VBIOS update in the graphics/display as you do.

Code:
<key>Kernel</key>
    <dict>
        <key>Add</key>
        <array>
            <dict>
                <key>BundlePath</key>
                <string>Lilu.kext</string>
                <key>Comment</key>
                <string></string>
                <key>Enabled</key>
                <true/>
                <key>ExecutablePath</key>
                <string>Contents/MacOS/Lilu</string>
                <key>MaxKernel</key>
                <string></string>
                <key>MinKernel</key>
                <string>18.0.0</string>
                <key>PlistPath</key>
                <string>Contents/Info.plist</string>
            </dict>
            <dict>
                <key>BundlePath</key>
                <string>WhateverGreen.kext</string>
                <key>Comment</key>
                <string>Video card</string>
                <key>Enabled</key>
                <true/>
                <key>ExecutablePath</key>
                <string>Contents/MacOS/WhateverGreen</string>
                <key>MaxKernel</key>
                <string></string>
                <key>MinKernel</key>
                <string>18.0.0</string>
                <key>PlistPath</key>
                <string>Contents/Info.plist</string>
            </dict>
            <dict>
                <key>BundlePath</key>
                <string>RadeonBoost.kext</string>
                <key>Comment</key>
                <string></string>
                <key>Enabled</key>
                <true/>
                <key>ExecutablePath</key>
                <string>Contents/MacOS/PropertyInjector</string>
                <key>MaxKernel</key>
                <string></string>
                <key>MinKernel</key>
                <string>18.0.0</string>
                <key>PlistPath</key>
                <string>Contents/Info.plist</string>
            </dict>
            <dict>
                <key>BundlePath</key>
                <string>AppleMCEReporterDisabler.kext</string>
                <key>Comment</key>
                <string>DisableAppleIntelMCEReporter</string>
                <key>Enabled</key>
                <true/>
                <key>ExecutablePath</key>
                <string></string>
                <key>MaxKernel</key>
                <string></string>
                <key>MinKernel</key>
                <string>19.0.0</string>
                <key>PlistPath</key>
                <string>Contents/Info.plist</string>
            </dict>
        </array>

What am i doing wrong?
 
I also have this issue. Doesn't seem to be loading for me using OpenCore

I added it to the config plist. I also added it to the OC > Kexts folder. I rebooted but I do not see the VBIOS update in the graphics/display as you do.

What am i doing wrong?
 
Non-OC data point:
* MP3,1 running Catalina, SIP disabled
* RX570 (same device-id as RX580, 0x67df)
* RadeonBoost linked into kernel (in /L/E)

The only difference RadeonBoost.kext seems to make is that the GPU fan hits 100% for about 5-10 seconds during mid-boot (remains slow/silent without the kext), which suggests that the kext is doing something. Various benchmarks were identical with/without the kext, and there is no noticeable difference in normal usage.
(EDIT: I do see the VBIOS Version and EFI Driver Version in System Information, so the kext is definitely being loaded.)

Do you think this is due to lack of explicit support for RX570, or something else? In every other context I've tested, the RX570 is functionally identical to the RX580, just slower.
 
Last edited:
benchmark works in geekbench as kext in library/extensions

openCL 71940
metal 95118

but luxmark ?


radeonVII_luxmark_boost.jpg



and furmark with 44fps without 59 fps !?!
 
Last edited by a moderator:
yes, OC injection does not work
It works. There is no executable file in kext, remove
<key>ExecutablePath</key>
<string>Contents/MacOS/PropertyInjector</string>


Whole section from my config.plist
<dict>
<key>BundlePath</key>
<string>RadeonBoost.kext</string>
<key>Comment</key>
<string></string>
<key>Enabled</key>
<true/>
<key>MaxKernel</key>
<string></string>
<key>MinKernel</key>
<string></string>
<key>PlistPath</key>
<string>Contents/Info.plist</string>
</dict>

VBIOS Version: 113-C944A1XT-014
EFI Driver Version: 01.00.3180
 
I've install it in my 7,1 MacPro with a Vega 56 and the difference in performance looks very good in GeekBench. The downside is that now, my Vega 56 fan is loud even in idle. Any ideea how to turn it down ?

i've put the kext in /Library/Extensions
then i've run these commands in terminal :
Code:
sudo chmod -R 755 /Library/Extensions/RadeonBoost.kext
sudo chown -R root:wheel /Library/Extensions/RadeonBoost.kext
sudo touch /Library/Extensions
sudo kextcache -update-volume
reboot

Screenshot 2020-04-17 at 22.25.28.png
 
Last edited:
  • Like
Reactions: Flint Ironstag
I suppose it overrides whatever PowerPlay table you have already implemented?

Slow score is with the RadeonBoost kext (blue) and the normal score (green) is with my own overclock on VEGA FE.

View attachment 906822
This is the detail scores comparison from my Radeon VII.
Screenshot 2020-04-18 at 3.28.27 AM.png

Apparently Something like Sobel can benefit from this kext a lot. But Stereo Matching perform pretty much the same.

And NO, this kext shouldn't infringe the PowerPlay kext for downvolting. I checked that on my cMP.
 
  • Like
Reactions: Flint Ironstag
It works. There is no executable file in kext, remove
<key>ExecutablePath</key>
<string>Contents/MacOS/PropertyInjector</string>


Whole section from my config.plist
<dict>
<key>BundlePath</key>
<string>RadeonBoost.kext</string>
<key>Comment</key>
<string></string>
<key>Enabled</key>
<true/>
<key>MaxKernel</key>
<string></string>
<key>MinKernel</key>
<string></string>
<key>PlistPath</key>
<string>Contents/Info.plist</string>
</dict>

VBIOS Version: 113-C944A1XT-014
EFI Driver Version: 01.00.3180

That worked! Thanks
 
I've instal it in my 7,1 MacPro with a Vega 56 and the difference in performance looks very good in GeekBench. The downside is that now, my Vega 56 fan is loud even in idle. Any ideea how to turn it down ?

Strangely, looks like the old trick to use a HEVC video to play in quicktime, calmed down the fans.
 
It works. There is no executable file in kext, remove
<key>ExecutablePath</key>
<string>Contents/MacOS/PropertyInjector</string>


Whole section from my config.plist
<dict>
<key>BundlePath</key>
<string>RadeonBoost.kext</string>
<key>Comment</key>
<string></string>
<key>Enabled</key>
<true/>
<key>MaxKernel</key>
<string></string>
<key>MinKernel</key>
<string></string>
<key>PlistPath</key>
<string>Contents/Info.plist</string>
</dict>

VBIOS Version: 113-C944A1XT-014
EFI Driver Version: 01.00.3180

That's such a neat amazing cool thing!
I'll try that since I have a RX 580.
The kexts are injected in the order of the config.plist if I remember correctly? Where do you put this in the config.plist, after which kext?
 
That's such a neat amazing cool thing!
I'll try that since I have a RX 580.
The kexts are injected in the order of the config.plist if I remember correctly? Where do you put this in the config.plist, after which kext?

I placed it after WhateverGreen.kext use this code below.
Code:
<dict>
<key>BundlePath</key>
<string>RadeonBoost.kext</string>
<key>Comment</key>
<string></string>
<key>Enabled</key>
<true/>
<key>MaxKernel</key>
<string></string>
<key>MinKernel</key>
<string></string>
<key>PlistPath</key>
<string>Contents/Info.plist</string>
</dict>
 
I placed it first in config.plist but Geekbench results look like some random()
Without booster opencl 44691, metal 50696
First try with booster
opencl 54003, metal 52775

Seemed low so I disabled lilu and whatever green, lost 2 of 3 monitors and hevc encoding, h.264 was still there
opencl 55220, metal 62803

back with lilu+whatever
opencl 53070, metal 59197

VMM enabled
 
I placed it first in config.plist but Geekbench results look like some random()
Without booster opencl 44691, metal 50696
First try with booster
opencl 54003, metal 52775

Seemed low so I disabled lilu and whatever green, lost 2 of 3 monitors and hevc encoding, h.264 was still there
opencl 55220, metal 62803

back with lilu+whatever
opencl 53070, metal 59197

VMM enabled

Did you follow post #16 in the tread? That fixed it for me.
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.