Display Configuration

Configuring a laptop's integrated GPU is a lot like configuring a desktop's integrated GPU. You usually start by disabling the dedicated GPU if you have one. This section will talk about the methods that you would use for each component of GPU configuration and how to test that it's working, but there are better guides that already exist to help with the heavy lifting.

Configuring your Display Adapter (GPU)

Depending on your laptop, you may have very little to do to configure your iGPU, or you could have to add an elaborate set of patches to configure stuff like DVMT. The most important thing you'll want here is the WhateverGreen kext and it's dependency, LILU. Lilu is a patching mechanism that's used by multiple kernel extensions, and WhateverGreen is responsible for patching your display adapter(s).

If you haven't already added WhateverGreen to your CLOVER EFI, better do that now before continuing. You can get it here.

Download WhateverGreen

First things first, disable that dGPU!

There are two ways to disable a dGPU in a laptop, the short way and the not so short way. We'll start with the short way because it is really simple. If you don't have a dGPU (NVidia/ATI dedicated graphics) you can skip this part and jump straight to configuring your display adapter instead.

To disable your dGPU the short way, add the following to the Boot/Arguments section of your config.plist.

-wegnoegpu

This command instructs Whatevergreen to disable all internal and external dedicated GPUs. Don't reboot yet, because we still need to get Whatevergreen!

Mission complete? Great! If it doesn't work out the way you would expect, come back and move on the the not so short method using Hackintosh Slav's wonderful guide.

How to disable your unsupported GPU for MacOS

Got it all fixed up? Excellent! Now that this is behind us, it's time to configure your iGPU.

iGPU Configuration

Apple uses Intel graphics cards that have features other GPUs in Intel's line up don't have. For example, with a Hackintosh laptop it is generally not possible to use DRM as FairPlay 2.0 is not supported. Unfortunately it also means that macOS requires that you patch macOS to believe you have a different GPU than you really do. Since these GPUs fall within the same family, we can use the data provided within the macOS Intel driver to build a patch that enables your GPU with full acceleration.

A prerequisite to configuring your iGPU is knowing which GPU you actually have. If you don't already know, look up your CPU using Intel's Ark utility. Once you find your CPU pay attention to the code name, and the graphics adapter. This information will be useful as you configure your GPU patches.

iGPU Patching

We can instruct Whatevergreen to patch your GPU by passing specific parameters to macOS in your config.plist. The table below describes the patches that we will be utilizing. These parameters can be found in config.plist under Devices/Properties.

Key

Function

AAPL,ig-platform-id

This is the platform identifier of the GPU you are spoofing. (required)

device-id

This is the device identifier of the GPU you are spoofing. (required in cases)

framebuffer-patch-enable

This switch enables framebuffer patching. It is required when setting framebuffer patches such as fbmem and stolenmem.

framebuffer-fbmem

This patches framebuffer memory, and is used when you cannot configure DVMT to 64MB in the BIOS. Do not use if the DVMT BIOS option is available.

framebuffer-stolenmem

This patches framebuffer stolen memory, and is used when you cannot configure DVMT to 64MB in the BIOS. Do not use if the DVMT BIOS option is available.

These parameters contain the basics to get you started. If you need more advanced patching to enable your framebuffer, review the Whatevergreen Intel GPU FAQ. The Framebuffer patches are included in the config.plist provided with this guide, however they are disabled. To enable them remove the # symbol from the beginning of the key.

iGPU Patches

Now you are ready to configure your patches. Use the table below to select the patch that most closely resembles the configuration from Ark.

* Denotes the default configured by WhateverGreen.

thicc text Denotes recommended values (taken from WhateverGreen and Rehabman laptop configs)

Intel <Gen> (10.x.x) Denotes the Generation of the Processor and the supported macOS versions.

Intel Ivy Bridge (10.8+)

iGPU

device-id

AAPL,ig-platform-id

Port Count

Stolen Memory

Framebuffer Memory

Video RAM

Connectors

Intel HD Graphics 4000

66010001

01006601

4

96MB

24MB

1536MB

LVDS1 HDMI1 DP2

Intel HD Graphics 4000

66010002

02006601

1

64MB

24MB

1536MB

LVDS1

Intel HD Graphics 4000 1 *

66010003

03006601

4

64MB

16MB

1536MB

LVDS1 DP3

Intel HD Graphics 4000 2

66010004

04006601

1

32MB

16MB

1536MB

LVDS1

Intel HD Graphics 4000

66010008

08006601

3

64MB

16MB

1536MB

LVDS1 DP2

Intel HD Graphics 4000 3

66010009

09006601

3

64MB

16MB

1536MB

LVDS1 DP2

Special Notes:

  • For these cards, no device-id property is required.

  • 1 : to be used with 1366 by 768 displays or lower (main)

  • 2 : to be used with 1600 by 900 displays or higher (main)

  • 3 : to be used with some devices that have eDP connected monitor (contrary to classical LVDS), must be tested with 1 and 2 first then try this.

  • VGA is not supported (unless it's running through a DP to VGA internal adapter, which apparently only rare devices will see it as DP and not VGA, it's all about luck.)

  • For 04006601 platform, as you can tell, it has only one output, which is not enough for external connectors (HDMI/DP), you may need to add these extra parameters (credit to Rehabman)

    Key

    Type

    Value

    Explanation

    framebuffer-patch-enable

    Number

    1

    enabling the semantic patches in principle (from WEG manual)

    framebuffer-memorycount

    Number

    2

    Matching FBMemoryCount to the one on 03006601 (1 on 04 vs 2 on 03)

    framebuffer-pipecount

    Number

    2

    Matching PipeCount to the one on 03006601 (3 on 04 vs 2 on 03)

    framebuffer-portcount

    Number

    4

    Matching PortCount to the one on 03006601 (1 on 04 vs 4 on 03)

    framebuffer-stolenmem

    Data

    00000004

    Matching STOLEN memory to 64MB (0x04000000 from hex to base 10 in Bytes) to the one on 03006601 Check here for more information.

    framebuffer-con1-enable

    Number

    1

    This will enable patching on connector1 of the driver. (Which is the second connector after con0, which is the eDP/LVDS one)

    framebuffer-con1-alldata

    Data

    02050000 00040000 07040000 03040000 00040000 81000000 04060000 00040000 81000000

    When using all data with a connector, either you give all information of that connector (port-bused-type-flag) or that port and the ones following it, like in this case. In this case, the ports in 04 are limited to 1: 05030000 02000000 30020000 (which corresponds to port 5, which is LVDS) However on 03 there are 3 extra ports: 05030000 02000000 30000000 (LVDS, con0, like 04) 02050000 00040000 07040000 (DP, con1) 03040000 00040000 81000000 (DP, con2) 04060000 00040000 81000000 (DP, con3) Since we changed the number of PortCount to 4 in a platform that has only 1, that means we need to define the 3 others (and we that starting with con1 to the end).

  • Some laptops from this era came with a mixed chipset setup, using Ivy Bridge CPUs with Sandy Bridge chipsets which creates issues with macOS since it expects a certain IMEI ID that it doesn't find and would get stuck at boot, to fix this we need to fake the IMEI's IDs in these models

    • To know if you're affected check if your CPU is an intel Core ix-3xxx and your chipset is Hx6x (for example a laptop with HM65 or HM67 with a Core i3-3110M)

    • In your config add a new PciRoot device named PciRoot(0x0)/Pci(0x16,0x0)

      • Key: device-id

      • Type: Data

      • Value: 3A1E0000

Intel Haswell (10.9+)

iGPU

device-id

AAPL,ig-platform-id

Port Count

Stolen Memory

Framebuffer Memory

Video RAM

Connectors

Intel HD Graphics 4400

160a000c

0c00160a

3

64MB

34MB

1536MB

LVDS1 DP2

Intel HD Graphics 5000 1

260a0005

0500260a

3

32MB

19MB

1536MB

LVDS1 DP2

Intel HD Graphics 5000 2

260a0006

0600260a

3

32MB

19MB

1536MB

LVDS1 DP2

Intel Iris Graphics 5100

2e0a0008

08002e0a

3

64MB

34MB

1536MB

LVDS1 DP2

Intel Iris Pro Graphics 5200

260d0007

0700260d

4

64MB

34MB

1536MB

LVDS1 DP2 HDMI1

Intel Iris Pro Graphics 5200

260d0009

0900260d

1

64MB

34MB

1536MB

LVDS1

Intel Iris Pro Graphics 5200

260d000e

0e00260d

4

96MB

34MB

1536MB

LVDS1 DP2 HDMI1

Intel Iris Pro Graphics 5200

260d000f

0f00260d

1

96MB

34MB

1536MB

LVDS1

Special Notes:

  • 1: to be used usually with HD5000, HD5100 and HD5200

    • The device-id of these devices should be supported already by the native macOS drivers.

  • 2: to be used usually with HD4200, HD4400 and HD4600.

    • You must use device-id = 12040000

  • In some cases, just using these values directly would cause some glitches to show up, to mitigate them, we change the size of the cursor byte:

    • framebuffer-patch-enable = 1 (as a Number)

    • framebuffer-cursor = 00009000 (as Data)

      • We change the cursor byte from 6MB (00006000) to 9MB because of some glitches.

Intel Broadwell (10.10.2+)

iGPU

device-id

AAPL,ig-platform-id

Port Count

Stolen Memory

Framebuffer Memory

Video RAM

Connectors

Unlisted iGPU

06160002

02000616

3

34MB

21MB

1536MB

LVDS1 DP2

Unlisted iGPU

0e160001

01000e16

3

34MB

21MB

1536MB

LVDS1 DP2

Intel HD Graphics 5600

12160003

03001216

4

34MB

21MB

1536MB

LVDS1 DP2 HDMI1

Intel HD Graphics 5500

16160002

02001616

3

34MB

21MB

1536MB

LVDS1 DP2

Intel HD Graphics 5300

1e160001

01001e16

3

38MB

21MB

1536MB

LVDS1 DP2

Intel Iris Pro Graphics 6200

22160002

02002216

3

34MB

21MB

1536MB

LVDS1 DP2

Intel HD Graphics 6000

26160002

02002616

3

34MB

21MB

1536MB

LVDS1 DP2

Intel HD Graphics 6000

26160005

05002616

3

34MB

21MB

1536MB

LVDS1 DP2

Intel HD Graphics 6000 *

26160006

06002616

3

34MB

21MB

1536MB

LVDS1 DP2

Intel Iris Graphics 6100

2b160002

02002b16

3

34MB

21MB

1536MB

LVDS1 DP2

Sepcial Notes:

  • For HD5300, HD5500 and HD6000, you do not have to specify any device-id

  • For HD5600 you need device-id faked to 26160000

  • In some cases where you cannot set the DVMT-prealloc of these cards to 96MB higher in your UEFI Setup, you may get a kernel panic. Usually they're configured for 32MB of DVMT-prealloc, in that case these values are added to your iGPU Properties

    Key

    Type

    Value

    framebuffer-patch-enable

    Number

    1

    framebuffer-stolenmem

    Data

    00003001

    framebuffer-fbmem

    Data

    00009000

Intel Skylake (10.11.4+)

iGPU

device-id

AAPL,ig-platform-id

Port Count

Stolen Memory

Framebuffer Memory

Video RAM

Connectors

Intel HD Graphics 530

12190000

00001219

3

34MB

21MB

1536MB

DUMMY1 DP2

Intel HD Graphics 520

16190000

00001619

3

34MB

21MB

1536MB

LVDS1 DP2

Intel HD Graphics 520

16190002

02001619

3

57MB

0MB

1536MB

LVDS1 DP2

Intel HD Graphics 530 *

1b190000

00001b19

3

34MB

21MB

1536MB

LVDS1 DP2

Intel HD Graphics 530

1b190006

06001b19

1

38MB

0MB

1536MB

LVDS1

Intel HD Graphics 515

1e190000

00001e19

3

34MB

21MB

1536MB

LVDS1 DP2

Intel HD Graphics 515

1e190003

03001e19

3

40MB

0MB

1536MB

LVDS1 DP2

Intel Iris Graphics 540

26190000

00002619

3

34MB

21MB

1536MB

LVDS1 DP2

Intel Iris Graphics 540

26190002

02002619

3

57MB

0MB

1536MB

LVDS1 DP2

Intel Iris Graphics 540

26190004

04002619

3

34MB

0MB

1536MB

LVDS1 DP2

Intel Iris Graphics 540

26190007

07002619

3

34MB

0MB

1536MB

LVDS1 DP2

Intel Iris Graphics 550

27190000

00002719

3

34MB

21MB

1536MB

LVDS1 DP2

Intel Iris Graphics 550

27190004

04002719

3

57MB

0MB

1536MB

LVDS1 DP2

Intel Iris Pro Graphics 580

3b190000

00003b19

3

34MB

21MB

1536MB

LVDS1 DP2

Intel Iris Pro Graphics 580

3b190005

05003b19

4

34MB

21MB

1536MB

LVDS1 DP3

Special Notes:

  • For HD515, HD520, HD530 and HD540, you do not need to use device-id faking, they're natively recognised.

    • I would recommend you keep the AAPL,ig-platform-id automatically recognised for each device-id by commenting/removing its entry in the config, otherwise it is recommended to choose 00001619.

  • For HD510 you may need to use device-id=02190000 to fake its device-id.

    • You would need also to use AAPL,ig-platform-id=00001B19 or 00001619

  • For HD550 and P530 (and potentially all HD P-series iGPUs), you may need to use device-id=16190000(recommended) or 12190000 or 26190000 or 1b190000

    • The choice of device-id may help with usable screen on boot up and on wake.

      • For example Lenovo ThinkPad P50 with Xeon CPU will only properly work with 1619.

      • For example Dell Precision 7710 with i7 CPU has issues when set to 1619, using 1b19 or something else may help.

      • It is also recommended using 2619 with Xeon iGPUs.

    • You may also pair it with a proper AAPL,ig-platform-id=00001619(recommended) or 00001219 or 00002619 or 00001b19

  • In some cases where you cannot set the DVMT-prealloc of these cards to 64MB higher in your UEFI Setup, you may get a kernel panic. Usually they're configured for 32MB of DVMT-prealloc, in that case these values are added to your iGPU Properties

    Key

    Type

    Value

    framebuffer-patch-enable

    Number

    1

    framebuffer-stolenmem

    Data

    00003001

    framebuffer-fbmem

    Data

    00009000

Intel Kaby Lake, KBL-R (10.12.6+), & Amber Lake (10.13.6+)

iGPU

device-id

AAPL,ig-platform-id

Port Count

Stolen Memory

Framebuffer Memory

Video RAM

Connectors

Intel HD Graphics 620

16590000

00001659

3

34MB

0MB

1536MB

LVDS1 DP2

Intel HD Graphics 620

16590009

09001659

3

38MB

0MB

1536MB

LVDS1 DP2

Unlisted iGPU

18590002

02001859

0

0MB

0MB

1536MB

Connector:

Intel HD Graphics 630

1b590000

00001b59

3

38MB

21MB

1536MB

LVDS1 DP2

Intel HD Graphics 630

1b590006

06001b59

1

38MB

0MB

1536MB

LVDS1

Unlisted iGPU

1c590005

05001c59

3

57MB

0MB

1536MB

LVDS1 DP2

Intel HD Graphics 615

1e590000

00001e59

3

34MB

0MB

1536MB

LVDS1 DP2

Intel HD Graphics 615

1e590001

01001e59

3

38MB

0MB

1536MB

LVDS1 DP2

Intel Iris Plus Graphics 640

26590002

02002659

3

57MB

0MB

1536MB

LVDS1 DP2

Intel Iris Plus Graphics 650

27590004

04002759

3

57MB

0MB

1536MB

LVDS1 DP2

Intel Iris Plus Graphics 650

27590009

09002759

3

38MB

0MB

1536MB

LVDS1 DP2

Intel UHD Graphics 617

C0870000

0000C087

3

34MB

0MB

1536MB

LVDS1 DP2

Intel UHD Graphics 617

C0870005

0500C087

3

57MB

0MB

1536MB

LVDS1 DP2

Special Notes:

  • For HD615, HD620, HD630, HD640 and HD650 it is not needed to use a device-id, however due to many issues with different setups it is recommended to use:

    • device-id=1b590000 or 16590000

    • AAPL,ig-platform-id=00001659 or 00001b59 (you can try whichever works the best, some even try to cross the device-id and the ig-platform-id)

      • For HD620 users, they can skip the part above (unless you get issues)

  • For UHD620 users, you must use:

    • device-id=87C00000

    • AAPL,ig-platform-id=0000C087

      • Note: UHD630 IS NOT KabyLake, it's CoffeeLake (check next section).

  • For all HD6** (UHD users are not concerned), there are some small issues with output where plugging anything would cause a lock up (kernel panic), here are some patches to mitigate that (credit Rehabman):

    • 0306 to 0105 (will probably explain what it does one day)

    Key

    Type

    Value

    framebuffer-con1-enable

    Number

    1

    framebuffer-con1-alldata

    Data

    01050A00 00080000 87010000 02040A00 00080000 87010000 FF000000 01000000 20000000

    • 0204 to 0105 (will probably explain what it does one day)

    Key

    Type

    Value

    framebuffer-con1-enable

    Number

    1

    framebuffer-con1-alldata

    Data

    01050A00 00080000 87010000 03060A00 00040000 87010000 FF000000 01000000 20000000

  • In some cases where you cannot set the DVMT-prealloc of these cards to 64MB higher in your UEFI Setup, you may get a kernel panic. Usually they're configured for 32MB of DVMT-prealloc, in that case these values are added to your iGPU Properties

    Key

    Type

    Value

    framebuffer-patch-enable

    Number

    1

    framebuffer-stolenmem

    Data

    00003001

    framebuffer-fbmem

    Data

    00009000

Intel Coffee Lake, Comet Lake (14nm++++++) (10.13.6+)

iGPU

device-id

AAPL,ig-platform-id

Port Count

Stolen Memory

Framebuffer Memory

Video RAM

Connectors

Intel UHD Graphics 630

003E0000

0000003E

3

57MB

0MB

1536MB

LVDS1 DP2

Intel UHD Graphics 630

923E0000

0000923E

3

57MB

0MB

1536MB

LVDS1 DP2

Intel UHD Graphics 630

923E0009

0900923E

3

57MB

0MB

1536MB

LVDS1 DUMMY2

Intel UHD Graphics 630

9B3E0000

00009B3E

3

57MB

0MB

1536MB

LVDS1 DP2

Intel UHD Graphics 630

9B3E0006

06009B3E

1

38MB

0MB

1536MB

LVDS1 DUMMY2

Intel UHD Graphics 630

9B3E0009

09009B3E

3

57MB

0MB

1536MB

LVDS1 DP2

Intel Iris Plus Graphics 655

A53E0000

0000A53E

3

57MB

0MB

1536MB

LVDS1 DP2

Intel Iris Plus Graphics 655

A53E0004

0400A53E

3

57MB

0MB

1536MB

LVDS1 DP2

Intel UHD Graphics 630

A53E0005

0500A53E

3

57MB

0MB

1536MB

LVDS1 DP2

Intel Iris Plus Graphics 655

A53E0009

0900A53E

3

57MB

0MB

1536MB

LVDS1 DP2

Unlisted iGPU

A63E0005

0500A63E

3

57MB

0MB

1536MB

LVDS1 DP2

Special Notes:

  • For UHD630 you may not need to fake the device-id as long as it's 8086:9B3E, if it's anything else, you may use device-id=9B3E0000

  • For UHD620 in a Comet Lake CPU requires:

    • device-id=9B3E0000

    • AAPL,ig-platform-id=00009B3E

Intel IceLake (soon™) (10.15.4+)

to be filled

Panel Backlight

Whatevergreen will enable your panel backlight, but to do so you usually have to provide configuration. There are two methods supported by Whatevergreen. Try one and if it doesn't work or your brightness keys are not working, disable it and try the other.

Method 1 - AddPNLF

This method is the simplest, and only requires a plist editor. Use the table below to add/enable AddPNLF, SetIntelBacklight, and SetIntelMaxBacklight to your config.plist.

Path

Property

Type

Value

ACPI/DSDT/Fixes/

AddPNLF

Bool

True

Devices/

SetIntelBacklight

Bool

True

Devices/

SetIntelMaxBacklight

Bool

True

We'll do that by compiling PNLF SSDT from the Whatevergreen source repository and placing it in CLOVER/ACPI/patched. First, save the dsl to your home directory.

SSDT-PNLF.dsl @ Github

SSDT-PNLFCFL.dsl @ AppleLife.ru

Use the SSDT-PNLF.dsl with any iGPU Generation. Use SSDT-PNLFCFL.dsl with CoffeeLake (and potentially later releases). DO NOT USE BOTH AT THE SAME TIME.

Now that you've saved the file, you'll need to compile it. For that, we need to download maciASL if you are on macOS, or iASL if you are on linux or windows.

maciASL Project @ Github

Run maciASL, and open the SSDT-PNLF.dsl that you created previously. Save the file to CLOVER/ACPI/patched/SSDT-PNLF.aml. If you are using windows or linux, run path/to/iasl SSDT-PNLF.dsl.

Special note for CoffeeLake and later:

You might also want to try adding these boot arguments / device properties (recommended) to your configuration:

  • igfxcflbklt=1 or enable-cfl-backlight-fix=1(Number) to enable CFL backlight patch

  • -igfxmlr or enable-dpcd-max-link-rate-fix=1(Number) to apply the maximum link rate fix (for some high resolution laptop screens like on XPS15 and others)

CLOVER Resolution

After completing Whatevergreen patching, it's a good time to set the default resolution on CLOVER. Open your config.plist and browse to GUI. Set the ScreenResolution string to the native resolution of your laptop. If you aren't sure, look up your laptop's specs on the manufacturer website.

Now that you have your GPU sorted, let's move on to the backlight.

Verifying Metal Support

This one's easy, just click Apple > About This Mac > System Report, and click Graphics/Displays. You should see a line that looks like this.

Metal: Supported, feature set macOS GPUFamily2 v1

If you don't see it, you may have some additional work to do.

Verifying HEVC Encoding

If you're using a system configured to act like a 2015 or earlier Macbook/Macbook Pro, stop here because it's not supported. Otherwise you can verify that it's working after macOS is installed by installing VideoProc (Free version is fine). VideoProc can be used to test H264 encoding and decoding as it should be supported even if HEVC isn't.

Download VideoProc

Once you are in the application, click Settings (Bottom right) followed by the Options button next to Hardware Acceleration engine. If everything is working properly all of the boxes should be checked.

All set? Great!