Contribute
Register

macOS 12.3 Update Causes Problems for 5700/6800/6900 Graphics Cards

Fantastic post, thanks! One quick question: are these config.plist edits equally valid for both the XT and non-XT versions of their respective cards?
Do you know what the ATY,Name line would be for the Apple MPX Radeon Pro Vega II?
 
... For those who are curious about the file that is linked, it is a set of OpenCore config.plist files that have the framebuffer injections for different Radeons that may have experienced graphics slowdowns.

Just for convenience, I extracted the relevant DeviceProperties sections from each plist file and will put them here....
Thanks for your post, very useful.
On AMDRadeonX6000Framebuffer.kext (Info.plist) the part referred to the AMDRadeonNavi23Controller (6600) carries "ATY, Henbury" and the part referred to the AMDRadeonNavi21Controller (6800 and 6900) carries Carswell, Belknap and Deepbay.
This may be the reason that different framebuffers work well on some models.
 
worked for me ! got a nice bump on my 5700XT, here's my geekbench 5 metal scores
Before 12.3 - 75687
12.3 - 38314
12.3 patched - 82876 :clap:

Two issues I noticed despite the patch

1 if the resolution of screen is changed, it goes black. I do this often when I switch from full screen mode to pBp ( picture by picture )

2 if my hack has slept for a while, upon awaking, screen goes black again. No response

Anyone else has had these issues despite the patch ? Any fixes ?
 
Well, I fell down the rabbit hole with this benchmark stuff and trying to tweak it to get back to my pre 12.3 performance, even though it operationally doesn't really make much difference to me. I guess that's the fun of Hackintoshing!

I started with trying to see if injecting the soft PowerPlay Tables was actually having an impact on performance. Then, following up on the post of the Site That Shall Not Be Named by the Admin Who Shall Not Be Named who posted a snippet of an SSDT, and as far as I could interpret, said that the SSDT was necessary to correct the framebuffer injection. Then, @StefanAM posted his SSDT that he is using to restore performance, which had the code correctly placed.

So I modified his SSDT with the Belknap framebuffer and the ACPI path to my card, then tested it, with and without the sPPT.

The bottom line is that the framebuffer injection alone pretty much restores the performance. Adding either the sPPT and/or the SSDT looks like it gives just a marginal gain, but having both at least brings it closer to pre 12.3 performance, particularly of the Unigine Heaven benchmarking program, which measures OpenCL performance.

I don't think the SSDT or sPPT is really worth the extra boost, unless you want to spend a little time making these files. I think the framebuffer injection should be adequate and hopefully Apple will address this in the future.

For testing, I took 10 runs of GB Metal and 10 runs of GB OpenCL. I am showing the average of these data points along with the standard error of the mean to illustrate the variation. I think the numbers are sufficiently close such that I don't think there is a significant difference. I just did a single run of the Unigine Heaven benchmark for each condition. The program runs for about 6 min, and I just don't have the time to do multiple runs of that.

I am attaching my SSDT. This is for use with similar setups to mine, with the ACPI path as _SB_.PCI0.PEG0.PEGP

I am also using the spoof for my 6900-XTXH card to assign it a 6900XT profile. If you want to use this SSDT in a similar set up, I load the SSDT after the SSDT-BRG0.aml file in OpenCore.

OK -- I've spent long enough on this! And I don't really use my Mac side for gaming, so trying to squeeze out this extra performance is just academic for me! :D


Framebuff
+​
+​
+​
+​
SSDT
+​
-​
+​
-​
sPPT
+​
+​
-​
-​
Average
SEM
Average
SEM
Average
SEM
Average
SEM
GB Metal
187636​
1373​
186550​
1571​
185803​
2064​
184598​
2931​
GB OpenCL
133381​
1084​
130037​
916​
132285​
1210​
131442​
927​
Unigine FPS
161.3​
157.1​
156.1​
156​
Unigine Score
4064​
3958​
3932​
3930​
Min FPS
14​
13.9​
13.7​
13.6​
Max FPS
425​
417.6​
422.3​
405.3​
 

Attachments

  • SSDT-NAVI-6900XTXH.aml
    607 bytes · Views: 104
Last edited:
Hi, ever since I upgraded to 12.3, I'm having issues with my 6900XT and don't know how to use OpenCore very well. Could someone help me with fixing my issue if I were to provide my EFI file? Thanks.
 
Well, I fell down the rabbit hole with this benchmark stuff and trying to tweak it to get back to my pre 12.3 performance, even though it operationally doesn't really make much difference to me. I guess that's the fun of Hackintoshing!

I started with trying to see if injecting the soft PowerPlay Tables was actually having an impact on performance. Then, following up on the post of the Site That Shall Not Be Named by the Admin Who Shall Not Be Named who posted a snippet of an SSDT, and as far as I could interpret, said that the SSDT was necessary to correct the framebuffer injection. Then, @StefanAM posted his SSDT that he is using to restore performance, which had the code correctly placed.

So I modified his SSDT with the Belknap framebuffer and the ACPI path to my card, then tested it, with and without the sPPT.

The bottom line is that the framebuffer injection alone pretty much restores the performance. Adding either the sPPT and/or the SSDT looks like it gives just a marginal gain, but having both at least brings it closer to pre 12.3 performance, particularly of the Unigine Heaven benchmarking program, which measures OpenCL performance.

I don't think the SSDT or sPPT is really worth the extra boost, unless you want to spend a little time making these files. I think the framebuffer injection should be adequate and hopefully Apple will address this in the future.

For testing, I took 10 runs of GB Metal and 10 runs of GB OpenCL. I am showing the average of these data points along with the standard error of the mean to illustrate the variation. I think the numbers are sufficiently close such that I don't think there is a significant difference. I just did a single run of the Unigine Heaven benchmark for each condition. The program runs for about 6 min, and I just don't have the time to do multiple runs of that.

I am attaching my SSDT. This is for use with similar setups to mine, with the ACPI path as _SB_.PCI0.PEG0.PEGP

I am also using the spoof for my 6900-XTXH card to assign it a 6900XT profile. If you want to use this SSDT in a similar set up, I load the SSDT after the SSDT-BRG0.aml file in OpenCore.

OK -- I've spent long enough on this! And I don't really use my Mac side for gaming, so trying to squeeze out this extra performance is just academic for me! :D


Framebuff
+​
+​
+​
+​
SSDT
+​
-​
+​
-​
sPPT
+​
+​
-​
-​
Average
SEM
Average
SEM
Average
SEM
Average
SEM
GB Metal
187636​
1373​
186550​
1571​
185803​
2064​
184598​
2931​
GB OpenCL
133381​
1084​
130037​
916​
132285​
1210​
131442​
927​
Unigine FPS
161.3​
157.1​
156.1​
156​
Unigine Score
4064​
3958​
3932​
3930​
Min FPS
14​
13.9​
13.7​
13.6​
Max FPS
425​
417.6​
422.3​
405.3​
My own testing found that this is basically best results to get max performance and stability.

Screen Shot 2022-03-20 at 6.53.18 PM.PNG

The injectors are a must. defining slot is optional but nice to do cosmetically.

Defining Dual Link also seems to matter a bit, and it's not a surprise, any AAPL injection is good because those won't exist on a card without a mac EFI, so making them present makes system profiler happy and also even system happier in terms of dual link (that seems to be a minor performance increase on top of correct frame buffers)

Device ID only if it's an XTXH card you need to spoof. do NOT add this if you do not need to change it

Lastly, device_type seems important to resolve some wake from sleep issues in my testing. The users who are getting black screen on wake might need to add this to solve that problem because without that also being set to correct ATY type, might be why wake is screwed up.

I also agree about not using sPPT. This also seems to cause some sleep issues, for me having these present caused random system wakes from the gpu. no real surprise that messing with card power management....messes with power management. :D

Oh and these were my 12.3 results using the exact above setup of values
I'd like to also add that I only have coffee lake cpu. no resizable bus support and PCI express 3.0.
 
Last edited:
Hi, ever since I upgraded to 12.3, I'm having issues with my 6900XT and don't know how to use OpenCore very well. Could someone help me with fixing my issue if I were to provide my EFI file? Thanks.

Yes, please upload your EFI, but make sure to scrub your serial number from your config.plist before uploading.
 
Followup to previous post regarding test of AMD Radeon Pro W5700, 12.3

This is for the workstation version of the 5700 GPU, not the more common gaming version.

I got side-tracked because my Asus z590 10th-gen 12.3 system was freezing during last stage of 12.3 update was result of i225-V ethernet (dual), and thereafter when LAN connection comes up:
  • Unplug LAN cable to keep system alive for troubleshooting.
  • Changing dk.e1000=0 boot arg to e1000=0 DOES NOT HELP and causes AMD graphics to fail to start, including no remote desktop. So no help there.
  • By trial and error of device-id injection for LAN, I found that F2158680 enables i225-V on this Asus z590 and also fixes a glitch with communication stalling, so connectivity is better than under 12.2.
  • DO NOT USE dk.e1000=0 boot arg
    DO NOT USE FakePCIID.kext, FakePCIID_Intel_I225-V.kext
    Use hackintool to look up the device path for your i225-V and DeviceProperties to inject the device-id.
  • According to other posts, possible device-id options are F2150000, F3150000, F3158680.
Once the LAN was resolved, I tested W5700:
  • Geekbench 5 Metal reports 1/2 normal performance (35000) as reported by many.
  • By looking up the path for the device path (hackintool again) and injecting the Navi 10 "Adder" config provided in a previous post by @0xCUBE. Now, metal results are back to normal (70000).
  • I've seen similar simpler config posted here including for all the AMD GPU variants. But 0XCUBE's config works for me and I don't want to pursue it further for now.
All else appears OK, so 12.3 is up.

Other notes:
  • When the LAN freeze occurs, a HW reset is needed, which causes otherwise working 12.2 NVMe install to be mounted uncleanly, so when booting back to 12.2 drive, there's a delay while the drive is checked (it seems that Apple logo progress bar appears during verbose boot when fsck is working).
  • Boot stalls with Trim are still a problem for Samsung 980 Pro under 12.3, latest Samsung firmware.
  • I twice saw where the boot stall did not occur on the 980 as I played with boot args. This felt like a clue of some kind, but can't pursue it.
  • Sometimes a kernel panic will occur when booting back to working 12.2 drive, after a freeze or black screen, but this happens only once and goes away after crash reboot. It seems like something going on with NVRAM.
  • I got confused during my work and edited the wrong EFI which caused me grief — pls work carefully.
As always thank you to all the contributors. Good stuff.
 
By trial and error of device-id injection for LAN, I found that F2158680 enables i225-V on this Asus z590 and also fixes a glitch with communication stalling, so connectivity is better than under 12.2.
[…]
According to other posts, possible device-id options are F2150000, F3150000, F3158680.
Of course 0x8086 is Intel's vendor-id, so if setting both device and vendor there are only two values for revisions 0x15F2 and 0x15F3 of the i225: F2158680 and F3158680 (byte reversed).
 
My own testing found that this is basically best results to get max performance and stability.

View attachment 544530
The injectors are a must. defining slot is optional but nice to do cosmetically.

Defining Dual Link also seems to matter a bit, and it's not a surprise, any AAPL injection is good because those won't exist on a card without a mac EFI, so making them present makes system profiler happy and also even system happier in terms of dual link (that seems to be a minor performance increase on top of correct frame buffers)

Device ID only if it's an XTXH card you need to spoof. do NOT add this if you do not need to change it

Lastly, device_type seems important to resolve some wake from sleep issues in my testing. The users who are getting black screen on wake might need to add this to solve that problem because without that also being set to correct ATY type, might be why wake is screwed up.

I also agree about not using sPPT. This also seems to cause some sleep issues, for me having these present caused random system wakes from the gpu. no real surprise that messing with card power management....messes with power management. :D

Oh and these were my 12.3 results using the exact above setup of values
I'd like to also add that I only have coffee lake cpu. no resizable bus support and PCI express 3.0.
Really cool job mate, much appreciated.

To use this method with 6800XT is sufficient to go: device_type = ATY,BelknapParent ? Is the DualLink String value the same?

Thanks for your help.
 
Back
Top