Contribute
Register

Radeon RX DisplayPort outputs - how do they work? (question and a solution)

Joined
Oct 26, 2011
Messages
20
Motherboard
Asus PRIME B250M-A
CPU
i5-7600
Graphics
Radeon RX 5700 XT
Classic Mac
  1. iBook
  2. Power Mac
  3. Quadra
  4. SE
Mobile Phone
  1. iOS
I recently upgraded my system to a Gigabyte Radeon RX 5700 XT. This card has 3 DisplayPort outputs and 1 HDMI. For context, I need to use the DisplayPort because my monitor will only do 4k@60Hz using DisplayPort 1.2, and also I need the sole HDMI output for audio to my receiver. When I initially set up the Radeon I plugged my monitor into the leftmost DisplayPort output (next to the HDMI).

I set the Radeon up and I was very pleased with how well it was working in macos Big Sur. The only complication was that I needed to specify agdpmod=pikera in Boot/Arguments in order to get any macos GUI to display (agdpmod=vit9696 seems like it should be equivalent, but it didn't work). I also need -disablegfxfirmware to avoid the "Begin Gfx firmware load process" loop at startup for the igpu.

I am using Clover r5138, FakeSMC, Big Sur 11.5.2, SMBIOS/ProductName = iMac17,1, Lilu 1.5.5, WhateverGreen 1.5.2.

Here's where things get weird: I dual boot this machine with Windows on a separate SSD. So yesterday I booted into Windows for the first time since upgrading the GPU, and while I was in Windows I installed the latest AMD Radeon driver software. I didn't make any changes on the macos side, but I think the Windows Radeon install must have do something to my vbios (GPU Bios version is 017.001.000.049 according to Windows) or other firmware settings because when I went to reboot back into macos I had no video once the GUI came up (clover and verbose boot were still displaying as normal). This symptom is very much like when agdpmod=pikera was missing from boot args. macos still recognized the radeon was present, but it wouldn't detect any display connected to the DisplayPort.

I tried several things, none of which helped at all:
agdpmod=vit9696
agdpmod=ignore
-wegnoigpu
-wegoff
SMBIOS = iMac19,1
SMBIOS = iMacPro1,1

Finally it occurred to me to try the other DisplayPort outputs. The middle one didn't work either, but with the monitor hooked up to the rightmost one macos will detect the monitor! So things are working for now but I am frustrated for two reasons. First, it seems I only have one working DisplayPort, which is fine for now but bad if I ever want to add a second monitor. Second, I have no idea what happened in Windows such that the behavior of the Radeon's DisplayPorts changed, or if that's even possible. How does macos address the GPU's DisplayPorts, in case something decides to rearrange them again in the future? Is this something that agdpmod is supposed to address?
 

Edhawk

Moderator
Joined
Aug 2, 2013
Messages
2,848
Motherboard
Gigabyte Z97X-UD5H
CPU
i7-4790K
Graphics
HD 4600 / RX 580
Mac
  1. iMac
  2. MacBook Air
  3. MacBook Pro
Mobile Phone
  1. iOS
With any of the AMD RX 5000 series of cards the agdpmod=pikera boot argument is essential if you are to avoid the known Black Screen issue. It has no effect, as far as I am aware, on the workings of the DP connectors on the dGPU.

Installing and updating the AMD drivers in Windows should have absolutely no bearing on the drivers and workings of the card in macOS.

One of the DP ports not working on an AMD card with multiple DP connectors is fairly common. Usually just one of the three won't work. That is what I have found on my 2 x RX 580's and RX 5500 XT card. I can run two displays from the left and middle DP connectors, but the third display has to be connected to the HDMI connector.

Your Kaby Lake system should be using an iMac 18,3 SMBIOS, as that is the system in which Apple uses an i5-7600 CPU.

FYI
  • The iMac17,1 SMBIOS is best suited to a Skylake system.
  • The iMac19,1 SMBIOS is best suited to Coffee Lake systems.
  • The iMacPro1,1 SMBIOS is best suited to a system that lacks an IGPU.
The DP connectors working or not usually depends on the Framebuffer being used.

You would need to investigate which Framebuffer is being used and how the three DP connectors are configured, using IORegistryExplorer. You can attach a copy of your IOReg if you want one of use to have a look at your setup. I would recommend you read and follow this guide if your plan to upload a copy of your IOReg - https://www.tonymacx86.com/threads/guide-how-to-make-a-copy-of-ioreg.58368/

As an example I have attached screenshots showing the 5 connectors from my RX580, three are DP (0x400), one is HDMI (0x800) and one is DVI (0x4). See how yours are configured to see if they correspond/match with each physical connector.

Screenshot 2021-09-01 at 21.17.36.png Screenshot 2021-09-01 at 21.17.46.png Screenshot 2021-09-01 at 21.18.01.png Screenshot 2021-09-01 at 21.18.09.png Screenshot 2021-09-01 at 21.18.20.png
 
Joined
Oct 26, 2011
Messages
20
Motherboard
Asus PRIME B250M-A
CPU
i5-7600
Graphics
Radeon RX 5700 XT
Classic Mac
  1. iBook
  2. Power Mac
  3. Quadra
  4. SE
Mobile Phone
  1. iOS
Thanks again, Edhawk!
Installing and updating the AMD drivers in Windows should have absolutely no bearing on the drivers and workings of the card in macOS.

I can't explain how it could have, but I don't have any other hypothesis for why my DP output spontaneously stopped working. I wonder if there is some NVRAM, either in the BIOS or in the GPU, that Windows changed the state of.

Your Kaby Lake system should be using an iMac 18,3 SMBIOS, as that is the system in which Apple uses an i5-7600 CPU.

FYI
  • The iMac17,1 SMBIOS is best suited to a Skylake system.
  • The iMac19,1 SMBIOS is best suited to Coffee Lake systems.
  • The iMacPro1,1 SMBIOS is best suited to a system that lacks an IGPU.

I've never been entirely clear on what difference having a particular SMBIOS makes, as long as macos works and imessage etc. are happy. FWIW I settled on iMac17,1 because the "How to Prepare for Big Sur" thread recommended it for simplicity: https://www.tonymacx86.com/threads/how-to-prepare-for-big-sur.305549/
Before that I had been using iMac14,2 for years without apparent problems (when I first setup this system iMac18 wasn't even out yet, and I'm sure I just used whatever MultiBeast suggested at the time). Anyway I'll look into using 18,3.

The DP connectors working or not usually depends on the Framebuffer being used.

You would need to investigate which Framebuffer is being used and how the three DP connectors are configured, using IORegistryExplorer. You can attach a copy of your IOReg if you want one of use to have a look at your setup. I would recommend you read and follow this guide if your plan to upload a copy of your IOReg - https://www.tonymacx86.com/threads/guide-how-to-make-a-copy-of-ioreg.58368/

As an example I have attached screenshots showing the 5 connectors from my RX580, three are DP (0x400), one is HDMI (0x800) and one is DVI (0x4). See how yours are configured to see if they correspond/match with each physical connector.

ioreg file attached. For me, ATY,RadeonFramebuffer@0 has connector-type = 0x400 (DP), @1 has 0x800 (HDMI), and @2 and @3 both have 0x0 (presumably the non-working ones).
 

Attachments

  • pleiades.ioreg.zip
    806.7 KB · Views: 25

Edhawk

Moderator
Joined
Aug 2, 2013
Messages
2,848
Motherboard
Gigabyte Z97X-UD5H
CPU
i7-4790K
Graphics
HD 4600 / RX 580
Mac
  1. iMac
  2. MacBook Air
  3. MacBook Pro
Mobile Phone
  1. iOS
From your IOReg I can see that your dGPU has 4 x connectors. Connectors 0 & 1 have a display connected.
  • Connector 0 is a DisplayPort connector (0x400)
  • Connector 1 is a HDMI connector (0x800)
  • Connectors 2 & 3 do not have a recognisable connector Type (0x0)
These attributes are shown in the four screenshots below.

Screenshot 2021-09-02 at 15.43.10.png Screenshot 2021-09-02 at 15.43.21.png Screenshot 2021-09-02 at 15.43.43.png Screenshot 2021-09-02 at 15.43.52.png

So something is fundamentally wrong with your setup of the RX 5700 XT dGPU.

The ACPI address of the card is /_SB/PCI0/PEG0/PEGP

I have no idea which slot the card is mounted within on your motherboard, as this information is missing from your IOReg.

You seem to be missing AppleALC.kext from your setup, well it is not loading if it is present and the entry I expected to see is not present.

You might need to add NVMeFix.kext to your setup, to help your Samsung 960 EVO NVME drive work at its best with macOS. This might also help the HP SSD EX920 drive too. NVMEFix.kext was created to help non-Apple NVMe drives work better in macOS. Copy attached below.

Your USB configuration is not set correctly. While you only have 15 ports active, they seem to be set with the wrong USB connector type, so they won't work as you would expect. I would recommend you have a read and follow this guide by UtterDisbelief - https://www.tonymacx86.com/threads/the-new-beginners-guide-to-usb-port-configuration.286553/

I would recommend you provide a copy of your CLOVER folder so we can see what you are using and just as importantly what you are not using to boot your system.

Remember to delete/redact your Serial Number, SmUUID, Board Serial Number, MLB and ROM from your config.plist before you post a copy here.
 

Attachments

  • NVMeFix-1.0.9-RELEASE.zip
    107.1 KB · Views: 20
Joined
Oct 26, 2011
Messages
20
Motherboard
Asus PRIME B250M-A
CPU
i5-7600
Graphics
Radeon RX 5700 XT
Classic Mac
  1. iBook
  2. Power Mac
  3. Quadra
  4. SE
Mobile Phone
  1. iOS
The ACPI address of the card is /_SB/PCI0/PEG0/PEGP

I have no idea which slot the card is mounted within on your motherboard, as this information is missing from your IOReg.

This motherboard only has a single PCIe x16 slot, so it's definitely in that one.

You seem to be missing AppleALC.kext from your setup, well it is not loading if it is present and the entry I expected to see is not present.

When I first step up this system in 2017 I had just a completely terrible time getting AppleALC to work to drive digital (spdif/optical) audio output from the onboard Realtek ALC887 audio (following toleda's instructions). A couple years later I made some changes and I found that VoodooHDA was way easier to get working and I never looked back. In the mean time I've switched to using HDMI audio output from the dGPU exclusively for audio, and I don't use the onboard audio at all. So maybe I'll try to see if AppleALC can be made to work on this system again, but for the most part I don't mind not having it.

You might need to add NVMeFix.kext to your setup, to help your Samsung 960 EVO NVME drive work at its best with macOS. This might also help the HP SSD EX920 drive too. NVMEFix.kext was created to help non-Apple NVMe drives work better in macOS. Copy attached below.

As I understand it NVMeFix.kext is only for improving power state management. It's not required to get the SSD working so for the sake of simplicity I left it out. I put it back just in case it helps with power but I don't think it's noticeable. Also note the HP SSD EX920 drive is my Windows (NTFS) drive and I don't use it from macos at all.

Your USB configuration is not set correctly. While you only have 15 ports active, they seem to be set with the wrong USB connector type, so they won't work as you would expect. I would recommend you have a read and follow this guide by UtterDisbelief - https://www.tonymacx86.com/threads/the-new-beginners-guide-to-usb-port-configuration.286553/

Thanks, I'd been using USBInjectAll.kext and not having any problems with it so I was content to leave it. I've taken it out now in favor of the Hackintool-generated USBPorts.kext. Updated ioreg file is attached.
 

Attachments

  • pleiades.ioreg.zip
    758.5 KB · Views: 16
Top