Jump to content

Surface Pro: Patch the framebuffer properly to get rid of the DVMT assertion patch


Austere.J
 Share

2 posts in this topic

Recommended Posts

It has been 5 years since I published the binary patch to avoid the assertion of DVMT minimum stolen memory, but one should be able to solve this issue by properly patching the framebuffer.

As far as I know, Surface Pro series (as well as its variant Surface Book) is the only problematic platform that still relies on the assertion patch.

The binary patch is inconvenient as it is "fragile" against system updates, and it's time to fully deprecate this patch on Surface Pro laptops.

 

This post is mainly targeted at Surface Pro 4 (Skylake), Surface Pro 5 (Kabylake), Surface Pro 6 (Kabylake-R) and their variants Surface Book users.

Based on a couple of repos I have found on Github, you all seem to have spoofed the graphics card and are using the Kabylake framebuffer driver.

The ig-platform-id is 0x59160000, and it defines a framebuffer stolen memory of 34MB and a cursor memory of 1MB.

As a result, the total amount of stolen memory exceeds the one preallocated by the BIOS.

If you apply the "19MB Stolen + 9MB Cursor" or the "DVMT pre-alloc 32MB" patch, you can get rid of the kernel panic but probably will encounter a black screen with backlight only later.

Apparently, the above configuration does not work with Surface Pro, probably because the stolen memory is too small to light up your builtin high resolution display.

So, please try the following framebuffer patch, and you are encouraged to use WhateverGreen to apply the patch.

 

Remove any existing binary patch related to DVMT min stolen memory assertion.

Set framebuffer-stolenmem = 26MB, and do NOT change the cursor memory. i.e. Remove the field framebuffer-cursormem.

In your config.plist, the value of framebuffer-stolenmem should be 0x0000A001.

 

I have tried the above patch on Surface Pro 5, and the graphics acceleration works properly.

I would appreciate if you could post your test results here, so we can finally get rid of the DVMT binary patch.

 

If you have an older Surface Pro or other laptops and also have this issue, you should check your current ig-platform-id and adjust your stolen memory accordingly.

 

--------------------------------------------------------------------------------------------------------------------------------------

 

If you have a Surface Pro 7, DVMT is still an issue, but the background story is slightly different, and you would find the solution in this thread.

 

- FireWolf

  • Like 4
Link to comment
Share on other sites

  • 3 months later...

I can confirm this works on my Surface Pro 6 equipped with a Core i5. I've tested it for over a year without any problems through macOS 10.14-10.16.

 

I set stolen memory to 30MB (maximum before kernel panic) for my DVMT patch and inject WhateverGreen kext with OpenCore/Clover bootloader. 

Do not add framebuffer-fbmem and framebuffer-cursormem patches. 

<key>framebuffer-stolenmem</key>
<data>AADgAQ==</data>


 

Link to comment
Share on other sites

 Share

×
×
  • Create New...