Contribute
Register

Trying to patch framebuffer for XFX RX 580 8GB in Mojave

Status
Not open for further replies.
Joined
Mar 25, 2011
Messages
9
Motherboard
GA-H97M-D3H
CPU
Xeon E3-1241 v3
Graphics
RX 580
Mac
  1. MacBook Pro
Mobile Phone
  1. iOS
So, I'm using Mojave over the last two months and noticed a few glitches and problems related to this specific video card.
When first installing the system, strangely when over the PCI section on System Profiler, the RX 580 was showing that a generic framebuffer or one that was made on the fly just for my card... all monitors were working and we were just fine. Adding a third monitor for work purposes however, made all the other ones went black just after boot and only came back if I had them unplugged and plugged back in again.

After that problem, I came across the framebuffer patching thing and researched a lot of it, but thats where everything goes even crazier...

My model in question is this one

The XFX RX 580 has 5 physical ports: 3DP, 1HDMI, 1DVI-D DL
However, if you pay attention to the features page in XFX site you can see that this card can support up to 6 displays using one MST Hubs at one of the display ports.
Clover itself detected the card as a 6 port card BUT the bios of this card shows this when decoded

384804


I've noticed that one of the DP ports has a linkb:true and the HDMI port also has it, what does that really mean?
Moving on, I've patched the Orinoco framebuffer and the results are exactly that:

The DVI port works if plugged in to a DVI monitor ONLY! if you plug in a DVI to HDMI adapter the display will be Purple and pinkish with several artifacts... unusable, but the DVI to DVI is fine...
The HDMI port works randomly, sometimes it crashes other monitors, freezing the system or making other monitors very very dimmer with only the cursor movable but system itself non responsible.
The DP port next to the HDMI port works fine, I can even plug in a DP to VGA adapter and the monitor works fine. Audio is working also, even through the adapters/splitters.
Dual monitor only works if one of the displays is attached to this DP port and the DVI port using the DVI cable.

Now, what the heck am I doing wrong? Is the Orinoco framebuffer wrong for me? This is the IOReg result
384805


You can see that the ATY,Orinoco has 6 displays entries: 0,1,2,3,4,5

My framebuffer patch only has 5 entries, this is the original one vs my patch.

My patch:

00040000 04030000 00010500 00000000 12040601 00000000
00040000 04030000 00010400 00000000 22050403 00000000
00040000 04030000 00010200 00000000 11020102 00000000
00080000 04020000 00010300 00000000 21030504 00000000
04000000 14020000 00010100 00000000 10000306 00000000

Original Orinoco:

00040000 04030000 00010101 00000000 12040601 00000000
00040000 04030000 00010201 00000000 22050403 00000000
00080000 04020000 00010300 00000000 11020102 00000000
00080000 04020000 00010400 00000000 21030504 00000000
04000000 04000000 00010500 00000000 00000306 00000000

Clover patching isn't disabled or anything as you can see
384809


And this is my graphics section of the plist

384810


Should I Try another framebuffer? Anyone knows how to solve the problem?
I'm attaching the IOReg output, screenshots, my card bios and my current config.plist.

Anyone tried the Guariba Framebuffer?
How about Dayman, Baladi or OPM?

Please let me know if anyone got success in this card using Mojave 10.14.3
Thanks in advance to everyone
 

Attachments

  • working display.png
    working display.png
    256.7 KB · Views: 528
  • 0.png
    0.png
    225 KB · Views: 481
  • 1.png
    1.png
    218.2 KB · Views: 491
  • 4.png
    4.png
    220.9 KB · Views: 432
  • 5.png
    5.png
    217.5 KB · Views: 523
  • 3.png
    3.png
    218.4 KB · Views: 446
  • 2.png
    2.png
    218.4 KB · Views: 582
  • config.plist
    7.9 KB · Views: 383
  • Ellesmere.rom.zip
    110 KB · Views: 215
All you need is Lilu+WhateverGreen kext. Remove all patches and injects for ATI.
 
I've tried that @Pavo, but that doesnt work. It leads me to a black screen after boot.
But also there's the possibility of me doing wrong things...
When using Lilu and Whatever Green, do I have to still use DeInit?
 
Nearly same problem here. I'm using a DATALAND X-Serial RX480 8G here which has a same port layout as yours, but I only have a HDMI monitor. I also tried to patch Orinoco myself and the monitor never works. Only black screen with monitor power on. Just like your said "freezing the system or making other monitors very very dimmer with only the cursor movable but system itself non responsible".
 
Now I've got some very strange results.
Tried to boot using only WEG and Lilu kexts and again, boot to black screen. This time no ATI injects at all
After a few reboots I've selected Load Video Bios and Inject ATI
Now monitors are loaded only if plugged and unplugged. DP1 is not working, monitors plugged are detected but remain black.

m attaching the Kexts folder and config.plist again.
I'm going to patch the Baladi framebuffer and see if any changes come up. What I suspect is that XFX cards like mine has a different layout with 6 ports but only 5 physical ports. However OSX detects the 6 ports strangely. Thats probably why if I left the DeInit option in clover it selects Baladi right away.
Or am I probably messing out wrongly with Lilu and WEG kexts.
 

Attachments

  • config.plist
    6.7 KB · Views: 315
  • kexts.zip
    1.4 MB · Views: 287
I think I've discovered WHY the displays dim itself when connected to some ports and others not and why I can only use two displays only.
When I connect a display to the DVI, HDMI or the DP next to the HDMI, IOReg shows me that display got canceled and other one connected to the same "port" as the one is connected. I took a picture with my phone of this:

384917


Now, when both displays are connected to de DPs to the right they both function properly and get fully detected (even with audio working)

384918


I might be missing something or got something that its wrong from the bios...
To me it seems that the ports that aren't working is being crosslinked by some info with other connectors that are working. I'm going to work more on this FB patch and see if I can get all ports to work.

If anyone here faced the same problem please join at this "FB exploration" thing

Here is the Original Guariba FB and my current patch

Original Guariba

00040000 04030000 00010101 00000000 12040601 00000000
00040000 04030000 00010201 00000000 22050403 00000000
00040000 04030000 00010301 00000000 11020102 00000000
00080000 04020000 00010400 00000000 21030504 00000000
04000000 04020000 00010500 00000000 10000306 00000000
00040000 00010000 00010601 00000000 20010205 00000000

Patched Guariba for the XFX RX 580 XXX 8GB

00040000 04030000 00010101 00000000 12040601 00000000
00040000 04030000 00010201 00000000 11020102 00000000
00040000 04030000 00010301 00000000 22050403 00000000
00080000 04030000 00010401 00000000 21030504 00000000
04000000 04020000 00010501 00000000 10000306 00000000
00040000 00010000 00010601 00000000 20010205 00000000
 
I heard of some weird problem will occur with XFX cards due to the tech you mentioned. If your card has Dual vBIOS, why not try flashing another vBIOS from another brand? See https://www.techpowerup.com/vgabios/
Flashing newer AMD cards' vBIOS isn't as risky as previous ones. Just make sure you have your origin one backup-ed. My DataLand (PowerColor) RX 488 work well with Sapphire RX588's vBIOS in Windows.
I guess my RX488 will work with DP monitors either. Without plug in HDMI, I can VNC to macOS and it works perfect. But plug in HDMI just cause the whole system to freeze.
 
Last edited:
@staritbusfans Because I'm avoiding every method that risks voiding any kind of warranty in my hardware.
Since WEG + Lilu doesn't work for me (which is the easiest method) I'm trying to patch the framebuffer...
If that is not possible, I'll keep using only two monitors and save to buy a new card.
With this done, my hack will be near perfect to me!
 
Physical ports vs logical ports matter. Because firmware can link 2 logical ports to the same physical port, meaning firmware can say DP physical port 1 and 2 are linked to DP logical port 0, which some manufactures actually do. With that being said the reason you are seeing more logical ports that you have physical ports in IOREG is because of the framebuffer you are choosing, which I suggest you do not select a certain framebuffer and let WEG do its magic. Now if WEG isn't working like it should I would suggest issuing a bug report on vit9696's github letting him know what kind of issues you are facing with that specific GPU. But its has been a known fact for years XFX GPUs has historically been bad for hacks. This is what I suggest..... Seeing that you do not have iGPU since you are using a Xeon CPU will make this alot easier. I would remove "ALL" injecting for GPU ie.... DeInit, ATI Inject, Framebuffer and any patches for AMD* and also any device renaming you have for GPU like PEGP to GFX0 crap. I would download the latest Clover from sourceforge and then download the latest Lilu + WhateverGreen from vit9696's github and disable CSM completely inside your BIOS. Connect only 1 monitor to make sure that everything is being seen correctly in IOREG and then connect a second monitor to see if works. Then reboot with those 2 monitors already connected and see if it works then. Troubleshooting a long tedious process, a couple of reboots isn't going to help you in figuring out what is actually wrong.
 
@Pavo A long and tedious process it is. in HS and the first Mojave (until 14.1 i think) everything was working perfectly. I remember however switching from Orinoco to Salado and then back to Orinoco. First two DP ports are working either with Guariba FB or Orinoco... Which is very very odd to me.
I've tried even with 4 monitors being plugged in and only DP1 and DP2 works...
Gonna give a second try for WEG and get back here if there is any progress.

One thing I've noticed was that Orinoco changed from 5 ports to 6 ports in Mojave 14.3, am I being nonsense or that just happened?
 
Status
Not open for further replies.
Back
Top