Jump to content

OS X El Capitan 10.11.4: Skylake Intel HD Graphics General Discussion


Austere.J
 Share

67 posts in this topic

Recommended Posts

A new version of Skylake integrated graphics driver was included in the latest OS X El Capitan 10.11.4 update.

 

Some "restrictions" (checking pci ids of Broadwell's IGPUs) have been removed from the AppleIntelFramebufferController::start() method.

 

So basically your Skylake's IGPUs could be working now. :)

 

- Some Remarks

 

Should you have kernel panic like minStolenSize <= fStolenMemorySize, you could avoid it by:

 

Either (1) Applying the patch

Name: AppleIntelSKLGraphicsFramebuffer

Find 4139C476 

Replace 4139C477

(Note that you should NOT use this patch if your DVMT pre-allocated memory in your BIOS settings is already >= 64MB)

 

Or (2) Applying the patch (Thanks to Rehabman)

Name: AppleIntelSKLGraphicsFramebuffer

Find: 4139c4762a

Replace: 4139c4eb2a

or (3) you could modify the DVMT pre-allocated memory in your BIOS settings to 64MB or 96MB. (SUGGESTED)

 

(Note that this method is suggested especially when you have a laptop with high resolution screen)

Assertion failed: minStolenSize <= fStolenMemorySize

I will keep updating this post. Looking forward to some successful cases. :)

 

Cheers,

FireWolf

  • Like 9
Link to comment
Share on other sites

That's just awesome if this works.

 

This could fix pretty much all remaining hard issues on the 150 & 170 boards.

 

When did they put in the new iGPU drivers? I kept monitoring the betas for this and didn't find anything.

 

Got a install for el cap planned this weekend on my Fatal1ty Z170

  • Like 1
Link to comment
Share on other sites

That's just awesome if this works.

 

This could fix pretty much all remaining hard issues on the 150 & 170 boards.

 

When did they put in the new iGPU drivers? I kept monitoring the betas for this and didn't find anything.

 

Got a install for el cap planned this weekend on my Fatal1ty Z170

 

Apple only put the new IGPU drivers in the final release of 10.11.4. Nothing new in betas.

Link to comment
Share on other sites

Should you have kernel panic like minStolenSize <= fStolenMemorySize, you could apply this patch to avoid this assertion: Name: AppleIntelSKLGraphicsFramebuffer Find 4139C476 Replace 4139C477, or you could modify the DVMT pre-allocated memory in your BIOS settings to 64MB or 96MB.

I would suggest using an unconditional 'jmps' (jump short) instruction instead of reversing the logic of the assertion (jbe->ja reverses the logic, such that panic results when DVMT-prealloc is large enough).

 

Find: 4139c4762a

Replace: 4139c4eb2a

 

That way, if DVMT-prealloc is set as required, the patch does not *cause* a panic.

 

Note: The above find/replace also includes the opcodes for the full two instructions involved here (cmpl+jbe).

  • Like 3
Link to comment
Share on other sites

I would suggest using an unconditional 'jmps' (jump short) instruction instead of reversing the logic of the assertion (jbe->ja reverses the logic, such that panic results when DVMT-prealloc is large enough).

 

Find: 4139c4762a

Replace: 4139c4eb2a

 

That way, if DVMT-prealloc is set as required, the patch does not *cause* a panic.

 

Note: The above find/replace also includes the opcodes for the full two instructions involved here (cmpl+jbe).

 

Agreed. That's more secure.

 

I choose to use the ja opcode since the direct jmp is a big instruction, and I am afraid of messing up the kernel panic part. :)

 

Anyway, thanks a lot. I will update the post.

Good news. My HD7000 seems to be working with the new driver. (I only tested the HDMI out yet)

Animations, rotation, and no more confusion around the mouse pointer.

 

Congrats!

 

I assume that you are talking about the Intel HD Graphics 540, the successor of the Intel HD Graphics 6000. :)

Link to comment
Share on other sites

I choose to use the ja opcode since the direct jmp is a big instruction, and I am afraid of messing up the kernel panic part. :)

There are two kinds of unconditional jmp instructions (long ones and short ones). 'eb' is jmps (jump short). It is the same length as the conditional jump that is being replaced.

  • Like 1
Link to comment
Share on other sites

There are two kinds of unconditional jmp instructions (long ones and short ones). 'eb' is jmps (jump short). It is the same length as the conditional jump that is being replaced.

 

Got it. Really thanks for your sharing.

Link to comment
Share on other sites

Intel HD 530 (Intel HD Graphics SKL CRB 1536 MB) works good except dual monitors. If I connect 2 monitors (DVI and HDMI) only one of them gets signal and there are only artifacts on the screen.

22/03/16 11:08:06,000 kernel[0]: [IGPU] Failed to initialize graphics firmware.  Falling back to host-side scheduling
22/03/16 11:08:06,000 kernel[0]: [IGPU] Scheduler interface revision = 1: Default EL Scheduler
22/03/16 11:08:06,000 kernel[0]: [IGPU] *****************************************************************************
22/03/16 11:08:06,000 kernel[0]: [IGPU] Graphics accelerator is using scheduler interface revision 1: Default EL Scheduler
22/03/16 11:08:06,000 kernel[0]: [IGPU] Scheduler: Multiple channel indexes per command streamer
22/03/16 11:08:06,000 kernel[0]: [IGPU] Scheduler: Process CSB using HWS.
22/03/16 11:08:06,000 kernel[0]: [IGPU] Scheduler: PM notify enabled
22/03/16 11:08:06,000 kernel[0]: [IGPU] Graphics Address: PPGTT, Separate Address Space
22/03/16 11:08:06,000 kernel[0]: [IGPU] MultiForceWake Enabled: Using 3D Driver
22/03/16 11:08:06,000 kernel[0]: [IGPU] CoarsePowerGating Disabled
22/03/16 11:08:06,000 kernel[0]: [IGPU] Scheduler Throttle Cap = 100ms.
22/03/16 11:08:06,000 kernel[0]: [IGPU] startGraphicsEngine: hwCaps compromised fNumSubSlices: 3 fExecUnitCount: 0.

Link to comment
Share on other sites

I'm using ig-platform-id = 0x19160000
Your graphics is not loading. You'll need to modify the DVMT pre-allocated memory in your BIOS settings to 96MB.

 

You could try FB patch mentioned above by Rehabman, but even that still have some artifacts. 

 

Find: 4139c4762a

Replace: 4139c4eb2a

Link to comment
Share on other sites

Yeah, I have had the DVMT set to 64mb in the bios.  What's odd is that I can load the USB installer perfectly fine, but whilst using the same clover config, DSDT, etc, the OS partition keeps hanging when it loads the graphics kernel extensions.  I assume that the installer only loads the VESA drivers, which is why I am experiencing this..

Link to comment
Share on other sites

Whenever I set it past 64mb, there is an instant kernel panic. I've tried patching the fb and still I am ending up with the same exact error.

 

Please post your config.plist

Link to comment
Share on other sites

That makes sense..  I will post it tomorrow.  I should probably mention the specs of the computer that I am using.  Specs: Asus K501UX, Core i7 6500u, GTX 950 discrete (Disabled via clover nv_disable=1) Intel HD 520 integrated (stuff in config: Inject intel=true, ig-platform-id = 0x19160000; I've tried with and without these settings to no avail btw)  8GB Ram, 1080p display.  Is there any chance that the nvidia optimus could be interfering with the integrated graphics.  I have tried disabling it through the dsdt, but not entirely sure if it is actually disabled entirely.  I was able to boot into the installer and everything without the graphics injection info, but with the same config the OS partition halts..

Link to comment
Share on other sites

  • 3 weeks later...

That makes sense..  I will post it tomorrow.  I should probably mention the specs of the computer that I am using.  Specs: Asus K501UX, Core i7 6500u, GTX 950 discrete (Disabled via clover nv_disable=1) Intel HD 520 integrated (stuff in config: Inject intel=true, ig-platform-id = 0x19160000; I've tried with and without these settings to no avail btw)  8GB Ram, 1080p display.  Is there any chance that the nvidia optimus could be interfering with the integrated graphics.  I have tried disabling it through the dsdt, but not entirely sure if it is actually disabled entirely.  I was able to boot into the installer and everything without the graphics injection info, but with the same config the OS partition halts..

 

If your initial screenshot is still valid, you might want to check if you have FakeSMC.kext present on whatever you use to boot. Because according to the screenshot, it's not being loaded.

 

Once you fix that, you should be able to reach the desktop. However, if for some reason you get stuck at a black screen with a blinking cursor or the loading bar (which appears even when booting in verbose) you might have a WindowServer crash. To confirm this, at Clover boot, go to Graphics Menu and set InjectIntel = True and FakeID = 0x12345678, this way you'll disable kext loading for the iGPU. If you can reach the desktop, then WindowServer crash is confirmed.

 

For people with HD 530 Mobile and anyone else that encounters a black screen with blinking cursor, you need to use FakePCIID.kext and a custom injector (see below) to get around some checks in the SKLGLDriver.bundle. 

 

 

You need to have FakePCIID.kext AND the above injector!

 

@JakeLo and anyone else with working SKL graphics on their laptops:

 

Please install and run GfxBench Metal benchmark and see if you can run it: https://itunes.apple.com/us/app/gfxbench-metal/id1044629456?mt=12Go to select test and leave only one test check, you don't need to go through all of them if it works.

 

If it crashes on your machine, congratulations, METAL isn't working on your system, 10.12 is supposed to use Metal instead of OpenGL for animations (this remains to be seen though).

 

If it works, congratulations again, could you provide a IOReg/IOJones dump of your system? Open IORegExplorer / IOJones, run the bench again (say the first test) then save the ioreg dump and post it here or PM it to me.

 

Thank you.

Link to comment
Share on other sites

For people with HD 530 Mobile and anyone else that encounters a black screen with blinking cursor, you need to use FakePCIID.kext and a custom injector (see below) to get around some checks in the SKLGLDriver.bundle. 

 

You need to have FakePCIID.kext AND the above injector!

I'm assuming my suggestion to use FakePCIID was helpful? If so, perhaps this should be integrated into FakePCIID_Intel_HD_Graphics.kext.

 

I guess we'll see as time goes on...

Link to comment
Share on other sites

I'm assuming my suggestion to use FakePCIID was helpful? If so, perhaps this should be integrated into FakePCIID_Intel_HD_Graphics.kext.

 

I guess we'll see as time goes on...

Pretty much, people have been reporting success in the HP Envy thread as well. 

Link to comment
Share on other sites

 Share

×
×
  • Create New...