Jump to content
Welcome to InsanelyMac.com - No more ads! And some exciting news... Read more... ×
CMMChris

[KEXT] Tired of low Geekbench scores? Use RadeonBoost!

136 posts in this topic

Recommended Posts

Posted (edited)
45 minutes ago, CMMChris said:

Hello everyone!

I am sure a lot of you have observed that PC cards like the RX580, RX590, Vega 56, Vega 64, Radeon VII, RX 5700 XT and so on show significantly lower Geekbench scores on macOS than they do on Windows. Also, for some reason, the Apple counterparts of those GPUs don't seem to be affected by that. As it turns out, reason for that are the Framebuffers that Apple uses for their GPUs. While PC cards use the generic RadeonFramebuffer, the Radeon Pro Vega II for instance uses the Araguaia framebuffer. When inspecting those framebuffers for Apple GPUs closely, you will notice that they come with some additional driver parameters. Now when injecting those parameters to the RadeonFramebuffer, the artificial lock is removed and the Geekbench scores go up to the level you'd expect.

 

This is why I created a little Kext called "RadeonBoost" which takes care of that automatically. It basically recognizes which GPU model you use and then goes ahead and injects the appropriate driver parameters to the RadeonFramebuffer which in exchange gives you the Geekbench scores you'd expect from your rig.

 

Demo of the result:

  Reveal hidden contents

 

Radeon VII Geekbench Metal (1st with Radeon Boost, 2nd without)

metal-mit-radeonboost.thumb.jpg.feeddb78ee1b8a4916a96268d1ac83aa.jpgmetal-ohne-radeonboost.thumb.jpg.04680de68d1c0992b2a9700920ad7083.jpg

Radeon VII Geekbench OpenCL (1st with Radeon Boost, 2nd without)

opencl-mit-radeonboost.thumb.jpg.4c83d68d2170df19bcec6b2ce9c20419.jpgopencl-ohne-radeonboost.thumb.jpg.b61640546b9733d0155ed4835a0c4b02.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. On a Hackintosh you of course can keep injecting them through the bootloader without having to edit the kext.

 

List of supported GPUs: RX580, RX590, Vega 56, Vega 64, Vega Frontier, Radeon VII, RX 5500, RX 5500 XT, RX 5600, RX 5700, RX 5700 XT

 

Download & Changelog

  • April 17 2020: V1.0 Initial Public Release

 

For download of RadeonBoost.kext please check this posts attachements.

Enjoy!

RadeonBoost.kext.zip

Awesome concept but one question, why are you using AppleUSBMergeNub as the IOClass for injection? Shouldn't that be on the AMD10000Controller IOClass.

zQLltSU.png

Edited by Pavo

Share this post


Link to post
Share on other sites

Because I can merge properties with it. Easiest way to get the job done. There are other kexts as well that use MergeNub for that purpose.

Share this post


Link to post
Share on other sites

Hi CMMChris, thanks for sharing! Few questions please, could you give some advice to add RX560 and RX570?

Is it compatible with AGPMInjector?

Share this post


Link to post
Share on other sites
1 hour ago, Simonej said:

Hi CMMChris, thanks for sharing! Few questions please, could you give some advice to add RX560 and RX570?

Is it compatible with AGPMInjector?

It should be, cause it works on my RX-480.

Share this post


Link to post
Share on other sites
7 hours ago, CMMChris said:

Because I can merge properties with it. Easiest way to get the job done. There are other kexts as well that use MergeNub for that purpose.

Would you mind if I added this to AGPMInjector?

Share this post


Link to post
Share on other sites
Posted (edited)
5 hours ago, Pavo said:

Would you mind if I added this to AGPMInjector?

You mean the additional device properties for each GPU I use in my kext? Better wait until this one is finished. There are some reported issues I have to deal with. For some reason it doesn't work with an eGPU right now and Navi14 support appears to be broken at the moment.

17 minutes ago, DocXavier said:

Hi CMMChris, many thanks! It works on my RX460

Unlikely, the Kext doesn't contain the RX460 device id.

6 hours ago, Simonej said:

Is it compatible with AGPMInjector?

It's just injecting device properties so it shouldn't be interfering with anything else.

Edited by CMMChris

Share this post


Link to post
Share on other sites
9 minutes ago, CMMChris said:

Unlikely, the Kext doesn't contain the RX460 device id.

Ops ... It was a false test with Geekbench¡¡ I made it just before installing your kext with a result of 11k aprox. Restart, test again and 21k ... because of that I thought the kext was working, sorry ... I have tried right now disabling the kext, and result was 21k ...

It would be possible to ad RX460 device?

 

Anyway, many thanks¡¡

Share this post


Link to post
Share on other sites

Nice! Thanks for this very user friendly method of tweaking.

macOS 10.15.4 - ASUS RX 5700, kext put to Clover/kexts/Other

Before:

  • OpenCL: 43361
  • Metal: 38024

After:

  • OpenCL: 53861
  • Metal: 59954

On Windows OpenCL is 64951 so it is a nice improvement indeed!

 

@r!ppz No, it does not improve gaming performance.

Most games are performing bad on macOS because of the bad implementation of the graphics API (most games are using an outdated OpenGL API, not Metal, for ex. CSGO is horrible with 130 FPS on macOS, 250+ on Windows). Unfortunately only developers could improve the performance by tweaking their games to perform better.

Share this post


Link to post
Share on other sites

Sapphire RX580 with or without this injector kext still the same result (I think), no significant improvements.

GB 5

with kext

Metal 48442

OpenCL 41336

----------------

without kext

Metal 47908

OpenCL 40838

Share this post


Link to post
Share on other sites

I just test with OpenCore

AMD Radeon RX Vega 64 Compute Engine

574913860_ScreenShot2020-04-18at4_58_00AM.thumb.png.34fd65fadb8b8ae6a9526221786c307e.png

Share this post


Link to post
Share on other sites
10 minutes ago, r!ppz said:

What about Metal games like World of Warcraft?

If I guess correctly (from your signature) you are using an RX 5700 XT. In wow your GPU will never be on 100% utilisation because the game itself is not that demanding. So you might see no difference with/without the kext, but of course you can try and correct me if I'm wrong. If there is a game that could maximise GPU utilisation, that might see a little FPS increase.

I tried Unigine Valley bench (OpenGL), ended up with 93 avg. FPS with and without kexts. in Borderlands 2 (which is using Metal) avg. FPS was ~180 FPS with/without the kext. CSGO (OpenGL) is the same with ~120 FPS

Share this post


Link to post
Share on other sites

I am GPU limited in WoW cause of my 5k display. I play at 50% render resolution.

Share this post


Link to post
Share on other sites
1 minute ago, r!ppz said:

I am GPU limited in WoW cause of my 5k display. I play at 50% render resolution.

In that fact you might see a little increase in my opinion, try it and let us know!

Share this post


Link to post
Share on other sites
1 minute ago, kushwavez said:

In that fact you might see a little increase in my opinion, try it and let us know!

 

I cranked up to 100% render scale. It can sustain 60fps now in crowded areas. However, that card gets so loud. Never heard it that loud before lol.

Share this post


Link to post
Share on other sites
11 minutes ago, r!ppz said:

 

I cranked up to 100% render scale. It can sustain 60fps now in crowded areas. However, that card gets so loud. Never heard it that loud before lol.

I think it's just because now the game can utilise more power, and the fans will ramp up to stay the card cool (note: macOS and Windows using different profiles for fan controlling). 

Share this post


Link to post
Share on other sites

Gigabyte RX580 Gaming 8 GB

 

Before:

Metal     Opencl

53159    32944

 

After:

Metal     Opencl

52931    33168

 

Windows:

Vulcan    Opencl

54364     47046

 

Share this post


Link to post
Share on other sites

New version 1.2 added in first post. Vega10 support has been removed (Vega 56, Vega 64, Vega Frontier).

 

Reason:
People have observed fan control being broken when using this kext like it was the case prior to the release of macOS 10.14.5 Mojave. You remember? 10.14.5 was the macOS release that fixed the fan issues with Vega 56, 64 and Frontier cards. But you might also remember that exactly with this release the Geekbench scores have become lower as well.

 

Thanks to the developers of Whatevergreen we now know that Apple disabled the loading of the SMU Firmware to PC graphics cards with this release of macOS. macOS does now check for the device property "ATY,EFIVersion" before uploading the SMU firmware to the graphics card. Adding it back causes the SMU firmware to be loaded again and is the main reason for the increase in Geekbench scores. Anyhow, it also causes the Vega10 fan bug to come back.

 

It really looks like Apple never fixed the Vega10 fan control issues which apparently are caused by a bug inside the SMU firmware. So they simply did a dirty hack, disabling the firmware for all PC cards and thus essentially crippling them in some way.

 

Since I cannot fix this issue and a silent card is more important than Geekbench scores, I decided to drop Vega10 support for RadeonBoost.

If you are pissed about the way Apple does handle bug fixing these days, open bug reports about this issue.

Share this post


Link to post
Share on other sites
15 minutes ago, CMMChris said:

New version 1.2 added in first post. Vega10 support has been removed (Vega 56, Vega 64, Vega Frontier).

 

Reason:
People have observed fan control being broken when using this kext like it was the case prior to the release of macOS 10.14.5 Mojave. You remember? 10.14.5 was the macOS release that fixed the fan issues with Vega 56, 64 and Frontier cards. But you might also remember that exactly with this release the Geekbench scores have become lower as well.

 

Thanks to the developers of Whatevergreen we now know that Apple disabled the loading of the SMU Firmware to PC graphics cards with this release of macOS. macOS does now check for the device property "ATY,EFIVersion" before uploading the SMU firmware to the graphics card. Adding it back causes the SMU firmware to be loaded again and is the main reason for the increase in Geekbench scores. Anyhow, it also causes the Vega10 fan bug to come back.

 

It really looks like Apple never fixed the Vega10 fan control issues which apparently are caused by a bug inside the SMU firmware. So they simply did a dirty hack, disabling the firmware for all PC cards and thus essentially crippling them in some way.

 

Since I cannot fix this issue and a silent card is more important than Geekbench scores, I decided to drop Vega10 support for RadeonBoost.

If you are pissed about the way Apple does handle bug fixing these days, open bug reports about this issue.

You can add PowerPlayTable to the Vega 10 section of the kext and it fixes the fan issue. Confirmed working from 2 users

Share this post


Link to post
Share on other sites

  • Recently Browsing   0 members

    No registered users viewing this page.

×