Jump to content

About using discrete and integrated graphics at the same time:


theconnactic
 Share

79 posts in this topic

Recommended Posts

Hi, folks!

 

I have an Intel i5 3570K running on a H77-DS3H (i know, this motherboard kills the overclock capabilities of my CPU, but now it's late to complain) and a nVidia GeForce 9800 GT. Based on this setup, two questions:

 

 

1) I'm using a 9800GT and the Intel HD 4000 at the same time (meaning the option Internal Graphics is always set to Enabled in my UEFI BIOS, as well as IGFX as primary monitor). My monitor is attached to the DVI out of the HD4000. I'll still be able to use the computational power of my 9800 GT (open cl etc) in that configuration?

 

2) Can OSX automatically switch before one and the other for computational work, in case the answer is yes?

 

Best regards!

Link to comment
Share on other sites

The problem is, i'm only getting the two cards to work together in safe mode. When i try to boot normally (with Clover, r. 9xx), the computer goes all the booting process, just to automatically reboot at the very point the desktop should appear. I'm hoping to make this setup work, because my 9800 GT doesn't have a working HDMI under OSX, which the HD4000 has.

 

I'll try later with Chameleon and will surely post here.

 

Best regards!

 

EDIT: a couple of pics to show the status of my setup now. Repair the opacity of the menu bar: in safe mode, there's no QE/CI.

 

Screen Shot 2013-02-18 at 1.37.46 AM.png

 

Screen Shot 2013-02-18 at 1.38.28 AM.png

  • Like 1
Link to comment
Share on other sites

They will both work fine together. I testing I have been able to get 4 GTX 580's and Intel HD4000 all working at once in the same system.

 

What it comes down to is using a well edited DSDT and spending the time to edit one on your own or find/hire someone to help you do it.

 

Basically you extract the DSDT when both cards are installed. Then shutdown and remove the Dedicated card from the system and focus on getting all the MB components working and HD4000 working and the edits in the DSDT for it. Then add the Nvidia card and use DSDT injection for it as GraphicsEnabler=Yes does not play nice with 2 or more cards.

 

For as far as i know, it's a no/no.

But i'm an notebook user, so following to learn.

 

This has nothing to do with laptops my friend. Thats a entirely different issue... and you can enable both cards but you just can not switch to them. If you have a Nvidia card you can still use it for CUDA on a laptop.

  • Like 6
Link to comment
Share on other sites

They will both work fine together. I testing I have been able to get 4 GTX 580's and Intel HD4000 all working at once in the same system.

 

Good to know, Rampage! So i'll work hard to get my setup also working.

 

What it comes down to is using a well edited DSDT and spending the time to edit one on your own or find/hire someone to help you do it.

 

DSDT... i was hoping not to need it. I'm comfortable patching kernels or tweaking AMD machines and tiny laptops, but when it comes to this subject, i'm as lost as the next guy. I've already dealt with some edits, but the patches were pre-made and my work was just find them and add them with DSDT Editor. I was happy when i first turn this machine to a hackintosh (it was a Win7 gaming rig) because i learned UEFI boards usually don't need edits. Well, since it will be great to get both cards working together, i think now it's time to really dig it.

 

Basically you extract the DSDT when both cards are installed. Then shutdown and remove the Dedicated card from the system and focus on getting all the MB components working and HD4000 working and the edits in the DSDT for it. Then add the Nvidia card and use DSDT injection for it as GraphicsEnabler=Yes does not play nice with 2 or more cards.

 

Well, that sure will help me: i probably would never come to that strategy. Thank you very much. :)

 

One question: will it work with Clover? Or Chameleon only? My system, by the way, is 10.8.3 (beta).

 

Best regards!

Link to comment
Share on other sites

They will both work fine together. I testing I have been able to get 4 GTX 580's and Intel HD4000 all working at once in the same system.

 

What it comes down to is using a well edited DSDT and spending the time to edit one on your own or find/hire someone to help you do it.

 

Basically you extract the DSDT when both cards are installed. Then shutdown and remove the Dedicated card from the system and focus on getting all the MB components working and HD4000 working and the edits in the DSDT for it. Then add the Nvidia card and use DSDT injection for it as GraphicsEnabler=Yes does not play nice with 2 or more cards.

 

 

 

This has nothing to do with laptops my friend. Thats a entirely different issue... and you can enable both cards but you just can not switch to them. If you have a Nvidia card you can still use it for CUDA on a laptop.

 

As i said, as far as i know ;)

Thanks for the explanation on this. Did not know it was possible until now.

  • Like 2
Link to comment
Share on other sites

UEFI has nothing to do with needing or not needing a DSDT. This is what I call noob bait... To have a perfect system you will always needed a edited DSDT. Also DSDT's for the most part a upgrade proof so if you patch things in the DSDT instead of the OS with kext you can upgrade with ease.

 

My Nvidia injection guide:

 

http://rampagedev.wordpress.com/guides/inject-your-nvidia-fermi-and-quadro-graphic-card-into-a-dsdt/

  • Like 1
Link to comment
Share on other sites

UEFI has nothing to do with needing or not needing a DSDT. This is what I call noob bait...

 

Well, i like that: "noob bait"! :)

 

I just bookmarked your guide, thank you very much!

 

P.S.: Oh, it's for Fermi only... will it go with a 9800 GT too? Anyway, in the worst scenario it will serve as a draft: thank you! I just noticed it's indeed meant as a draft, and the name of the card is to be changed to my own card in the end of the process. Thank you very much for the link, will make things a lot easy. Your work is awesome, Rampage.

 

As a side note and funny story: some days ago, i pointed to your site while helping someone at Voldemort's castle. I wasn't banished (not "banned", because it's Voldemort and, you know, he hates slang) but my post was "moderated" (censored). Crazy, huh?

  • Like 1
Link to comment
Share on other sites

I have an Intel i5 3570K running on a H77-DS3H (i know, this motherboard kills the overclock capabilities of my CPU, but now it's late to complain) and a nVidia GeForce 9800 GT. Based on this setup, two questions:

 

1) I'm using a 9800GT and the Intel HD 4000 at the same time (meaning the option Internal Graphics is always set to Enabled in my UEFI BIOS, as well as IGFX as primary monitor). My monitor is attached to the DVI out of the HD4000. I'll still be able to use the computational power of my 9800 GT (open cl etc) in that configuration?

 

2) Can OSX automatically switch before one and the other for computational work, in case the answer is yes?

HD4000/GTX 570 HD working at the same time, Clover and Chameleon, GE=No, AirPlay Mirroring, 10.8.2. OSX does not switch workload automatically across graphics cards. However, you can launch the application on the graphics card you want the app to run on. The 570 is recognized without dsdt injection. To enable HD4000, add HD4000 dsdt injection to GFX0:

	 Device (GFX0)
	 {
	 Name (_ADR, 0x00020000)			
	 Method (_DSM, 4, NotSerialized)
	 {
		 Store (Package (0x04)
			 {
				 "device-id",
				 Buffer (0x04)
				 {
					 0x66, 0x01, 0x00, 0x00
				 },
				 "AAPL,ig-platform-id",
				 Buffer (0x04)
				 {
					 0x0A, 0x00, 0x66, 0x01
				 }
			 }, Local0)
		 DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
		 Return (Local0)
	 }
....

post-618506-0-28156600-1361229769_thumb.png

  • Like 2
Link to comment
Share on other sites

Toleda, thank you so very much for this post: Rampage pointed me to nVidia injection, i was wondering how could i inject also the HD4000.

 

One question: i have a 9800 GT, so the method you used for the 570+HD4000 combo won't work for me as is, right? I mean, i'll ned also to inject the 9800 GT as Rampage explains at his site, so i can have both cards with GraphicsEnabler=No, is that correct?

 

Another two questions: GraphicsEnabler=No means GraphicsInjection=No with Clover, right? And which setup you use in your BIOS (i'm using IGFX as primary display and Integrated Graphics as "Enabled" instead of "Auto")? I assume you're using the monitor attached to the HD4000, the way i'm trying to do.

Link to comment
Share on other sites

One question: i have a 9800 GT, so the method you used for the 570+HD4000 combo won't work for me as is, right? I mean, i'll ned also to inject the 9800 GT as Rampage explains at his site, so i can have both cards with GraphicsEnabler=No, is that correct?

 

Another two questions: GraphicsEnabler=No means GraphicsInjection=No with Clover, right? And which setup you use in your BIOS (i'm using IGFX as primary display and Integrated Graphics as "Enabled" instead of "Auto")? I assume you're using the monitor attached to the HD4000, the way i'm trying to do.

In Lion with the 570, I had to use DSDT injection. In ML with the 570, dsdt injection is not needed. Regarding your 9800, test with no dsdt injection, HD4000 dsdt injection and GE=No. If the 9800 is not recognized, add the injection.

 

Yes, yes and yes to the other questions.

Link to comment
Share on other sites

Thank you very much again, Toleda!

 

Did you ever try to get this setup of yours to work with Clover UEFI boot (i assumed you tried with BIOS)? Since i just migrated to it, i wonder what would be the results...

 

Best regards!

 

UPDATE:

 

Patched my DSDT using the code you provided, Toleda: DSDT.aml.zip

 

Apparently, it worked, since i managed to get to the desktop, and both cards are detected under Graphics/Displays: Screen Shot 2013-02-19 at 2.53.02 AM.png

 

But under PCI Cards, the 9800 GT does not show up (it should, right?): Screen Shot 2013-02-19 at 2.53.23 AM.png

 

How do i know if it's actually being detected without using a secondary monitor, which i don't have? That was a rather inept question: i just needed to plug my only monitor to the DVI out of my 9800 GT. It was immediately recognized: Screen Shot 2013-02-19 at 3.08.34 AM.png

 

It seems to be really working, since NVDANV50Hal.kext is loaded: Screen Shot 2013-02-19 at 3.12.04 AM.png

But is this info really enough to say it for sure?

 

Well, this made me a bit worried: Screen Shot 2013-02-19 at 3.15.38 AM.png Screen Shot 2013-02-19 at 3.15.48 AM.png

 

But then: Screen Shot 2013-02-19 at 3.30.45 AM.png

 

If it's not really working as it seems, can't i just use NVEnabler (since it also requires GE=No)? That was fear of being happy: it is working indeed.

 

More questions: how i choose with which card a given app will run? How can i do a OpenCL/OpenGL bench test with each of the cards? Done.

 

Thank you very much indeed. To both of you guys! You are the best, seriously! :)

Link to comment
Share on other sites

Did you ever try to get this setup of yours to work with Clover UEFI boot?

 

But under PCI Cards, the 9800 GT does not show up (it should, right?)

 

More questions: how i choose with which card a given app will run?

Works great in Clover UEFI, 500 more GeekBench points, Chameleon vs. Clover.

 

To show in PCI Cards, make this dsdt edit (assumes native z77-ud3h dsdt)

	 Device (PEG0)
	 {
		 Name (_ADR, 0x00010000)
		 Device (PEGP)
		 {
			 Name (_ADR, Zero)
			 Name (_SUN, One)

 

Launch the app in the display connected to the graphics system you want to use.

  • Like 1
Link to comment
Share on other sites

Thank you for this new patch, Toleda: worked like a charm (my board is a H77-DS3H)!

 

About using UEFI, i'm having no luck (it used to work fine with only the 9800 GT enabled): i was getting a blank screen just before where the Clover boot menu would show up, then i removed CRMVideoDriver.EFI. Now i get a cursor blinking forever and yet no Clover menu. EDIT: Now i boot to the desktop, after removing the Csm video driver and patch vbios string, but the system is unusable due to heavy artifacts. I'm already investigating the issue, though, and asked for help in the Clover discussion topic.

 

One last question: to get HDMI audio to work, i need also to patch AppleHDA, right? Because only applying the DSDT fix didn't enable it.

 

Best regards!

Link to comment
Share on other sites

One last question: to get HDMI audio to work, i need also to patch AppleHDA, right? Because only applying the DSDT fix didn't enable it.

For HD4000 HDMI audio, Google search [Easy Guide] ML: HDMI Audio/HD4000/7 Series MB.

No patch is required for native ML HD4000 HDMI audio.

For your 887 on board audio, the post above provides installation instructions for the ALC 887 edited AppleHDA.kext.

  • Like 1
Link to comment
Share on other sites

Thank you once more, Toleda: i used a patched AppleHDA + HDAEnabler (from Voldemort's tools) to get my ALC887 running and it's doing just fine. Only HDMI audio is missing. Going to try the guide you pointed ASAP.

 

Best regards!

 

UPDATE: The guide was really a cakewalk, and now i have HDMI working. Thanks! I really think you should gather all tutorials you've been writing (you seem to do a lot of them) and make a book of them, "The Practical Book of OSX86" or something like that. Congrats!

Link to comment
Share on other sites

Just as a side note, using the HD4000 (booting from BIOS, i'll test later with UEFI) seems to improve drastically the performance of the system (except for graphics, of course), as you can see here (and compare with the previously posted result): Screen Shot 2013-02-19 at 4.17.17 PM.png

 

Best regards!

 

UPDATE: Clover UEFI boot brings further improvements both in graphics and CPU performance (confirming what Toleda said, despite i'm yet to run Geekbench EDIT: ran it, and the results are consistent with what i was already seeing, even a hundred of points lower, so i have two discrepant results - the third screenshot bellow), as you can see. The results highlighted in orange were obtained after booting from UEFI (brown for BIOS boot):

 

Screen Shot 2013-02-20 at 12.15.26 AM.png

 

Screen Shot 2013-02-20 at 12.19.29 AM.png

 

Screen Shot 2013-02-20 at 12.33.46 AM.png

 

My results with the 9800GT are also there (the higher is already with Clover BIOS boot, the other was with Chameleon and using only the 9800GT in the setup).

 

Notice that, despite graphics performance still not being in the same league as what i get with the monitor connected to the 9800GT, the accentuated performance gain i have with the HD4000, specially with UEFI (i'm yet to test the 9800GT with UEFI, but the results should be consistent with that) more that compensate for it (if you believe more in Cinebench than in Geekbench, like i do), so i think i'll let the nVidia 9800GT to applications that rely heavily in OpenGL/CL computing, doing all other work with the HD4000.

 

Best regards!

  • Like 1
Link to comment
Share on other sites

  • 2 weeks later...

Hi again, Toleda and Rampage!

 

What should i change in the above configuration to run both cards with the same setup and same machine on 64-bit Snow Leopard 10.6.8? I just did a partition for SL because i need some rosetta goodies, but i can get only resolution with the HD4000 (i even tried installing ML's HD4000 kexts on SL) and a black screen from any of the nVidia 9800 GT outputs (yet the verbose mode indicates that nVidia drivers load and start). I know that Snow Leopard was never meant to run on IB CPUs, and i needed a patched kernel for it, so i'm satisfied with only resolution with my HD4000, as long as the 9800 works for the second monitor.

 

Best regards.

Link to comment
Share on other sites

Thank you for answering, Rampage!

 

About the HD4000, no problems: more than satisfied getting resolution with Graphics Mode=1920x1080x32, which i already do. But what about the 9800 GT? Can't i make it work as a second monitor, the same way i do with Mountain Lion? Or that's only possible if both cards are supported?

 

Best regards!

 

P.S.: by the way, off-topic, thank you very much for your Recovery Partition guide. I couldn't post it in your blog, so i do here.

Link to comment
Share on other sites

  • 2 weeks later...

By the way, now i'm trying to set up a three card configuration, with the Intel HD4000 as the primary, the 9800GT in the 16x PCI-e slot, and the GeForce G210 in the secondary PCI-e slot (4x). It appears that the system recognize all the three cards:

 

Screen Shot 2013-03-16 at 3.07.16 AM.png

 

But when i try connecting any monitor to any of the three ports of the G210 (which is a card which rather works OOB when it's running alone), i get a black screen (standby mode). Do you guys know about a possible solution for this? In my DSDT, i injected - following the steps recommended here in the topic by Toleda - only the HD4000, the PCI-e (otherwise the 9800GT would work but wouldn't appear in System Report) and HDMI audio fix.

 

All the best!

Link to comment
Share on other sites

Driver-IST needs to be injected with the DSDT injection for that card. Boot with it alone and get a IOreg and that is were you get the info. No more black screen. This is a hardcore fix and is hard to find info on but it does work as I must use it in my Testing rig when I use Nvidia.

  • Like 1
Link to comment
Share on other sites

 Share

×
×
  • Create New...