Contribute
Register

How to build your own iMac Pro [Successful Build/Extended Guide]

Status
Not open for further replies.
Isn't it possible to hook 3 displays on the RX580? I'm looking at that card for my build. Gaming is less important for me.

I couldn't say. I will say that the Vega Frontier card, although the card has 3 x DisplayPorts, it won't show the third screen. That's the reason why I purchased a second one. You may (or may not) have the same issue. You can try though with one card and if it works let me know. Thanks...
 

Just wanted to let you know that I installed the extra files needed to get everything up and running properly. The only thing that I didn't install was the AppleALC (Section C Step 13), as I didn't understand how to do that process and I never injected the ATI and things are still working fine. Do I still need to Inject ATI and install AppleALC?

Also, I'm having problems with my Kensington SlimBlade Trackball as the app is now not being recognized in my System Preferences. "It shows the app but says: No supported sensing Trackball found. Please connect your trackball to configure it." But it's connected. I had this issue before and can't remember the process on what I did to make this work again? Let me know what you can. Thanks.

(Edit: I was able to figure out my issue with my Kensington SlimBlade Trackball issue). On the System Preferences app I was able to right click on the Trackball Works icon and it said: "Remove "Trackball Works" Pane." So I did and I reinstalled the app and it restarted and things are working again). Still need help with the: Inject AT and AppleALC files (if they need to be installed or not). Again, thanks. :)
 
Last edited by a moderator:
Well the question is the following:

You can obtain analogue audio output by the following easy procedure:

Screen Shot 2017-12-16 at 11.01.41.png


Now, if you also want HDMI/DP digital audio output you have two possibilities:

1.) None-native GPU implementation: Whatevergreen.kext v1.1.3 in /EFI/CLOVER/kexts/Other/

or

2.) Native GPU implementation: HDMI/DP output via the SSDT-X299.aml in /EFI/CLOVER/ACPI/patched/,
which in your case with 2x ATI GPUs in PCIe Slots 1 and 4 must at least have the following implementations:​

Code:
DefinitionBlock ("", "SSDT", 1, "NICO", "X299", 0x00000000)
{
    External (_SB_.PCI0.HDEF, DeviceObj)    // (from opcode)
    External (_SB_.PCI2, DeviceObj)    // (from opcode)
    External (_SB_.PCI2.BR2A, DeviceObj)    // (from opcode)
    External (_SB_.PCI2.BR2A.GFX0, DeviceObj)    // (from opcode)
    External (_SB_.PCI1, DeviceObj)    // (from opcode)
    External (_SB_.PCI1.BR1A, DeviceObj)    // (from opcode)
    External (_SB_.PCI1.BR1A.GFX1, DeviceObj)    // (from opcode)
    External (GFX0, DeviceObj)    // (from opcode)
    External (GFX1, DeviceObj)    // (from opcode)
    External (GPRW, MethodObj)    // 2 Arguments (from opcode)

    Scope (\_SB.PCI0.HDEF)
    {
        Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
        {
            Store (Package (0x16)
                {
                    "AAPL,slot-name",
                    Buffer (0x09)
                    {
                        "Built In"
                    },

                    "model",
                    Buffer (0x1B)
                    {
                        "Intel X299 Series HD Audio"
                    },

                    "name",
                    Buffer (0x24)
                    {
                        "Realtek ALC S1220A Audio Controller"
                    },

                    "hda-gfx",
                    Buffer (0x0A)
                    {
                        "onboard-1"
                    },

                    "device_type",
                    Buffer (0x14)
                    {
                        "HD-Audio-Controller"
                    },

                    "device-id",
                    Buffer (0x04)
                    {
                         0xF0, 0xA2, 0x00, 0x00           
                    },

                    "compatible",
                    Buffer (0x0D)
                    {
                        "pci8086,0C0C"
                    },

                    "MaximumBootBeepVolume",
                    Buffer (One)
                    {
                         0xEE                             
                    },

                    "MaximumBootBeepVolumeAlt",
                    Buffer (One)
                    {
                         0xEE                             
                    },

                    "layout-id",
                    Buffer (0x04)
                    {
                         0x07, 0x00, 0x00, 0x00           
                    },

                    "PinConfigurations",
                    Buffer (Zero) {}
                }, Local0)
            DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
            Return (Local0)
        }
    }

 
   Scope (\_SB.PCI1.BR1A.GFX1)
    {
        OperationRegion (PCIS, PCI_Config, Zero, 0x0100)
        Field (PCIS, AnyAcc, NoLock, Preserve)
        {
            PVID,   16,
            PDID,   16
        }

        Method (_PRW, 0, NotSerialized)  // _PRW: Power Resources for Wake
        {
            Return (GPRW (0x69, 0x04))
        }

        Device (GFXB)
        {
            Name (_ADR, Zero)  // _ADR: Address
            Device (GFX1)
            {
                Name (_ADR, Zero)  // _ADR: Address
                OperationRegion (PCIB, PCI_Config, Zero, 0x0100)
                Field (PCIB, AnyAcc, NoLock, Preserve)
                {
                    Offset (0x10),
                    BAR0,   32,
                    BAR1,   32,
                    BAR2,   64,
                    BAR4,   32,
                    BAR5,   32
                }

                Method (_INI, 0, NotSerialized)  // _INI: Initialize
                {
                    If (LEqual (BAR5, Zero))
                    {
                        Store (BAR2, Local0)
                    }
                    Else
                    {
                        Store (BAR5, Local0)
                    }

                    OperationRegion (GREG, SystemMemory, And (Local0, 0xFFFFFFF0), 0x8000)
                    Field (GREG, AnyAcc, NoLock, Preserve)
                    {
                        Offset (0x6800),
                        GENA,   32,
                        GCTL,   32,
                        LTBC,   32,
                        Offset (0x6810),
                        PSBL,   32,
                        SSBL,   32,
                        PTCH,   32,
                        PSBH,   32,
                        SSBH,   32,
                        Offset (0x6848),
                        FCTL,   32,
                        Offset (0x6EF8),
                        MUMD,   32
                    }

                    Store (Zero, FCTL)
                    Store (Zero, PSBH)
                    Store (Zero, SSBH)
                    Store (Zero, LTBC)
                    Store (One, GENA)
                    Store (Zero, MUMD)
                }

                Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                {
                    Store (Package (0x16)
                        {
                            "AAPL,slot-name",
                            Buffer (0x07)
                            {
                                "Slot-3"
                            },

                            "CFG,CFG_USE_AGDC",
                            Buffer (One)
                            {
                                 0x00                             
                            },

                            "PP,PP_DisableAutoWattman",
                            Buffer (One)
                            {
                                 0x00                             
                            },

                            "ATY,Part#",
                            Buffer (0x0C)
                            {
                                "113-3E366DU"
                            },

                            "@0,AAPL,boot-display",
                            Buffer (One)
                            {
                                 0x00                             
                            },

                            "@0,name",
                            Buffer (0x0D)
                            {
                                "ATY,Kamarang"
                            },

                            "@1,name",
                            Buffer (0x0D)
                            {
                                "ATY,Kamarang"
                            },

                            "@2,name",
                            Buffer (0x0D)
                            {
                                "ATY,Kamarang"
                            },

                            "@3,name",
                            Buffer (0x0D)
                            {
                                "ATY,Kamarang"
                            },

                            "model",
                            Buffer (0x13)
                            {
                                "AMD Radeon Vega 64"
                            },

                            "hda-gfx",
                            Buffer (0x0A)
                            {
                                "onboard-2"
                            }
                        }, Local0)
                    DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                    Return (Local0)
                }
            }

            Device (HDAU)
            {
                Name (_ADR, One)  // _ADR: Address
                Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                {
                    Store (Package (0x0C)
                        {
                            "built-in",
                            Buffer (One)
                            {
                                 0x00                             
                            },

                            "AAPL,slot-name",
                            Buffer (0x07)
                            {
                                "Slot-3"
                            },

                            "layout-id",
                            Buffer (0x04)
                            {
                                 0x01, 0x00, 0x00, 0x00           
                            },

                            "name",
                            Buffer (0x0D)
                            {
                                "AMD HD-Audio"
                            },

                            "model",
                            Buffer (0x0D)
                            {
                                "AMD HD-Audio"
                            },

                            "hda-gfx",
                            Buffer (0x0A)
                            {
                                "onboard-2"
                            }
                        }, Local0)
                    DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                    Return (Local0)
                }
            }
        }
    }

    Scope (\_SB.PCI2.BR2A.GFX0)
    {
        OperationRegion (PCIS, PCI_Config, Zero, 0x0100)
        Field (PCIS, AnyAcc, NoLock, Preserve)
        {
            PVID,   16,
            PDID,   16
        }

        Method (_PRW, 0, NotSerialized)  // _PRW: Power Resources for Wake
        {
            Return (GPRW (0x69, 0x04))
        }

        Device (GFXA)
        {
            Name (_ADR, Zero)  // _ADR: Address
            Device (GFX0)
            {
                Name (_ADR, Zero)  // _ADR: Address
                OperationRegion (PCIB, PCI_Config, Zero, 0x0100)
                Field (PCIB, AnyAcc, NoLock, Preserve)
                {
                    Offset (0x10),
                    BAR0,   32,
                    BAR1,   32,
                    BAR2,   64,
                    BAR4,   32,
                    BAR5,   32
                }

                Method (_INI, 0, NotSerialized)  // _INI: Initialize
                {
                    If (LEqual (BAR5, Zero))
                    {
                        Store (BAR2, Local0)
                    }
                    Else
                    {
                        Store (BAR5, Local0)
                    }

                    OperationRegion (GREG, SystemMemory, And (Local0, 0xFFFFFFF0), 0x8000)
                    Field (GREG, AnyAcc, NoLock, Preserve)
                    {
                        Offset (0x6800),
                        GENA,   32,
                        GCTL,   32,
                        LTBC,   32,
                        Offset (0x6810),
                        PSBL,   32,
                        SSBL,   32,
                        PTCH,   32,
                        PSBH,   32,
                        SSBH,   32,
                        Offset (0x6848),
                        FCTL,   32,
                        Offset (0x6EF8),
                        MUMD,   32
                    }

                    Store (Zero, FCTL)
                    Store (Zero, PSBH)
                    Store (Zero, SSBH)
                    Store (Zero, LTBC)
                    Store (One, GENA)
                    Store (Zero, MUMD)
                }

                Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                {
                    Store (Package (0x16)
                        {
                            "AAPL,slot-name",
                            Buffer (0x07)
                            {
                                "Slot-1"
                            },

                            "CFG,CFG_USE_AGDC",
                            Buffer (One)
                            {
                                 0x00                             
                            },

                            "PP,PP_DisableAutoWattman",
                            Buffer (One)
                            {
                                 0x00                             
                            },

                            "ATY,Part#",
                            Buffer (0x0C)
                            {
                                "113-3E366DU"
                            },

                            "@0,AAPL,boot-display",
                            Buffer (One)
                            {
                                 0x00                             
                            },

                            "@0,name",
                            Buffer (0x0D)
                            {
                                "ATY,Kamarang"
                            },

                            "@1,name",
                            Buffer (0x0D)
                            {
                                "ATY,Kamarang"
                            },

                            "@2,name",
                            Buffer (0x0D)
                            {
                                "ATY,Kamarang"
                            },

                            "@3,name",
                            Buffer (0x0D)
                            {
                                "ATY,Kamarang"
                            },

                            "model",
                            Buffer (0x13)
                            {
                                "AMD Radeon Vega 64"
                            },

                            "hda-gfx",
                            Buffer (0x0A)
                            {
                                "onboard-2"
                            }
                        }, Local0)
                    DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                    Return (Local0)
                }
            }

            Device (HDAU)
            {
                Name (_ADR, One)  // _ADR: Address
                Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                {
                    Store (Package (0x0C)
                        {
                            "built-in",
                            Buffer (One)
                            {
                                 0x00                             
                            },

                            "AAPL,slot-name",
                            Buffer (0x07)
                            {
                                "Slot-1"
                            },

                            "layout-id",
                            Buffer (0x04)
                            {
                                 0x01, 0x00, 0x00, 0x00           
                            },

                            "name",
                            Buffer (0x0D)
                            {
                                "AMD HD-Audio"
                            },

                            "model",
                            Buffer (0x0D)
                            {
                                "AMD HD-Audio"
                            },

                            "hda-gfx",
                            Buffer (0x0A)
                            {
                                "onboard-2"
                            }
                        }, Local0)
                    DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                    Return (Local0)
                }
            }
        }
    }
}

Please carefully revise the individual device path implementations above by means of IROEGExplorer!

Note that in addition to the revision, likely adaptation and implementation of the above SST-X299.aml, you need to verify, adopt and enable the following DSDT Replacement Patches in the config.plist by means of Clover Configurator and with the help of IOREGExplorer!

a.) PC0x->PCIx

b.) CAVS->HDEF

c.) SL01->GFX1 534c3031 47465831

d.) SL05->GFX0​


Good luck,

KGP
 
Last edited:
New EFI-Folder attached at the bottom of the originating post/guide

EFi-Folder related modifications:
  • Implementation of Clover Boot Loader Clover_v2.4k_r4359

Enjoy and have fun :thumbup:

kgp.png
 

Attachments

  • EFI-X299-10.13.2-Release-161217.zip
    19.3 MB · Views: 96
@Rept , I guess it won't work. It is not a question of the GPU but of the GPU OSX implementation!

No more than 2 monitors per GPU!
 
@Rept , I guess it won't work. It is not a question of the GPU but of the GPU OSX implementation!

No more than 2 monitors per GPU!

I cannot confirm this.

I can connect 4 displays to the Vega: 3 4K via DisplayPort and one HD via HDMI.

Actually the 3 4Ks are not displays but Datapath FX4 interfaces where I can program EDIDs.

But all sink devices are recognised properly by macOS, see screenshot.

Maybe it is an EDID and/or HDCP issue (you can disable HDCP encryption in the FX4).
 

Attachments

  • Bildschirmfoto 2017-12-16 um 14.35.27.png
    Bildschirmfoto 2017-12-16 um 14.35.27.png
    62.7 KB · Views: 136
I cannot confirm this.

I can connect 4 displays to the Vega: 3 4K via DisplayPort and one HD via HDMI.

Actually the 3 4Ks are not displays but Datapath FX4 interfaces where I can program EDIDs.

But all sink devices are recognised properly by macOS, see screenshot.

Maybe it is an EDID and/or HDCP issue (you can disable HDCP encryption in the FX4).

Alright... even better.. I guess the best is that @Rept tries to run at first place 3x monitors with 1x RX580. If it does not work, he can think on alternatives.
 
Guys, I need your help with confirming a theory - this is for FCPX users only! Please use FXPC 10.4, if you can.

1. Please download the video sample I have supplied for this test: http://gofile.me/6vI7j/769wl0PBl
This may take a while, it is a 30 sec sample with 4GB file size.
2. Open a new library and a new project in FCPX on your fastest disk in the system, ideally NVME.
3. Import the video to your project.
4. Drag the video onto the timeline and wait, until the little processing dots on top of the video on the timeline have disappeared. Chose to import the clip in 5K, as FCPX suggests.
5. Drag the color correction filter (it is usually the first filter in the filters section on the right of the program) onto the video. Nothing will happen.
6. Prepare your iPhone stopwatch or equivalent and be ready. Start the watch as soon as you have dragged the slider in step 7 (keep your mouse button pressed) and NOW release and start your stop watch simultaneously.
7. Toggle to the filter settings and set the midtowns to -50% like indicated by the red boxes in this picture and begin stopping the time by release of the mouse button. Watch the little dots on top of the timeline. Once they have all disappeared (moving from left to right), please stop your watch and note the result.
fcpx_edit.jpg


My theory is that FCPX uses far more CPU processing for this than the power of the supplied GPU.

Here are my results:

i9-7900x (10-core), 64GB RAM, Nvidia Titan XP, Samsung NVME Pro: 30,88 Sec

Please help by testing and sharing your results, ideally some person with a i9-7980x or at least more than just 10 cores.

Thank you and happy testing!

BTW: If you wonder where the video was shot: It is a clip form my DJI Inspire 2 in the German Alps at a mountain called "Alpspitz" close to Zugspitze ;-)
 
I went ahead and bought everything :) :)
Excuse my newbie questions in advance...

"In order to perform a clean install of macOS High Sierra 10.13, prepare a USB Flash Drive (source, named USB) and a
NVMe or SDD or HDD destination drive fo your macOS installation by formatting both drives with HFS+"

"Copy the EFI directory to the empty EFI partitions of both your USB Flash Drive and your macOS Install destination drive"

Regarding these two remarks. Am I right that I need to do the same on the NVMe drive I bought? How does one do this? This NVMe is installed in a virgin new machine.
 
Status
Not open for further replies.
Back
Top