Jump to content

Question regarding iGPU performance


Recommended Posts

Hi guys,


So, I'm curious, since most of you guys are using laptops, which, for as far as I know, can't use dual GPUs in MacOS (usually the dGPU needs to be disabled, for as far as I know), and since I'm guessing most, if not all of you, are using Lilu + WEG ( probably + device properties) for graphics, I was wondering how is your experience using only the iGPU.


I'm particularly interested about boot times and, for those who tried that, FV2 second stage boot screen (which, normally should be transparent with user logo, not black screen with only the loading bar). And, in my experience, that can only be achieved with iGPU enabled.


That's on a more general note. On a more specific one, I was wondering if you guys have any tips for improving performance on a Haswell HD4600 iGPU. Or any older iGPU for that matter.


The reason why I'm asking is because, although I'm using a desktop, with a dedicated GPU, some things work better (or work at all) only with the iGPU enabled. For example MacOS specific video editing software, or, as I said before, FV2's second stage boot.


So, I'm only curious how you guys are dealing with only the iGPUs (or if you're like me and using both, I'd love to know more about that, too) and if you have any tips on improving its performance.


I don't want to switch to the iGPU entirely (after all, that's why I bought a dedicated GPU), but when your boot times are almost 20 seconds slower with the iGPU enabled than without it, and when you do have some benefits from enabling it...it kinda makes you wonder if there's anything that can be done to improve that.


Now, granted, it's an old CPU with an old iGPU. I don't expect any miracles. Just hoping for, maybe, some improvements. :D 


Also, if anyone managed to get that second-stage boot correctly displayed with FV2 and a dedicated GPU (maybe entirely without the iGPU), I would be really curious to know how. :)


Thank you very much! And keep up the great work!

Link to comment
Share on other sites

  • Administrators

Up until this time last year, I had a Latitude E6440, a Haswell laptop fitted with HD4600 iGPU and AMD dGPU. The AMD dGPU was not supported and therefore disabled via DSDT/SSDT patching. There never was anything to be done on the iGPU front regarding performance per sé. Booting off the mSATA SSD was just about the same as with any other of my Hacks: ~20s from start to finish.


I'm a little surprised to read that, on your Haswell desktop, enabling the HD4600 iGPU increases your boot time by almost 20s. I can't say ever heard of such an impact before. Did you try and analyse what happens at boot time through verbose mode when iGPU is on?


Other than my Sandy Bridge Latitude E6220 and it's crappy HD3000, I find no particular performance issue on my other laptops running iGPU: whether it'd be my Ivy Bridge Latitude E6230 and its HD4000 iGPU or my Kaby Lake R Latitude 7490 and its UHD620 iGPU. Same applied to the Broadwell Latitude E7250 + HD5500 iGPU I had for a brief spell.

  • Like 1
Link to comment
Share on other sites

Many thanks for the reply, Hervé. :) 


I did try to analyse verbose mode... But...it didn't tell me much. You can see below a few scenarios. Maybe you can figure out more than I did, from them. 


But...I mean, aside from a (probably normal...to some extent?) hang at gIOScreenLockState 3, I didn't notice anything out of the ordinary. And it was actually that particular message in the log that made me look into a possible iGPU issue and disable it to confirm that, in fact, that was indeed what was slowing everything down.


Initially I did this test with all kexts in place and it was hanging at some Ethernet stuff... See below.




Which, didn't make much sense at all. But I thought: ok, if it's the Ethernet kext, let's try without it. So, I didn't just try without that, I removed everything aside from: Lilu + VirtualSMC + WEG. Basically, reduced everything to minimum for booting.


It was still hanging at the same place. But then...this showed up (see below).


Which, as I said above, made me try disabling the iGPU in BIOS and realising that, between booting with iGPU and without it, there's a difference of 17-18 seconds (I rounded it up to 20 just to be easier to work with). :)) And yes, I actually timed it. :))




Also, this is not on even on a mechanical drive. It's on a SATA SSD. I mean, it's not NVMe, but it's still an SSD. And the difference with and without the iGPU is huge!


If it helps, the place where it hangs is right in the middle of the loading bar, right before switching to second stage and onto the Desktop. Everything loads normally until there, and after that point.

Link to comment
Share on other sites

  • Administrators

Did you setup your config correctly for HD4600 iGPU? Because the hanging at gIOScreenLockState messages usually means that graphics are not initialising and system keeps retrying.

Link to comment
Share on other sites

It is set up...I would say correctly, yes. Unless I'm missing something.


The iGPU (+ the dGPU) are correctly recognised, with the right amount of VRAM in System Report -> Graphics.

Not sure what else should I be looking for... I mean, you're the expert in iGPUs here. :)) 



Link to comment
Share on other sites

Hey Hervé,


So, after what you said yesterday about hanging at gIOScreenLockState, I thought I'd try a couple more things. And some of them are really interesting, and if you have the time, I'd really appreciate your opinion. :)


So, first of all, the issue does not occur if I'm using only the iGPU (and being plugged into it, too). The issue seems to occur if I'm not actually plugged into the iGPU, but into the dGPU. And it could be why gIOScreenLockState is hanging. As you said, it's probably trying to figure out what to do. It does boot correctly after that, it's just that it also increases the boot time by a lot!


Also, something else I found interesting.

So, I don't add a specific value for VRAM in Device Properties. For as far as I understood, you only need ig-platform-id and (maybe) device-id. But only the first one will actually make a difference.

So I thought: ok, let's try to boot into Windows and see how is my iGPU recognised.


This is from Dxdiag as you can see.




And this is from display properties.



What I found interesting is the amount of memory.


So...now I'm confused. Should it be..2048MB VRAM instead of 1536MB? Which value do I want from those? :)) For as far as I know, changing the amount of VRAM doesn't really make any difference. It's only cosmetic. But I'm just asking.


Also, as I said, even without setting that, it still works fine, but only when I'm physically connected to the iGPU.


Now, you would probably say: just use headless connector and only use the dGPU. Well, yeah, but that's the thing. For FV2 issue to be solved I need the iGPU with framebuffer. Otherwise it's like it's not even there.


So, to resume:

1. with framebuffer and connected to the iGPU -> all good

2. with framebuffer and connected to the dGPU -> lag (no matter if it's set to Integrated Graphics first in BIOS, or dedicated graphics + "multi monitor"). As long as I'm not physically connected to it, lag.

3. without framebuffer and connected to the iGPU -> can't boot into the OS, computer restarts when attempting second stage boot. Makes sense.

4. without framebuffer and connected to the dGPU -> all good, but also can't have FV2 second stage boot correctly, since that seems to work only with FB. And I think the FCPX doesn't work either in this configuration. I might be wrong.


So, looking forward to your opinion. :)


Thank you very much!

Link to comment
Share on other sites

  • Administrators

Well, it would seem that there is something missing or incorrect with regards to your Sapphire RX580 graphics card config then, not the HD4600 iGPU.


I'm afraid I won't be of much help on that front since my hands-on experience with AMD cards is most limited. I only ever kept the old ATI Radeon HD X1300 of my old C2D Vostro 200 desktop Hackintosh for a short time back in 2012/2013 given that it was last supported in Snow Leopard. I then replaced the card by an nVidia model for subsequent OS X/macOS versions.

Link to comment
Share on other sites

Thank you, Hervé. 


I think the problem is the way I have them configured... I mean, iGPU alone works fine. dGPU alone works fine (assuming I don't enable iGPU in BIOS, or if i'm using a "headless" connection in config). So I'd say they work ok separately. Just not in this configuration.


Anyway, thank you very much for sharing your opinion. :) 

Link to comment
Share on other sites

  • Administrators

Hey @arsradu


Im also running mac os on a haswell desktop with rx560. Im on full dgpu so i have not really experience any lag in my boot time. In fact my desktop has always been really fast. Even faster that linux and windows. Never went back to laptop hack after experiencing these desktop hack babies. lol. My other haswell desktop is running with hd7750. Similar boot time. Never had the need to use igpu hehe.

  • Like 1
Link to comment
Share on other sites

Hey @Syonagar


Many thanks! :) 


Apparently, as I suspected, the issue is indeed the way I have them configured... Which, in a regular Mac would probably work perfectly fine. But...in this case, it's just not a configuration supported by Apple. Not without heavy modifications and specific hardware.


Booting off of the dGPU (with headless connector or disabled "dual-monitor support" in BIOS), all good. Booting off of the iGPU alone, and also being physically connected to that, all good. However, having the iGPU enabled, with the default/recommended (aka "non-headless" connector), creates this issue. Since, as Hervé mentioned above (and I think he might be right), hanging at gIOScreenLockState usually means the system is trying to figure out which graphics to use. In this case, I think it's trying to use iGPU by default, but it can't, cause I'm not connected to that port, and then reverts to the dGPU, which works fine.


One question I would have: do you use FV2? Do you have transparent screen with user logo for the second stage boot when FV is enabled and using only the dGPU? Cause I couldn't get myself to work. The only way that works is with a default connector set up in Device Properties and iGPU enabled. Whether the BIOS is set to Integrated Graphics first, or Dedicated Graphics (+ multi-monitor support), as long as it's not a headless connector, it should work fine.


So, the problem is not necessarily on the iGPU side. It's just...mixing them (setting iGPU in BIOS but being connected to the dGPU). it does work... But not that great. :))


I suppose this is not really how it's intended to work. Meaning, if you set IGD, you're supposed to be physically connected to the integrated display port on your motherboard. Not roaming around on the dGPU. :)) And I would enable PEG + multi-monitor, except it doesn't really make any difference in this case, since it's still using the default ig-platform-id. And changing that to headless, while it solves the hanging issue, it breaks FV (and I think other things, too). So yeah...having them both...apparently doesn't really work that well. Unless there's something I'm missing.

Link to comment
Share on other sites

  • Create New...