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 16BitHusky
       am running sierra on a optiplex 780 with a pny gt 710. I followed a step by step guide here. My machine boots fine and actually shows that the pny 710 is recognized I have attached a link with proof. My issue is when I am doing anything that relates to video it artifacts and slows alot. I understand that this is a cheap graphics card but from what I read online it seems like the other hackintoshes dont have this issue with this card. I am wondering if you have had any similar problems or solutions to this. I  also have attached my config file. I asked around on reddit and they said this could be related to the qe/ci. I am pretty new at this so I don't know how to enable this. I have installed the web drivers for 10.12.6 and that hasnt changed anything. 
    • By BrandonDude
      WARNING! I have no affiliation with “DiskMaker X”. Use at your own risk!
      Thank You to MaLd0n for all of his help getting me up and running!
      You must have a Mac with a working App Store
      You must have a USB Drive with a size of 8 GB or more
      In the App Store download macOS High Sierra
      Download DiskMaker X and run it
      Setting the OS Install App and the USB Drive
      - You may want to format the drive into 1 partition
      If you encounter any errors, see the DiskMaker X FAQ page
      Download the latest Clover EFI Boot and install it on the same USB Drive
      - With these Settings: (Thanks to MaLd0n for these settings!)

      On the USB Drive, on the “EFI” volume, under the “EFI” folder, replace the “CLOVER” folder with the one in this archive:
      CLOVER Install.zip  (Thanks to MaLd0n for these files!)
      Restart your computer and boot into the USB Drive’s EFI volume
      In Clover select “Boot OS X Install from ” + your USB Drive’s name
      ​The first “install” will copy the installer to your hard drive
      After the first reboot, in Clover, select “Boot macOS Install from ” + your Hard Drive name
      - Note: I had to do this step twice, before the next step was available to me
      After the next reboot, in Clover, select “Boot macOS from “ + your Hard Drive name
      - Note: This will be your normal option going forward
      Now you will have to install Clover on your Hard Drive, so that you don’t have to use your USB drive anymore.
      Download the latest Clover EFI Boot and install it on your Hard Drive
      - With these Settings: (Thanks to MaLd0n for these settings!)

      On the Hard Drive’s “EFI” volume, under the “EFI” folder, replace the “CLOVER” folder with the one in this archive:
      CLOVER Install.zip  (Thanks to MaLd0n for these files!)
      Reboot to this new EIF volume on your Hard Drive
      - Note: This will be your default boot volume
         - You can set your BIOS to boot to it by default
      - In Clover, select “Boot macOS from “ + your Hard Drive name
         - Remember this will be your normal Clover option going forward
      Download and Install Clover Configurator
      Post Installation Manual Fixes
      The Mouse Scroll Wheel is set to the “Apple Touchpad direction”
      - To fix that, go to System Preferences -> Mouse and uncheck Scroll direction: Natural
      Eject button is stuck in the menu bar
      - To remove, hold down Cmd and drag it out of the menu
      Cannot view Hidden Files
      - In Finder hold down CMD + Shift + . (dot)
      ​Home and End keys have weird behavior
      - ​Use this Post to fix that
         - Note: The Folder/File you create need to go in your User’s hidden Library folder
      Known Unresolved Bugs
      Dual Monitor Bug
      - When booting up, 1 of your monitors will get turned off
      - To turn it back on, unplug both monitors, then plug them back in
      Software I Like to Install
      Note: I am not affiliated with any of these apps. I also do not guarantee nor take any responsibility for these apps. (This is really just a list to remind me what apps to install, when I do a clean OS install.) [i thought others might also find it useful.]
      The Unarchiver
      CLOVER Install.zip
    • By soumaxetuirk
      After updating to 10.12.6 I removed fake CPU id and GPU id kexts and replaced ig-platform-id with 0x51960000 also injected intel GFX 0x51968086.
      Tried with IntelGraphics fixup kext. But still getting only 7mb video memory with no graphics acceleration and no brightness control.
      Please help me to fix my clover config.
    • By iK0X
      Hello! I'm trying to install El Capitan on my Lenovo Yoga 300 but I can't even get any bootloader to show up after turning on the computer... I tried Enoch, Chameleon and Clover and neither of them works. My BIOS can't see Enoch USB, but sees Clover. Unfortunately, when I try to boot them I can see nothing... I tried Clover in UEFI only mode, with Legacy mode, but no success. Please help me! My laptop has Intel Celeron N3050 with Intel HD.
    • By Newbie Mac
      Ciao a tutti,
      sono felicemente riuscito a installare Lion sul mio Optiplex 330.
      Funziona tutto tranne la scheda audio interna ma non importa perché vorrei installare una USB esterna: una Yamaha AG03.
      Dalle istruzioni questa dovrebbe essere installata su Lion senza driver e riconosciuta subito (http://www.yamahaproaudio.com/global/en/products/mixers/ag/manual/mac/index_en.jsp).
      Su un altro hackintosh sempre con Lion viene riconoscita perfettamente.
      Il sistema la vede, nel System Report, correttamente collegata all'USB ma da Audio Midi Setup mi dice "NO DEVICES FOUND".
      Temo che mi manchi qualche parte software per far riconoscere la scheda esterna.
      Ho installato i VoodooHDA ma mi hanno mandato in crash il sistema quindi li ho rimossi.
      Avete consigli?
      Grazie mille
      Retroman Newbie