- Joined
- Jul 22, 2018
- Messages
- 7,519
- Motherboard
- Supermicro X11SPA-T
- CPU
- Intel Xeon W-3275 28 Core
- Graphics
- 2xAMD RX 580 8GB
- OS X/macOS
- 13.x
- Bootloader
- OpenCore (UEFI)
- Mac
- Mac mini
- MacBook Pro
- Mobile Phone
- Android
- iOS
How to Improve IGPU Performance (Intel Graphics) on macOS
This guide describes how to improve IGPU Graphics Performance on macOS. The guide is supported by both, Clover and OpenCore bootloader. By following this guide, you'll be able to fix the IGPU Performance on macOS using Clover or OpenCore bootloader.
Overview
Requirements
Following are the requirements for improving IGPU performance on macOS. Please ensure you meet the requirements before proceeding with this guide.
STEP 1: Enable Graphics Acceleration
Before you skip to improve IGPU performance, you need to enable your Graphics with full acceleration. To enable the Graphics, select the framebuffer. To set the framebuffer, follow STEP #4 from the guide linked below.
STEP 2: Enable GuC Firmware
Loading Apple GuC (Graphics Micro Code) Firmware can be used to improve IGPU performance. To load the Apple
Requirements:
To force enable GuC firmware, you'll need to use the
1. Mount your ESP
2. Open your config.plist
3. Depending on the bootloader you use, add the following properties to your config.plist under
4. If you don't want to inject the property using Device Properties, you can use the same patch using
5. Once added, save your config.plist.
Verifying GuC Firmware Loading
The next step is to verify whether GuC Firmware is loading or not.
Download Hackintool
Firmware Load Status (when successful):
If the firmware loading is successful, you'll see something similar in the Kernel log
Firmware Load Status (when failed):
If the firmware loading is unsuccessful, you'll see something similar in the Kernel log
STEP 3: Enable RPS Control Patch
The next step is to enable RPS Control Patch. To enable RPS Control Patch, you'll need to use the
1. Mount your ESP
2. Open your config.plist
3. Depending on the bootloader you use, add the following properties to your config.plist under
4. If you don't want to inject the property using Device Properties, you can use the same patch using
5. Once added, save your config.plist.
Verifying the IGPU Performance
The next step is to verify whether the IGPU performance is working as expected or not. Follow the steps below to verify the IGPU performance.
This guide describes how to improve IGPU Graphics Performance on macOS. The guide is supported by both, Clover and OpenCore bootloader. By following this guide, you'll be able to fix the IGPU Performance on macOS using Clover or OpenCore bootloader.
Overview
Requirements
Following are the requirements for improving IGPU performance on macOS. Please ensure you meet the requirements before proceeding with this guide.
CPU |
|
GPU |
|
macOS |
|
SMBIOS |
|
Kexts |
|
Tools |
|
STEP 1: Enable Graphics Acceleration
Before you skip to improve IGPU performance, you need to enable your Graphics with full acceleration. To enable the Graphics, select the framebuffer. To set the framebuffer, follow STEP #4 from the guide linked below.
GUIDE - How to Enable Intel HD and UHD Graphics on macOS - Intel Framebuffer Patching Guide
How to Enable Intel HD and UHD Graphics on macOS - Intel Framebuffer Patching Guide An EliteMacx86 Exclusive Guide - This guide covers fixing Intel HD and UHD Graphics on macOS. By following this guide, you'll be able to enable Intel Graphics with acceleration on macOS with full QE/CI on your...
elitemacx86.com
STEP 2: Enable GuC Firmware
Loading Apple GuC (Graphics Micro Code) Firmware can be used to improve IGPU performance. To load the Apple
Requirements:
- Intel Skylake and newer CPU
- macOS compatible IGPU. See IGPU Compatibility for more information.
- Intel 300 series or newer, except for the Z370 chipset.
- Apple Guc firmware loading is disabled by default and is bugged. It is enabled exclusively by using the igfxfw=2 boot argument.
- Enabling GuC firmware will eventually lead to IGPU locking at high frequency when utilizing the IGPU at max and the frequency will not drop even when the IGPU usage is back to an idle state. Only Sleep/Wake or restart will reload the Guc firmware and the frequency will be dropped back to normal. Currently, this issue has not been investigated or fixed.
- CPU scheduling performance was fixed by WEG 1.4.0 allowing the IGPU frequency to reach high values without GuC. This is enabled by default and can be disabled by the igfxnorpsc=1 boot argument. Without igfxfw=2 and with igfxnorpsc=1 WEG 1.4.1 should also work correctly, but the IGPU will not be able to reach high frequencies.
- Apple GuC firmware doesn't work on old 22-nanometer chipsets such as Z370 and older.
- Firmware loading is not guaranteed to work even on a newer chipset.
- When forcing the firmware to load and if the firmware loading fails, the system will still boot after 50 retries and result in no Graphics acceleration.
- If you experience a Gfx firmware loop or a Kernel panic when following this step, it is probably because firmware loading is not supported on your system and you should undo this step.
To force enable GuC firmware, you'll need to use the
igfxfw=2
property on IGPU. To add the igfxfw=2
property, follow the steps below.1. Mount your ESP
2. Open your config.plist
3. Depending on the bootloader you use, add the following properties to your config.plist under
Devices>Properties
(for Clover) and DeviceProperties
(for OpenCore)Devices | Key | Value | Type | Notes |
---|---|---|---|---|
PciRoot(0x0)/Pci(0x2,0x0) | igfxfw | 02000000 | DATA |
|
4. If you don't want to inject the property using Device Properties, you can use the same patch using
igfxfw=2
boot-arg in your config.plist.5. Once added, save your config.plist.
Verifying GuC Firmware Loading
The next step is to verify whether GuC Firmware is loading or not.
Download Hackintool
Firmware Load Status (when successful):
If the firmware loading is successful, you'll see something similar in the Kernel log
Code:
2020-12-11 11:38:00.726498+0000 localhost kernel[0]: (AppleIntelCFLGraphics) <AppleIntelCFLGraphics`IGGuC::LogGuCLoadRetry(char const*, unsigned int)> [IGPU] Begin Gfx firmware load process
2020-12-11 11:38:00.726503+0000 localhost kernel[0]: (AppleIntelCFLGraphics) <AppleIntelCFLGraphics`IGGuC::LogGuCLoadRetry(char const*, unsigned int)> [IGPU] Begin Gfx firmware load process
2020-12-11 11:38:00.726505+0000 localhost kernel[0]: (AppleIntelCFLGraphics) <AppleIntelCFLGraphics`IGGuC::LogGuCLoadRetry(char const*, unsigned int)> [IGPU] ForceWake Multithread = 0x30002
2020-12-11 11:38:00.726508+0000 localhost kernel[0]: (AppleIntelCFLGraphics) <AppleIntelCFLGraphics`IGGuC::LogGuCLoadRetry(char const*, unsigned int)> [IGPU] ForceWake Multithread = 0x30002
2020-12-11 11:38:00.726509+0000 localhost kernel[0]: (AppleIntelCFLGraphics) <AppleIntelCFLGraphics`IGGuC::LogGuCLoadRetry(char const*, unsigned int)> [IGPU] CONFIG0 (0xD00) = 0x80000000
2020-12-11 11:38:00.726512+0000 localhost kernel[0]: (AppleIntelCFLGraphics) <AppleIntelCFLGraphics`IGGuC::LogGuCLoadRetry(char const*, unsigned int)> [IGPU] CONFIG0 (0xD00) = 0x80000000
2020-12-11 11:38:00.726514+0000 localhost kernel[0]: (AppleIntelCFLGraphics) <AppleIntelCFLGraphics`IGGuC::LogGuCLoadRetry(char const*, unsigned int)> [IGPU] GT_THREAD_STATUS = 0x400b0000
2020-12-11 11:38:00.726517+0000 localhost kernel[0]: (AppleIntelCFLGraphics) <AppleIntelCFLGraphics`IGGuC::LogGuCLoadRetry(char const*, unsigned int)> [IGPU] GT_THREAD_STATUS = 0x400b0000
2020-12-11 11:38:00.726518+0000 localhost kernel[0]: (AppleIntelCFLGraphics) <AppleIntelCFLGraphics`IGGuC::LogGuCLoadRetry(char const*, unsigned int)> [IGPU] Doing retry #0
2020-12-11 11:38:00.726520+0000 localhost kernel[0]: (AppleIntelCFLGraphics) <AppleIntelCFLGraphics`IGGuC::loadBinary(bool)> [IGPU] Doing retry #0
2020-12-11 11:38:00.765770+0000 localhost kernel[0]: (AppleIntelCFLGraphics) <AppleIntelCFLGraphics`IGGuC::loadBinary(bool)> [IGPU] Graphics Firmware Version: 2.14.0.0
2020-12-11 11:38:00.765775+0000 localhost kernel[0]: (AppleIntelCFLGraphics) <AppleIntelCFLGraphics`IGGuC::loadBinary(bool)> [IGPU] Graphics Firmware Version: 2.14.0.0
2020-12-11 11:38:00.770041+0000 localhost kernel[0]: (AppleIntelCFLGraphics) <AppleIntelCFLGraphics`IntelAccelerator::start(IOService*)> [IGPU] Graphics accelerator is using scheduler: Apple Firmware
2020-12-11 11:38:00.770045+0000 localhost kernel[0]: (AppleIntelCFLGraphics) <AppleIntelCFLGraphics`IntelAccelerator::start(IOService*)> [IGPU] Graphics accelerator is using scheduler: Apple Firmware
Firmware Load Status (when failed):
If the firmware loading is unsuccessful, you'll see something similar in the Kernel log
Code:
[IGPU] Hash date from ME never returned, status = 1, doing retry #50
[IGPU] Begin Gfx firmware load process
[IGPU] ForceWake Multithread = 0x30002
[IGPU] CONFIG0 (0xD00) = 0x80000000
[IGPU] GT_THREAD_STATUS = 0x400b0000
[IGPU] Doing retry #50
[IGPU] Failed to initialize graphics firmware.
[IGPU] Failed to start graphics engine
[IGPU] request to send Host -> Gfx firmware message when the firmware channel is not active!
[IGPU] Failed to send wait-for-idle request to firmware
busy extended ok[1], (60s, 102s)
IOConsoleUsers: time(0) 0->0, lln 0, llk 1,
IOConsoleUsers: gIOScreenLockState 3, hs 0, now 0, sm 0x0
STEP 3: Enable RPS Control Patch
The next step is to enable RPS Control Patch. To enable RPS Control Patch, you'll need to use the
igfxrpsc=1
property on IGPU. To add the igfxrpsc=1
property, follow the steps below.1. Mount your ESP
2. Open your config.plist
3. Depending on the bootloader you use, add the following properties to your config.plist under
Devices>Properties
(for Clover) and DeviceProperties
(for OpenCore)Devices | Key | Value | Type | Notes |
---|---|---|---|---|
PciRoot(0x0)/Pci(0x2,0x0) | rps-control | 01000000 | DATA |
|
4. If you don't want to inject the property using Device Properties, you can use the same patch using
igfxrpsc=1
boot-arg in your config.plist.5. Once added, save your config.plist.
Verifying the IGPU Performance
The next step is to verify whether the IGPU performance is working as expected or not. Follow the steps below to verify the IGPU performance.
Last edited: