Hinweis vom 23. August 2020: Da ich mich von hier und anderen Hackintosh Communities bis auf weiteres aus der Öffentlichkeit zurückziehe, wird RadeonBoost erstmal nicht weiter entwickelt. Da Apple der Kext mit Big Sur diverse Riegel vorschieben wird, empfehle ich mit der nächsten macOS Version auch die Nutzung nicht mehr.
Ich habe mal wieder gebastelt (danke an DSM2 für die Unterstützung!) und eine Kext gebaut mit welcher sich die Limitierungen für PC Karten unter macOS umgehen lassen, welche vor allem in Geekbench für zu niedrige Ergebnisse sorgen.
Die Problematik dürfte ja hinreichend bekannt sein, dass z.B. eine Radeon VII unter macOS in Geekbench Metal im Bereich von 50-60k Zählern herumdümpelt, während unter Windows aber auch mit einer Pro Vega II (was nahezu dieselbe Grafikkarte ist) deutlich höhere Punktzahlen erreicht werden. Die Problematik zeigt sich nicht nur bei der Radeon VII sondern auch den meisten anderen Karten (RX580, RX590, Vega 56, Vega 64, RX 5700 (XT), etc.
Hintergrund der Geschichte ist der vermeintliche Lüfter Fix für Vega 56 / 64 / Frontier Karten den Apple mit macOS 10.14.5 Mojave eingeführt hat. Wie sich mittlerweile herausgestellt hat, lag der Fehler welcher für nicht funktionierende Lüftersteuerung gesorgt hat in der SMU Firmware (System Management Unit), welche vom Grafiktreiber auf die Karte geladen wird. Statt den Fehler jedoch zu beheben, hat Apple einfach das Laden der SMU Firmware für PC Grafikkarten eingestellt. Dies führt in erster Linie zu einer reduzierten Speicherbandbreite (ca. halbiert) und damit zu den niedrigen Geekbench Scores, da der Benchmark extrem empfindlich auf die Speicherbandbreite von Grafikkarten reagiert.
Apple hat seine Nutzer hier im Grunde betrogen und wäre hier am Zug endlich einen richtigen Fix für die Problematik zu implementieren. Das scheint aber auf absehbare Zeit nicht zu passieren, weshalb es mit RadeonBoost nun einen Workaround gibt. Die Kext sorgt dafür, dass die SMU Firmware wieder geladen wird und die Karten so performen wie sie sollen. Zudem gibt es noch ein paar weitere Parameter die mit der Kext injiziert werden und diverse kleine Problemchen beheben können.
Was Polaris Karten angeht setzen diese auf eine SMC Firmware statt eine SMU Firmware. Auch hier kann aber je nach Modell und Hersteller der Karte ein Vorteil durch Laden der SMC Firmware entstehen. Wenn es beispielsweise nach dem Standby zu Taktproblemen oder verminderter Leistung kommt, kann auch hier RadeonBoost Abhilfe schaffen. Für Polaris Grafikkarten müsst ihr RadeonBoost zwingend mit Whatevergreen kombinieren!
Eine weitere Baustelle die RadeonBoost übernimmt ist das Thema AGPM. Passende AGPM Injektoren sind in der Kext eingebaut, sodass ihr AGPM ohne weitere Anpassungen mit eurer Grafikkarte nutzen könnt. Die AGPM Injektoren zielen auf die SMBIOSe iMacPro1,1 und alle MacPro Varianten ab, in denen AGPM nach Device IDs statt ACPI Gerätenamen konfiguriert wird. Die restlichen iMac SMBIOSe werden nicht abgedeckt, da die Werkskonfiguration von AGPM bereits durch die Targetierung von ACPI Gerätenamen passend ist. In diesen Fällen sind also keine Anpassungen nötig.
Nutzung
Um die Kext zu nutzen müsst ihr nichts großartig an eurem System verändern.
Einfach die Kext in eure EFI packen und fertig. Das ganze funktioniert natürlich sowohl mit OpenCore als auch mit Clover. Nicht vergessen bei OpenCore die Kext auch in die config.plist einzutragen!
An einem echten Mac (z.B. im Mac Pro oder auch jedem anderen Mac mit eGPU) lässt sich RadeonBoost ebenfalls nutzen. Hier könnt ihr die Kext nach /L/E kopieren, Rechte reparieren und den Kext Cache neu aufbauen. Bedenkt aber, dass hierzu die SIP (System Integrity Protection) deaktiviert sein muss.
Solltet ihr bereits per Clover oder OpenCore Device Properties zusätzliche Parameter wie z.B. eine PowerPlay Table auf eure Grafikkarte injecten, bleibt dies davon unberührt. Hier funktioniert also alles wie gehabt. Mac Pro / eGPU Nutzer können entsprechende Zusatzparameter wie eine PowerPlay Table auch direkt in die info.plist der RadeonBoost.kext einbauen und so die Grafikkarte übertakten, undervolten - was auch immer man tun möchte.
Resultate?
Beispiel Radeon VII in einem Cheese Grater Mac Pro
Wie ihr seht normalisieren sich die Benchmark Ergebnisse in Geekbench. Der Hackintosh wird damit endlich auch hier vergleichbar mit echten Macs. Selbiges gilt für eGPUs am echten Mac.
Merkt man den großen Unterscheid auch im tatsächlichen Einsatz? Jein! Nur einige der "Sub-Tests" von Geekbench schneiden besser ab, was zum Anstieg der Scores führt. Das bedeutet, dass es nur in spezifischen Workloads eine Verbesserung gibt. Im Alltag ist der spürbare Unterscheid also deutlich geringer. Ich persönlich konnte aber in manchen Spielen wie z.B. Dirt4 teils deutliche Verbesserungen spüren und auch die OpenCL/GL Performance scheint sich dadurch leicht zu verbessern. In Dirt4 hatte ich auf manchen Strecken mit Stottern zu kämpfen. Mit RadeonBoost ist das Phänomen verschwunden.
Download & Changelog
- 28. Mai 2020: V1.6 - Disabled SMU Firmware Loading for Navi10/14 due to broken SMU firmware starting from macOS 10.15.5, improved Polaris compatibility
- 13. Mai 2020: V1.5 - Added back some parameters based on users feedback, fixes for Polaris cards
- 24. April 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)
- 20. April 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)
- 19. April 2020: V1.2 - Removed support for Vega 56, Vega 64 and Vega Frontier - read about the reason here and here
- 19. April 2020: V1.1 - Removed some unnecessary device properties, changed DisableDIDT back to 0, added AGPM configurations for SMBIOSes where it makes sense including stock profiles for real Macs
18. April 2020: Zurückgezogen- 17. April 2020: V1.0 - initial public release
RadeonBoost ist derzeit kompatibel mit folgenden GPUs:
- RX480, RX580, RX590 (!!!bitte mit Whatevergreen nutzen!!!)
- Radeon VII,
RX 5500, RX 5500 XT, RX 5600, RX 5600 XT, RX 5700, RX 5700XT(Whatevergreen nicht zwingend nötig)