Jump to content

Full Hardware Acceleration for GMA3150 - could it be done?

10 posts in this topic

Recommended Posts

Well, there are people trying, and trying hard:




We need all help we can gather for this to be done. If you have any knowledge about what makes apple graphics tick, or about kext patching, or about C/C++/Cocoa/Assembly/Hex editing, join us!


Even if you're not particularly skilled in any of these fields, but are willing to help somehow, you're welcome!


(sorry if this post looks like armed forces enlistment propaganda, lol!)


A little review of the current situation to help the newcomers to this thread (and arches, noobun2, meklort, firemansam and anyone involved can correct any wrong info if they please):


1) GMA 3150 isn't supported by apple, so we couldn't achieve full graphics acceleration yet. However, you can get native resolution (in most cases, 1024 x 600) even with no kext loaded. But, as said, no qe/ci: certain programs, like iMovie, won't work. Certain features, like time machine, will be in the better prospect buggy and unreliable. Youtube movies are a no go;


2) Even without full support, some people can get the GMA 950 kext to load with some editing (i'm not sure what must be edited though). But this will result in extreme slowness of the system, and the boot time will exceed 30 min., at least in older iterations of osx (arches, if i understand correctly, have a boot time of circa 2 min. with mountain lion, however without any hardware acceleration, unlike lion, even with the kext actually loading). Since GMA950 (which has native qe/ci) and GMA3150 are somewhat related, the GMA 950 kext is our current target for getting (hopefully) qe/ci for GMA3150 someday, at least in Lion (and hopefully in Mountain Lion someday, if we somehow patch the GMA950 to give acceleration in 10.8);


3) It's possible to use the gma 950 ketx framebuffer to attain a certain degree of graphics acceleration (again, how to do it, and how much graphics acceleration can be achieve, this will be for arches to say to us). As i understand, with the framebuffer, some simple (but crucial for a reasonable user experience) graphics tasks can be done, like watching youtube movies. However, as the sweet always come with the sour, when using the framebuffer, the cursor gets corrupted, which is pretty annoying. Meklort developed a solution for it in snow leo, but it does not work in mountain lion, and as far as i know was not tested in lion.



That's the current situation. Anyone who wish to contribute to this adventurous task, be welcome! I recommend to spread this thread in every osx86 forum. Maybe this holds the attention of more capable people to unite eforts with us.


Our primary material for this job:


AppleIntelGMA950.kext.zip: The unpatched GMA950 kext;


2009 Q4 Drivers: Intel Linux Graphics: 2009Q4

2010 Q1 Drivers: Intel Linux Graphics: 2010Q1: The first one is the last intellinux915 before Linux support for GMA3150, the second is the intellinux with GMA3150 support. The codes could offer hints at the patches that should be made, and even the possibility of a full port.

Share this post

Link to post
Share on other sites


quote_icon.png Originally Posted by arches viewpost-right.png

But I found more threads regarding batch buffer problems, and they all end like I'm used to it:

Mouse cursor is visible and usable/movable without slowdown, but the screen remains blank. See those posts here:


#612766 - Failed to submit batch buffer - graphic is not starting at all - Debian Bug report logs. ([...] However in these bugs the system is still usable (massive screen coruption). Here right from the beginning of starting X you'll see only black with a cursor on it. [...])


Failed to submit batch buffer (Xorg) ([...] Symptoms : A blank screen on login. You can even see your mouse pointer but nothing else. [...])

Maybe we found (better saying, arches found) the reason behind the extreme slowness of the system when trying to get acceleration for the GMA3150 with the GMA950 patched kext. The next (and very hard) step, if its the case, is to apply the correct changes to the 950 binaries to fix the problem.

Share this post

Link to post
Share on other sites

Another update (still not the news we're expecting, but it's work in progress anyway):






quote_icon.png Originally Posted by arches viewpost-right.png

After editing the PCI ID in the Binary and editing the info.plist, I managed to load the AppleIntelGMA950.kext with our A011 device ID without slowing down, but now I can't select the Transparent Menu Bar option? If anyone wants to know, I archived this by changing the IOVARendererID entry in the .plist to the subsystem of the GMA 3150, which is 1584103C.




However, no QE/CI yet as arches told me later, even the flash movies being able to load.

Share this post

Link to post
Share on other sites

Update of the current situation:


We're stuck at the point where we can have some openGL support on Lion 10.7.4 (no QE/CI though) with the patched 10.7.x 32-bit GMA950 kexts (we choose to work on Lion support because, apparently, even the 64-bit 10.6.2 GMA950 kexts don't work well with Mountain Lion, but it can be focused somewhere in the future). Arches think we have to deal with three issues:



- Buffer problems: maybe it tries to overwrite and can't do that, or some other unknown problem;

- Timer problems: wrong timeouts, or it doesn't allow enough time to do a function;

- Plug-in/Bundle issues: maybe they don't load correctly;

- All of the above.


We need help! Specifically, we need someone who's skilled in hex editing and general disassembling, since it's been the main obstacle for us to get to an ultimate solution.


Thank you, and know that we're still on it, even it's being as hard as it can possibly be.

Share this post

Link to post
Share on other sites

By Philosoraptor, from osx86.net:


Just checked the latest Shailua driver and it doesn't support KDP (checked both the latest ###### inclusion and a direct download from Shailua's post). I'm pretty much stuck looking at modding that driver. On the plus side, I've learned more about ethernet drivers and the IONetworkingFamily stack than I've ever wanted to know! :P Getting closer to figuring out what (and what not) to do to integrate KDP support for it though, and the knowledge spills over into the graphics driver issue since the OSX driver model follows some conventions I didn't expect.



So far, I've created a stub for the gma3150. I've only gotten basic loading/matching and a dump of the 3150's PCI config registers to the dmesg log working. Otherwise, it does nothing else and won't even kextunload. Here's a sample, run from an Asus 1215N:


Kernel is LP64


display: Not usable

GFX0: Not usable


AsusIntelGMA3150FB::probe(VGA, 9001)

PCI dev:ven = [a001:8086]

sub:subven = [8446:1043]

PCI Config Registers

[a001:8086] Revision ID = 02

[a001:8086] Command = 0007

[a001:8086] Status = 0090

[a001:8086] Class Code = 030000

[a001:8086] Cache Line Size = 00

[a001:8086] Latency Timer = 00

[a001:8086] Header Type = 80

[a001:8086] IO Memory Region Address Registers

[a001:8086] Memory Mapped IO = :f5d00000

[a001:8086] IO Space = :0000cc01

[a001:8086] Gfx Memory Range = :b0000008

[a001:8086] Gfx Translt Tbl = :f5c00000

[a001:8086] CardBus CIS Addr = :00000000

[a001:8086] Expansion ROM Adr= :00000000

[a001:8086] Capabilities Ptr = 00000000:00000090

[a001:8086] Interrupt Line = 16

[a001:8086] Interrupt Pin = 1

[a001:8086] Minimum Grant = 0

[a001:8086] Maximum Latency = 0

PCI Device Memory Regions:

[a001:8086] region 0: 524288 bytes @ 00000000:f5d00000

[a001:8086] region 1: 8 bytes @ 00000000:0000cc00

[a001:8086] region 2: 268435456 bytes @ 00000000:b0000000

[a001:8086] region 3: 1048576 bytes @ 00000000:f5c00000


AsusIntelGMA3150FB::probe(display, 9001)

PCI dev:ven = [a002:8086]

sub:subven = [8446:1043]

PCI Config Registers

[a002:8086] Revision ID = 02

[a002:8086] Command = 0007

[a002:8086] Status = 0090

[a002:8086] Class Code = 038000

[a002:8086] Cache Line Size = 00

[a002:8086] Latency Timer = 00

[a002:8086] Header Type = 80

[a002:8086] IO Memory Region Address Registers

[a002:8086] Memory Mapped IO = :f5d80000

[a002:8086] IO Space = :00000000

[a002:8086] Gfx Memory Range = :00000000

[a002:8086] Gfx Translt Tbl = :00000000

[a002:8086] CardBus CIS Addr = :00000000

[a002:8086] Expansion ROM Adr= :00000000

[a002:8086] Capabilities Ptr = 00000000:000000d0

[a002:8086] Interrupt Line = 0

[a002:8086] Interrupt Pin = 0

[a002:8086] Minimum Grant = 0

[a002:8086] Maximum Latency = 0

PCI Device Memory Regions:

[a002:8086] region 0: 524288 bytes @ 00000000:f5d80000




After lots o' study of the docs for the 4th gen (X3100+ series), the one subsequent to the 3rd gen (i915/950/3150), I've come up with a general interpretation of what the memory regions are and the device's general abilities.


I know which components contain which classes for the framebuffer, display, accelerator (CFPlugin), and OpenGL (bundle) & VA (bundle). What isn't obvious is how they all work together: i.e. who gets detected first? who spawns who? who calls who? Some of it is clear only in a general sense, but specifics like "what does the fb component need to do or setup for the GL/VA component to be able to do its job?" are missing.


Also, someone find out how the CoreFoundation Plugin architecture works. The IOAccelerator is actually a class that mostly just sets up function pointers according to a CFPlugin type/interface model, but what each portion of that is supposed to do is highly undocumented. This means the more we can find out about what is public, the CFPlugin architecture part, the easier it'll be to try filling in the blanks.


I'll try to post a link later with the wip stub so we can compare whether devices on the diff models we have generally follow the same memory configuration.


Here it is:



Test by: kextutil -t AsusIntelGMA3150FB.kext

Load and match by: kextutil -v 6 AsusIntelGMA3150FB.kext

Note: It won't manually unload, at least not for me, so the only way to clear it out of the system is a reboot.

It currently matches any of a001, a002, a011, or a012 from Intel (8086).

However, it only matches using the Info.plist parameters, not via probe(), so modifying the Info.plist will make it load/match to any device.

It currently only dumps the PCI reg values, so it should run for any PCI device.

Share this post

Link to post
Share on other sites

This thread just seems to have died in the middle of the night - did any of you have success?


I have been looking all over the web at posts like this, and I have a problem which I believe is similar to other people's: the 755 I have is ULTRA SFF, not just regular, which means no expansion ports whatsoever. I.E. Getting another video card is physically impossible; it's not a matter of finances. Does anyone out there know if anyone has come up with a way to display high resolutions or even better enable graphics acceleration on this Q35 graphics chipset?

Share this post

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.


  • Similar Content

    • By soumaxetuirk
      After my last successful build with Sandybridge,I am starting to build a new one with Kabylake. 
      I managed to avoid CPU Panic by fake CPU iD of 6th gen Skylake.But I am still not able to work on Intel HD graphics with clover.
      I will glad if someone can guide me with Clover Installation.
      Lenovo Idealpad 310
      Intel i5-7200
      Intel HD 620
      Nvidia 920MX 
      UPDATE : (17.10.2019 - OSX Catalina )
      I have managed fine-tune everything . CPU is idling as 0.50 GHz with working iMessage, sleep & Wifi.
      I have attached my clover folder.Feel free to use and comment
      Complete list:
      1. Sleep is working properly with average of 1% battery per hour.
      2. Lid Brightness, HDMI & VGA are working with whatevergreen.
      3.Native power management working with HWP enabled.
      4.All USB port are fixed to work seamlessly with sleep.
      5. Bluetooth and wifi working with card BCM94352Z.(including handoff and iPhone hotspot feature)
      6.Not required but still LPC and SMBUS are patched to load proper apple kext.
      7.ADP0 is renamed to load ACPIAdapter kext. (To enable battery status and power nap feature)
      8.Audio card is working with AppleALC (audio layout ID 3)
      6. VirtualSMC is installed with sensors.
      7.Gigabit ethernet (RTL6168) and USB 3.0 are working .
      8.imessage ready (I have activated mine, You need to call Apple support)
      9.All media keys and hot keys are configured in VoodooPS2.( media stop, Printscreen are configured as F17,F18 for custom shortcut)
      10. Common devices are renamed in DSDT ( TIMR, RTC,SATA,EC,XHC......)
      11. DSDT is mostly fixed. few things are patched in clover for the presence of ACPI hot patches.
      12. MacBook Pro 14,1 SMbios is used.No commands needed in boot argument section. RAM properties needs to be updated as required.
      Used kext:
      Credits for some Awsome tutorials which helped me to learn and reach this far. 
      Guide: How to Fix iMessage Version 2.1 (By Jaymonkey)
      Rehabman for all SSDT hot patches and kexts
      Acidanthera for MaciASL,VoodooPS2....
      Meld0n , Artur_pt (...Good Hack) , Mirone and all other members who guided me throughout last 8 years here.
      Piker for MSRIdle patch and FrequencyVector discoveries
    • By IDON-NO
      Hello everyone 
      I decided to open this thread for Intel HD Graphics 530 SKYLAKE 
      This GPU seems to be problematic with Hackintosh , specially if you intended to use it with 4K monitor or Multi-Monitor .
      Simply after you followed all the right instructions to patch framebuffer using Lilu.kext and WEG as described here in @headkaze 
      "Gen 6: Skylake (Intel HD Graphics 510-580)
      - S/L/E/AppleIntelSKLGraphicsFramebuffer.kext
      - Support started with OS X 10.11.4
      - device-id: 0x1916 0x191E 0x1926 0x1927 0x1912 0x1932 0x1902 0x1917 0x193B 0x191B
      - AAPL,ig-platform-id (desktop): 0x19120000 (default)
      - AAPL,ig-platform-id (laptop): 0x19160000 (default) " 
      Simply after Apple logo boot go to black screen 
      I can't use platform-id : 0x19120000 as suggested is a default 
      I am sure Bios settings is correct , Clover is correct , Kexts , ...etc 
      But end always with Black screen 
      I've seen a lot of people have the same issue when googling it , but no solutions at all 
      I want to know what is the reason that cause the black screen ?!! 
      Is 0x19120000 not default ?
      @vit9696 WEG issue ?
      Something else? @PMheart @vandroiy2012 
      FYI : using  Displayport 1.2 , using HDMI = Black screen 
      Only solution is using Platform-ID : 0x193b0005 
      Now you can boot normally but Monitor in this case seen as TV NTSC 
      Is 0x193b0005 is the default Platform ID ?  
      Can someone help us please ?
    • By osjedi
      I have fresh Mojave installed and configure my Intel HD 4400 with Fb-Framebuffer Patcher (all work except wired glitches when I try to open large photos (like does witch I make with my iPhone SE) small screen shots (cut outs not full screen - work good) In link have You a video that showing what I mean.

      Link to my EFI folder:
      Please Help  I have no idea how to fix it. On polish hackintosh support site also no clue.

      Motherboard: Asus B85M-G
      Processor: Intel Core i3-4130, 3400 MHz
      GPU: Intel HD Graphics 4400
      RAM: 2x 4GB G Skill Value F3-10666CL9-4GBNT DDR3-1333
      Network: Realtek RTL8168/8111 PCI-E
      Audio: Realtek ALC887 @ Intel Lynx Point PCH - High Definition Audio Controller [C-2] PCI