Contribute
Register

SSDT GPU (Graphics Card) Injection

Joined
Jul 24, 2015
Messages
2,331
Motherboard
MSI H81i
CPU
i5-4570
Graphics
RX 580
Can anyone clarify for me what properties I need for dual cards using mac pro 6,1 definition with 2x GTX 1070 8GB, the guide is a little confusing. I have spent a good 6 hours on this...

I created DSDT's for each card using the right device address and I can get each one to work individually but If I have booth cards in at the same time its stuck in verbose (black screen mode).

Anyone out there using dual cards care to chime in?
Post your DSL...
 
Joined
Feb 5, 2011
Messages
122
Motherboard
Gigabyte X299 AORUS Gaming 7
CPU
i9-7900X
Graphics
2x GTX 1070 8GB
Mac
Mac Pro
Classic Mac
Apple, iBook, Performa, Power Mac, PowerBook, SE
Mobile Phone
Android
Post your DSL...
@vulgo I ended up using the iMac Pro definition and it worked! I did not need to use the SSDT's, read about it working on insanelymac

Thanks!
 
Last edited:
Joined
Jan 10, 2018
Messages
94
Motherboard
Clevo N155RF1
CPU
i7-6700HQ HM170
Graphics
HD530 GTX965M
Hi. my laptop is HD530+965M. And I can disable the HD530 in BIOS. If I don't disable HD530 in the BIOS , my laptop's monitor works with HD530, and HDMI connected monitor also works with 965M. But when I disable HD530 in the BIOS ,my laptop's monitor will not work, but the HDMI monitor still works. How I can fix laptop's monitor? Do you have any ideas? Thank you!
 

RehabMan

Moderator
Joined
May 3, 2012
Messages
191,123
Motherboard
Intel DH67BL
CPU
Core i7-2600K
Graphics
Intel HD 3000
Mac
MacBook Air
Mobile Phone
iOS
Hi. my laptop is HD530+965M. And I can disable the HD530 in BIOS. If I don't disable HD530 in the BIOS , my laptop's monitor works with HD530, and HDMI connected monitor also works with 965M. But when I disable HD530 in the BIOS ,my laptop's monitor will not work, but the HDMI monitor still works. How I can fix laptop's monitor? Do you have any ideas? Thank you!
Laptop questions are off-topic in the desktop forums.
Refer to the laptop forums/FAQ:
https://www.tonymacx86.com/threads/faq-read-first-laptop-frequent-questions.164990/
 

GDS

Joined
May 23, 2010
Messages
227
Motherboard
X99 Deluxe II
CPU
Xeon 2696 v4
Graphics
Gigabyte Aorus 1080 Ti Waterforce
Mac
MacBook Pro
Mobile Phone
iOS
hello

very curious: are you able to boot in dual NVIDIA with iMac pro definition?
are you on X.12.6 or X.13.3?

i tried tons of time with dual titan X on X.13 without success, the problem was the dual graphic card
and don't know if iMac Pro can be chosen for X.12.6 (I really don't think so)

if you have any tips I will be more than happy

@vulgo I ended up using the iMac Pro definition and it worked! I did not need to use the SSDT's, read about it working on insanelymac

Thanks!
 

GDS

Joined
May 23, 2010
Messages
227
Motherboard
X99 Deluxe II
CPU
Xeon 2696 v4
Graphics
Gigabyte Aorus 1080 Ti Waterforce
Mac
MacBook Pro
Mobile Phone
iOS
Hello I come back after tons of tries without success
I hope that someone could help me

I have 2 titan x maxwell
I just try to let it works on x.12.6
And it is impossible

I tried of course many times the great step by step but no success

If someone can help me I will be very happy

Thx




810B4454-260E-4E83-A563-11C296ABE84E.jpeg
ED28BF3F-EC53-4182-844D-15D4817B218C.jpeg
C8F88128-59A0-4B1F-8223-EF535AE073BC.jpeg
9087E3C1-472C-4075-B57A-24B0E27E4D65.jpeg
E252194D-0396-4A4B-A4E5-6B6626A70BE5.jpeg
44839862-533B-4D39-A6C3-7AA4537FF787.jpeg
 
Joined
Aug 24, 2015
Messages
2
Motherboard
Asus Maximus IX Code
CPU
Intel i7 6700K
Graphics
EVGA Geforce 1080Ti FTW3 SLI
Mac
MacBook Pro
Mobile Phone
Android, iOS
I've been working on SSDTs all day to try to get HDMI Audio over DisplayPort and haven't had much luck.

I don't have the issues most people see with black screens and whatnot; my graphics actually work fine. However, the HDMI Audio never populates.

I'm able to use NvidiaGraphicsFixup to get audio, but it caused a bunch of other issues, namely trouble waking from sleep, incorrect resolution on boot, and really laggy UI (possibly a memory leak). Since removing it, the system performs how I'd expect besides audio.

System:
CPU: i7-8700k
GPU: 2x EVGA 1080Ti FTW3
Monitor: Dell UP2715K (5K, dual DisplayPort)
System Definition: iMac 18,3

Things I've tried:
  1. I made custom SSDTs for each card and I can verify that in IORegistryExplorer it looks like renaming to GFX0/GFX1 has worked.
  2. I tried swapping DisplayPort ports and no combination works (1/2 and 2/1 display, 1/3 and 2/3 and vice versa do not display anything).
  3. I tried completely abandoning this method and going with toleda's script, which didn't work.
  4. I tried adding HDMIAudio.kext to no avail, and subsequently removed it.

I'm kind of at a loss here, so I'd really appreciate any help. I've attached the files that I think would help debug the issue. Thank you!
 

Attachments

corint1

Suspended
Joined
Aug 16, 2017
Messages
446
Motherboard
ASUS MAXIMUS X HERO WI-FI AC
CPU
i9-9900K
Graphics
Radeon VII
Mac
Mac mini
Mobile Phone
iOS
I've been working on SSDTs all day to try to get HDMI Audio over DisplayPort and haven't had much luck.

I don't have the issues most people see with black screens and whatnot; my graphics actually work fine. However, the HDMI Audio never populates.

I'm able to use NvidiaGraphicsFixup to get audio, but it caused a bunch of other issues, namely trouble waking from sleep, incorrect resolution on boot, and really laggy UI (possibly a memory leak). Since removing it, the system performs how I'd expect besides audio.

System:
CPU: i7-8700k
GPU: 2x EVGA 1080Ti FTW3
Monitor: Dell UP2715K (5K, dual DisplayPort)
System Definition: iMac 18,3

Things I've tried:
  1. I made custom SSDTs for each card and I can verify that in IORegistryExplorer it looks like renaming to GFX0/GFX1 has worked.
  2. I tried swapping DisplayPort ports and no combination works (1/2 and 2/1 display, 1/3 and 2/3 and vice versa do not display anything).
  3. I tried completely abandoning this method and going with toleda's script, which didn't work.
  4. I tried adding HDMIAudio.kext to no avail, and subsequently removed it.

I'm kind of at a loss here, so I'd really appreciate any help. I've attached the files that I think would help debug the issue. Thank you!

try this
 

Attachments

Joined
Aug 24, 2012
Messages
25
Motherboard
intel 5520sc , intel qm77
CPU
2X xeon x5650 . i73940xm
Graphics
ati hd8670 . nvidia k5000m
Mac
MacBook Pro, Mac Pro
Mobile Phone
Android
Work in progress...
Updated step 3b and files 2/22/2017.

If you have come to this guide to deal with a "Black Screen" issue, please read this post first:

http://www.tonymacx86.com/graphics/183113-black-screen-macpro-6-1-imac-15-imac-17-system-definition.html

You may also want to take a look at this post if you feel you might be having other Nvidia Web Driver related issues:
Solving NVIDIA Driver Install & Loading Problems

Injecting your GPU/s in your ACPI tables can:
• Enable HDMI audio functionality from your GPU.
• Possibly resolve issues with connecting multiple monitors.
• Solve ports not working.
• Fix issues with hot-plugging monitors.
• Naming your GPU to "GFX1" can eliminate the "Black Screen" issue with the MacPro6,1 system definition e.g. losing video signal to your monitor when OSX finishes loading and you should reach the desktop at boot time (the system is running, fully functional but there is no signal to the monitor). [credit: dgsga and furter]. NOTE: The system will still be responsive (not frozen). If your system is unresponsive with a black screen, this will not help you. NOTE: This trick will only work with MacPro6,1 and NOT iMac15-17.

I prefer SSDTs over the DSDT for device injection as updating the BIOS, moving PCI cards, or adding/removing PCI cards may require you to extract and edit a new DSDT.

Background:

In OEM Apple ACPI tables, the GPU Devices are named as follows:

iMac13/14/15/17: Discrete GPU = "GFX0" (@0). Integrated GPU = "IGPU" (@2 or 0x00020000)
MacPro3,1/5,1: Discrete GPU#1 = "PSX1" (@0).
MacPro6,1: Discrete GPU#1 = "GFX1" (@0). Discrete GPU#2 = "GFX2" (@0).

The usual school of thought is that each GPU should have a unique name (1st GPU = GFX0, 2nd GPU = GFX1 etc etc etc). However, If you use MacPro6,1 with multiple GPUs, you need to name all GPUs GFX1. Any GPU with a different name will lose video signal after the "Apple Logo" boot progress screen.

Preparation:


The file attachment at the bottom of this post contains a basic starter SSDT named SSDT-1.aml. Please download and unzip the files now.

Restart your hackintosh and enter the Clover GUI (you may need to hold down the spacebar while it's booting if you have Timeout set to 0). Press the F4 key (this will extract your motherboard's OEM ACPI tables) and wait for 5 seconds (Clover won't give you any indication that it has extracted the files). Boot your hackintosh and mount your EFI partition (see my included Mount EFI apps).

IMPORTANT:
Make sure your clover config won't conflict with your new SSDT injection. Open your Clover config.plist (EFI/CLOVER/config.plist).

Make sure that you don't have "AddHDMI" active. If it is present, set it to "false":

Code:
    <key>ACPI</key>
    <dict>
        <key>DSDT</key>
        <dict>
...
            <key>Fixes</key>
            <dict>
...
                <key>AddHDMI_8000000</key>
                <false/>
I'm not sure if it matters if Clover is adding properties to your GPU. If they are present, you may want to remove them. If any of these keys are not present, it's OK, don't add them.
Code:
    <key>Devices</key>
    <dict>
        <key>AddProperties</key>
        <array>
            <dict>
                <key>Device</key>
                <string> *your GPU* </string>
                <key> *key* </key>
                <string> *any* </string>
...
Make sure that Clover is not using a EFI string to inject your GPU (you would have had to put it there yourself).
Code:
        <key>Inject</key>
        <false/>
        <key>NoDefaultProperties</key>
        <false/>
        <key>Properties</key>
        <string> *string of numbers* </string>
I'm not sure if it matters if Clover is faking your discrete GPU's device ID. Fake device ID's can be added to the SSDT if needed (info coming later but you might want to wait if you need a fake GPU ID). UseIntelHDMI might be OK but I'm not positive that it won't conflict with our Discrete GPU SSDT injection. If any of these keys are not present, it's OK, don't add them.
Code:
        <key>FakeID</key>
        <dict>
            <key>ATI</key>
            <string>0x0</string>
...
            <key>IntelGFX</key>
            <string>0x0</string>
...
            <key>NVidia</key>
            <string>0x0</string>
...
        <key>UseIntelHDMI</key>
        <false/>

Navigate to the EFI/CLOVER/ACPI/patched folder. If you have DSDT.aml or SSDT*.aml in this folder, verify that you don't already have an entry/s for your GPU/s in these files. If there are GPU entry/s in these ACPI files, you may either remove them, modify the device name/s or leave them alone and skip making a new one/s. You can not inject the same device more than once. If you already have a SSDT named SSDT-1.aml there, rename the starter SSDT-1.aml you just downloaded using the next sequentially higher number IE: SSDT-2.aml or SSDT-3.aml etc etc etc. Names you can use are: "SSDT.aml" or "SSDT-0.aml" through "SSDT-9.aml". If you have more than 1 GPU installed and would like to create SSDTs for them too, duplicate the unmodified starter SSDT and name it using the previously mentioned naming conventions. Continue duplicating and renaming until you have enough for all the GPUs you'd like to inject.


1) Location:

Find your GPU's location in your IO Registry. I prefer IORegistryExplorer.app but you can use IOJones if you prefer. Open your IO Registry viewer and find your GPU. You can try searching for the word "display" if you are lost. In this example, the GPU is located in the PCI slot named "NPE3" and the address is "@2"(0x00020000).
NOTE: The GPU was given the name "display" by default because it has no given name in the ACPI tables. It's address is @0 (Zero or 0x00) in NPE3 which is @2 (0x00020000) in PCI0. Your GPU may already have a name assigned to it in the ACPI tables like "GFX0@0" or "PEGP@0".


NOTE: "AppleACPIPCI" is the driver and not a device. "IOPP" is the PCI bridge for that slot and not a additional device (it has no "@" address). Take a note of the GPU's device name, or name of the PCI slot that your GPU is installed in. Use TextEdit to record your notes.

2) Path:


Navigate to the EFI/CLOVER/ACPI/origin folder. Open DSDT.aml with MaciASL http://sourceforge.net/projects/maciasl/ and enter the name you found in step 1 in the search box labeled "Find" at the top of the app. Use the ">" button next to the search box to go to the matching results. NOTE: The result you are looking for will start with the word "Device". EXAMPLE: "Device (NPE3)".



Take a note of the device path at the far bottom left corner of the app but discard "DSDT" and separate each device with a period ".". Example: "_SB.PCI0.NPE3".
NOTE: If you can't find your device in the DSDT, open your SSDTs from the origin folder and search for the device in each of them. Discard "SSDT" instead of "DSDT" in the path if the device was in a SSDT. Take a note of the device's "Name (_ADR, ...)" (address). If it is "Name (_ADR, 0x00010000)", "Name (_ADR, 0x00020000)", "Name (_ADR, 0x00030000)", or something similar, you will add GFX1 to it in step 3a.
Examples:
PCI0@0 > NPE3@2 > display@0 (_SB.PCI0.NPE3)
PCI0@0 > NPE1@1 > display@0 (_SB.PCI0.NPE1)
PCI0@0 > NPE7@3 > display@0 (_SB.PCI0.NPE7)
PCI0@0 > NPE9@3,2 > display@0 (_SB.PCI0.NPE9)

If it is "Name (_ADR, Zero)", "Name (_ADR, 0x00)" or "Name (_ADR, 0xFFFF)", you will need to disable the device and replace it with GFX1 in step 3b. You should also take note of what device it is inside of and what other devices are located there and what their addresses are. In the example below, the GPU is loaded in "Device (H000)" which is in BR3A. BR3A is the PCI slot but has many other devices in it. H000-H007 and D07E are reserved addresses for devices to load. "Device (H000)" will need to be disabled so that "Device (GFX1)" [new GPU name] can take the address "Name (_ADR, 0x00)". "Device (H001)" will need to be disabled as well so that "Device (HDAU)" [HDMI audio] can take the address "Name (_ADR, 0x01)".



BUT, we're not done yet. In the image below, you can see that "Device (D07E)" has the address "Name (_ADR, 0xFFFF)". Because it is FFFF it can be enumerated to anything. The GPU will try to load to it before the new GFX1 device in the new SSDT. So we will need to disable D07E as well. Take note of all these device names and paths.



Examples:
PCI0@0 > PEG0@1 > PEGP@0 (\_SB.PCI0.PEG0.PEGP)
PCI0@0 > BR3A@3 > H000@0 (_SB.PCI0.BR3A.H000)
PCI0@0 > BR3A@3 > D077@0 (_SB.PCI0.BR3A.D07E)
PCI0@0 > BR2A@2 > H000@0 (_SB.PCI0.BR2A.H000)
PCI0@0 > BR2A@2 > D075@0 (_SB.PCI0.BR3A.D075)


3) Patching:


Open the downloaded SSDT-1.aml (or the duplicate you are working on) in MaciASL.

If your GPU already had a device name (GFX0, PEGP, PXSX, H000, D077 or anything else) with a Zero (0x0) address in the OEM ACPI tables (DSDT or a SSDT), Skip to Step 3b.


If your GPU had no entry in the OEM ACPI tables, and showed up in IORegistryExplorer as "display@0" , continue here with step 3a.

3a) Add GFX1 to the PCI slot device:

Replace "_SB.PCI0.NPE3" with your device path from step 2 (if it is different), but leave ".GFX1" ".HDAU" at the end for the 2 devices.

EXAMPLE: If your path was \_SB.PCI0.PEG0, then Replace just the red part in "Device (_SB.PCI0.NPE3.GFX1)" & "Device (_SB.PCI0.NPE3.HDAU)" with \_SB.PCI0.PEG0.

BEFORE:

Code:
{
    Device (_SB.PCI0.NPE3.GFX1)
    {
        Name (_ADR, Zero)
        Name (_SUN, One)
    }


    Device (_SB.PCI0.NPE3.HDAU)
    {
        Name (_ADR, One)
    }
}

AFTER:

Code:
{
    Device (\_SB.PCI0.PEG0.GFX1)
    {
        Name (_ADR, Zero)
        Name (_SUN, One)
    }


    Device (\_SB.PCI0.PEG0.HDAU)
    {
        Name (_ADR, One)
    }
}

Continue to Step 3c


.
shilohh
. Hi man;) . sorry for being out of place....
I have a one major problem where I cant get my dell m6700 i7-3940XM k5000(no intel video card) internal screen to work - all external monitor connections works just fine. I have tried all kind of stuff that i cant even remember... can i get help from you ? I thinks you can understand and fix it easily...... how? - thanks ....please...
I tried to understand if this is my case but i got confused....(https://www.tonymacx86.com/threads/ssdt-gpu-graphics-card-injection.183354/ )

I really need help - i understand fro dell that this laptop is only capable of 3 external screen and no internal even in windows - and OS X probably activates all 3 connections (hdmi ,vga ,dp ) on boot so they all work but internal is dead....
here are some info files from my laptop - ioreg,dsdt,efi

thanks!!!!!!!!
 

Attachments

Last edited:
Joined
Jul 10, 2016
Messages
14
Motherboard
ASUS PRIME Z370-A II
CPU
I7-8700K
Graphics
iGPU UHD 630, 2x Titan X
@shilohh
I followed you manual. But i have no chance to do it. I use in Total
2x Titan X in PCI Slot 1 and 3
Then iGPU 530.
My system works quit good.
But in the Devices it donw show the correct slots and in openCL tools there is only one Nvidia card.
When i use CUDA all works normal.

Do you have any Tip and idea for me how to solve the issue ?.

Greets Andy

I use actual webdriver from nvidia the actual OS 10.13.6
My Mainboard is Gigabyte Z170 Gaming G1

Pavo helped me a lot but with the 2 GPU this he have also no idea.
 

Attachments

Top