Become a MacRumors Supporter for $25/year with no ads, private forums, and more!

MP All Models Tired of low Geekbench scores? Use RadeonBoost!

CMMChris

macrumors 6502
Original poster
Oct 28, 2019
386
272
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.jpg metal-ohne-radeonboost.jpg
Radeon VII Geekbench OpenCL (1st with Radeon Boost, 2nd without)
opencl-mit-radeonboost.jpg opencl-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: 1,792
Last edited:

h9826790

macrumors P6
Apr 3, 2014
15,121
7,428
Hong Kong
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
Comment

loumedia

macrumors newbie
Apr 3, 2020
8
2
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
 
Comment

Macintosh IIcx

macrumors 6502
Jul 3, 2014
440
421
Denmark
Nice!

As an owner of a Radeon VII, the natural question then is: will it improve performance on anything besides GeekBench? 🤔
 
Comment

Pressure

macrumors 601
May 30, 2006
4,268
492
Denmark
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
 
Comment

h9826790

macrumors P6
Apr 3, 2014
15,121
7,428
Hong Kong
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:
Comment

loumedia

macrumors newbie
Apr 3, 2020
8
2
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?
 
Comment

miztahsparklez

macrumors newbie
Jul 9, 2010
18
6
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?
 
Comment

Syncretic

macrumors regular
Apr 22, 2019
127
240
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:
Comment

IndioX

macrumors 6502a
Oct 1, 2018
857
358
austria/europe
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:
Comment

pawkor

macrumors newbie
Sep 4, 2010
25
21
Poland
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
 
Comment

Tizucumacu

macrumors newbie
Jun 21, 2010
11
2
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
Comment

h9826790

macrumors P6
Apr 3, 2014
15,121
7,428
Hong Kong
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
Comment

loumedia

macrumors newbie
Apr 3, 2020
8
2
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
 
Comment

Tizucumacu

macrumors newbie
Jun 21, 2010
11
2
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.
 
Comment

pierrox

macrumors 6502
Jun 19, 2015
253
80
Paris, France
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?
 
Comment

loumedia

macrumors newbie
Apr 3, 2020
8
2
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>
 
Comment

pawkor

macrumors newbie
Sep 4, 2010
25
21
Poland
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
 
Comment

loumedia

macrumors newbie
Apr 3, 2020
8
2
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.
 
Comment
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.