MP 1,1-5,1 Activate AMD hardware acceleration

h9826790

macrumors G5
Original poster
Apr 3, 2014
14,239
6,842
Hong Kong
[For existing users, you can download the latest OpenCore 0.6.0 package at post #1314 for update]

Full HWAccel achieved now!
Screenshot 2020-02-06 at 3.22.25 AM.png


Everything are covered in the OpenCore threads. The step by step tutorial is at here, but I strongly recommend you go through the whole thread before you do anything.


The same method works in both Mojave and Catalina. HOWEVER, for dual processor cMP user, please stick with Mojave at this moment. (Update: please stick to Mojave for ALL who want HWAccel. CMMChris advised Apple removed HEVC HWAccel for all Polaris GPU in the latest Catalina beta. Which means you may not upgrade the OS to get any security fix, unless this is an error in beta. Stay with Mojave, get HWAccel, and keep your OS up to date seems will be a better choice at this moment)
Catalina VideoProc.png


Sidecar (and AirPlay Display) should also work, but I have no iPad to test it yet. The latest config.plist in post #594 and #1314 will now keep the cMP ident as 5,1. Therefore, will NOT activate Sidecar by default now.

------ The procedure below is depreciated, just keep in this post as a record (but I will still maintain the FAQ section to keep that up to date. Please read through the FAQ before you ask anything. Any question that already covered in FAQ won't be answered by me.). For those who don't need HEVC hardware encode, and prefer not to install OpenCore. You may still follow the procedure below to activate HWAccel ------

10.14.5 is now official. And I can confirm that AMD card users (Polaris or above) can enjoy H264 hardware encode / H264 hardware decode / and HEVC hardware decode.
Screenshot 2019-05-14 at 8.56.15 AM.png


The procedure is as follow: (please read through the entire Q&A section BEFORE you do anything. You should know how to recover, or may need to use alternate procedure, etc)

1) Keep SIP disabled

2) Download Lilu.kext

3) Download WhateverGreen.kext

4) open Lilu.kext (right click -> show package contents)

5) enter Contents

6) create folder "Plugins" (N.B. This folder is INSIDE Contents, please do NOT miss step 5)
Screenshot 2019-05-14 at 2.12.59 PM.png


7) Copy the WhateverGreen.kext into Plugins

8) Copy the whole modded Lilu kext to /Library⁩/Extensions/

9) Open terminal

10) Enter
Code:
sudo chmod -R 755 /Library/Extensions/Lilu.kext
11) Enter
Code:
sudo chown -R root:wheel /Library/Extensions/Lilu.kext
12) Enter
Code:
sudo touch /Library/Extensions
13) Enter
Code:
sudo kextcache -update-volume /
(you may get some strange return with this command, don't worry about it)

14) Enter
Code:
sudo nvram boot-args="shikigva=96 shiki-id=Mac-7BA5B2D9E42DDD94"
For Catalina, you may need to enter the no compat check boot argument as well, otherwise, you may stuck at the no boot situation until you fix the boot argument in recovery partition.

15) Reboot


FAQ, please read through this section BEFORE you ask. I won’t answer anything that already covered in this section.

Q1: Is this safe?
A: Tested since 10.14.5 beta 4, so far, no system damaged by this mod. (Update: OpenCore may write something into the cMP's firmware. So, if you want to stay safe, avoid OpenCore. And only use Lilu + WhareverGreen, or hex edit method)

Q2: Is there any down side?
A: Yes, for Lilu or hex edit method, iTunes, TV+, and Safari Netflix DRM streaming may not work, but fully download DRM movie should not be affected. And Netflix on Chromium base browsers (Chrome, Brave, Edge, etc) are OK.

DRM streaming can work flawlessly with the OpenCore method.

Q3: Any other known issue?
A: Photos app crash if HDMIAudio.kext is also installed. Besides, few more users reported system freeze. It seems only Polaris GPU is affected e.g. RX580. So far, all freeze only occur in Apple apps. e.g. FCPX, Photos, Compressor, etc. 3rd party apps such as PP, DV, VideoProc are not affected. However, Polaris GPU hwaccel seems perfectly stable in 10.14.6 beta by hex editing the AppleGVA file. Beside, Adobe Media Encoder seems will cause the video engine stall. Not system freeze / crash, but the video engine simply like stop working, perform extremely bad. Normal performance can only recover by reboot. (Update: 10.14.6 official release seems fixed most of these issue. At least, I have no way to reproduce any freeze with my RX580)

Q4: If my system crash after the mod, how to fix it?
A: For Lilu / OpenCore 0.5.5 method, NVRAM reset will remove the boot argument, and disable the kexts / OpenCore. So, will effective revert your system back to the original state. Once your system boot again, you can remove the kext / OpenCore.

For Hex edit method, I ran lots of tests, no way to crash the system. But if there is any instability, please restore the original file from your backup.

For OpenCore 0.5.6, you have to re-mount the EFI partition -> remove the BOOT and OC folder -> reset NVRAM

Q5: What's the benefit?
A: Able to play some very demanding HEVC video (e.g. this one)
https://4kmedia.org/sony-swordsmith-hdr-uhd-4k-demo/

This is how my cMP can play this video now. Smooth playback with very low CPU usage (please use a browser that support VP9 to watch all the following Youtube videos in 4k, otherwise, you may not able to read the details)

Able to edit H264 directly smoothly, no need to transcode to ProRes anymore, greatly reduce the storage speed and capacity requirement. Most likely can improve productivity as well

Able to edit HEVC directly smoothly, no need to transcode to ProRes anymore, greatly reduce the storage speed and capacity requirement. Most likely can improve productivity as well

Can greatly improve H264 export speed with low CPU usage (depends on your CPU / GPU spec)

Able to record the screen at 4k smoothly. As you can see from the above link. My cMP now can do those stuff and still record the screen smoothly at the same time.

Able to play VP9 video smoothly. My cMP now can play this 8K 24FPS youtube video with zero frame drop. (VP9 hardware decode is NOT supported at all in macOS)

Q6: Can this work in 10.14.4 or before?
A: One user reported that latest 10.13.6 with Vega also work with Lilu mehtod. But RX580 will cause GPURestart fault, which freeze the display and make the OS unusable. (update: users reported hardware decode works, but H264 hardware encode will cause the crash)

Q7: Can this work in 10.15?
A: Not as good as 10.14. Only Lilu method, or OpenCore method work. Also, in 10.15.2, Polaris (e.g. RX580) HEVC HWAccel support is removed by Apple (WhateverGreen should fix this Polaris supportability issue. But I haven’t test it personally)

Q8: Can this work for Nvidia GPU?
A: NO

Q9: Can this work for flashed 7950 etc?
A: I don't know. Please test it for me. (Update: The answer is NO, thanks bazza5938 to perform the test)

Q10: Which software can benefit from this mod?
A: This will provide hardware acceleration at system level. So far, all my tested software works (e.g. FCPX, iMovie, Handbrake, Compressor, VideoProc, DVDFab, DV, AE, PP, FFMpeg, QuickTime Player, VLC, IINA......)

Q11: If I do a NVRAM reset due to other reason, how to regain these functions?
A: For Lilu method, repeat step 14 and reboot.

Hex edit method / OpenCore 0.5.6 (post #1314) is not affected.

For OpenCore 0.5.5 (in post #594), depends on your setup, you may need to re-bless to boot via OpenCore again.

Q12: What's the recommended GPU?
A: RX560, RX580, Vega 56, Vega 64, Vega FE. As long as that card can work on cMP, brand / model doesn’t really matter (Update: for this particular purpose, Vega is definitely better than Polaris card. There is zero crash / freeze report from Vega users yet).

Q13: Why not recommend the Radeon VII or RX570, etc.
A: AFAIK, all Polaris, Vega, Navi GPU works, I just not sure how mature the overall support is. (Update: I upgraded my GPU to Radeon VII, perfectly stable, and hardware encoding is about 100% faster than RX580. Navi's HWAccel also confirmed can be activated.)

Q14: Is this QuickSync?
A: NO, QuickSync is the hardware acceleration for Intel iGPU, not the generic term for GPU video hardware acceleration. AMD GPU use UVD (Unified Video Decoder) for decoding, and VCE (Video Coding Engine) for encoding. All this will be controlled by VideoToolBox automatically in macOS, virtually transparent to users. It's the same concept as QuickSync, but not QuickSync.

Q15: I can see that my GPU is working in Compressor before this mod (on a cMP). Is that mean I already have hardware acceleration?
A: NO, we are talking about H264 / HEVC hardware acceleration here. Not the general compute hardware acceleration. They are completely different.

Q16: How's the quality of the hardware encoded video?
A: Not as good as software encoder in general. But if at high bitrate, the difference isn't that noticeable.

Q17: When will we able to get HEVC encoding as well?
A: I don't know. But you can always boot to Windows and use HEVC hardware encode. (Update: FULL HWAccel including HEVC encoding can also be achieved by using OpenCore. Not sure how safe, but it works stably on my cMP)

Q18: How much improvement can I expect?
A: Well, depends on usage. But a quick iMovie 4K H264 export test shows a Vega 64 can reduce the export time from 6:19 to 1:25, which means reduced the export time by ~77% (on a dual X5680 cMP).

Q19: Why VideoProc shows no HEVC decode after the mod?
A: I don't know why, but this is normal in this case. My recommendation is to download demo HEVC video from the above link, and play it via QuickTime (or simply via Finder preview). As long as the CPU usage only stay around 20% (but not 800%), that means HEVC decoding is working properly.

For those who use OpenCore method, you should able to see HEVC HWAccel avail. If not there, please click the little reload icon.

Q20: Should I install the newer version of Lilu and WhateverGreen?
A: NO. Despite the newer version can work, but provide no extra function in this case, and I have no idea if the newer one has poorer stability. If I found a better way / kext to use. I will update the post accordingly. (Update: For Catalina, please install Lilu 1.4.0 and WhateverGreen 1.3.5. And so far, all newer Lilu and WEG only provide better result due to bug fix. Users should be OK to install the latest version)

Q21: I experienced system freeze, Console log shows "GPU Restart" event, what should I do?
A: PRAM reset will bring your system back to normal. If you are with Polaris GPU (RX560, RX570, RX580, etc), it seems some people are affected by this bug. What I found is an alternate method by directly hex edit the AppleGVA file seems more stable for these GPUs. Initial test shows very safe to do so, even I completely destroy the AppleGVA file, the OS can still boot to desktop. If you prefer to go this route, please make sure you know how to restore the file (or even completely recover from an unbootable OS). The info is at post #205. (update: 10.14.6 shows extremely good stability, highly recommended for RX580 users)

Q22: How do I know if hardware acceleration is really working?
A: My suggestion is by using Terminal. Detail info in post #273. You may also use OpenGL Driver Monitor to observe the UVD / VCE activities (link).

Q23: Can I use this mod with MVC flashed RX580?
A: I can't test it, and no report yet, but should work. Since this mod won't touch the ROM, safe to try anyway.

Q24: Is it possible to turn OFF hwaccel without reboot. So that I can enjoy DRM streaming anytime?
A: Only the alternate method allow ON/OFF on the fly. If you don't want to use terminal / Finder to do that every time, you can make two simple apps to do that, procedures at here. (Update: My OpenCore package should allow you to play DRM streaming video by default)

Q25: Does background rendering still works in FCPX?
A: Background rendering still works for both methods. This is completely independent to hwaccel. I turned that off in the above demo is just to illustrate the real time timeline editing performance. Not because of it can't work.

Q26: I tried the hex edit method many many times, it doesn't work, but I am sure I did everything right. What should I do?
A: May be you should try open a new user profile, and see if it help (reference link)

Q27: Why the "Graphics" in VideoProc HWAccel page shows N/A?
A: No idea, but it's just a cosmetic error in this case. (Update: It seems VideoProc looking for the key word "AMD". e.g. If the card ident as AMD Radeon VII, VideoProc can show it properly. But if the card ident as Radeon VII, then VideoProc can't show its name)

Q28: Why VideoProc shows that I am use "Intel "HWAccel when converting videos?
A: Also no idea, but again, it's just a cosmetic error in this case.

Q29: Why VideoProc shows nothing activated but everything seems working as expected?
A: As long as you can see this tick, which mean HWAccel is activated. From my observation, this tick always change automatically.
Screenshot 2020-01-31 at 4.39.40 PM.png


For the Hardware Info Detected page, please click the little reload icon in order to let VideoProc to show you the latest status.
Screenshot 2020-01-31 at 4.39.43 PM.png

Q30: will this work on 6,1?
A: No. None of the 6,1 GPU belongs to Polaris or higher.

Q31: will this work on 3,1?
A Yes (link)
 
Last edited:

octoviaa

macrumors regular
Oct 19, 2013
160
77
Confirm the fix work with RX570 and 10.14.5 final.
I do need to run 'Kext Util' though (just run and let it do its own stuff e.g. fixing permission, etc).
After 'Kext Util' finish doing its own stuff, then I reboot and h.264 acceleration is enabled.
 
  • Like
Reactions: h9826790

bazza5938

macrumors newbie
Nov 25, 2018
19
10
United Kingdom
Thanks for posting this here, I must try it with my 7950 just to see if I can get any hardware encode/decode out of it before updating to 10.14.5 final, since I know the rx580 works beautifully
 
  • Like
Reactions: h9826790

csd

macrumors newbie
Sep 3, 2017
16
13
Ireland
** I fixed this by clearing NVRAM and starting from scratch again **
** Leaving this below in case anyone has similar issues with boot-args **

Folks,

I've tried this but seem to be failing at the boot-args stage. I can set the boot-args fine (nvram -p shows they're there), but then when I reboot the entry has disappeared completely and I've no acceleration. SIP is disabled.

$ sudo nvram boot-args="shikigva=96 shiki-id=Mac-7BA5B2D9E42DDD94"
$ nvram -p | grep args
boot-args shikigva=96 shiki-id=Mac-7BA5B2D9E42DDD94

Then when I reboot:

$ nvram -p | grep args
$

Here's the full list of my currently set nvram settings:

$ nvram -p
boot-gamma -L%00%00j%05%00%0022YM%1a%00%00%00%00%00%00%00%00%00%00%00%00%00
bluetoothInternalControllerInfo %15%82%ac%05%00%00%11Z%04%0c%ce%ed%d6%ea
bluetoothActiveControllerInfo %15%82%ac%05%00%00%00%00%11Z%04%0c%ce%ed%d6%ea
SystemAudioVolumeDB %fa
SystemAudioVolume :
csr-active-config w%00%00%00
EFIBluetoothDelay %b8%0b
efi-backup-boot-device-data-data %02%01%0c%00%d0A%03%0a%00%00%00%00%01%01%06%00%02%1f%03%12%0a%00%02%00%00%00%00%00%04%01*%00%02%00%00%00(@%06%00%00%00%00%00%e0%1f2:%00%00%00%00%12|P%83%b0%9d/F%9ck6?%ce;fS%02%02%04%03$%00%f7%fct%be|%0b%f3I%91G%01%f4%04.hB%0f%ea%94%0bT%93%c8J%8c%a0w%e9%b1%17%bd%8e%04%04%9a%00\%00E%005%008%00B%005%00A%00D%009%00-%00F%009%007%00F%00-%003%00E%003%003%00-%00A%00B%008%008%00-%00D%00B%00F%001%001%00D%004%00B%002%009%00C%00E%00\%00S%00y%00s%00t%00e%00m%00\%00L%00i%00b%00r%00a%00r%00y%00\%00C%00o%00r%00e%00S%00e%00r%00v%00i%00c%00e%00s%00\%00b%00o%00o%00t%00.%00e%00f%00i%00%00%00%7f%ff%04%00

SIP showing disabled:
$ csrutil status
System Integrity Protection status: disabled.

System Information is showing LiLu and WhateverGreen are loaded, but I guess they're not working because the correct parameters haven't been passed to them at boot.

Any ideas?

Thanks,

Colin
 
Last edited:
  • Like
Reactions: h9826790

csd

macrumors newbie
Sep 3, 2017
16
13
Ireland
Just a follow-up after some testing.

  1. Playback of HEVC 4K60 went from stuttering to perfectly smooth. Even the 120 Mbps HEVC Jellyfish file plays perfectly.
  2. There's now a 50% improvement in Handbrake transcoding when I select the VideoToolbox H.264 encoder instead the x264 encoder (25 fps vs 16 fps in converting the 120 Mbps jellyfish 4K file to a 6 Mbps 1080p file). VideoToolbox doesn't seem to be using HyperThreading, only 6 threads show busy in Activity Monitor; x264 uses all 12 threads on my system. But even with no HT, VideoToolbox is still 50% faster with the native GPU acceleration!
/csd
 

thomasthegps

macrumors regular
Sep 23, 2015
218
144
France
I wonder how editing performance in fcx with this patch compares to newer macs.
[doublepost=1557934191][/doublepost]
sorry for my question that can be stupid ... but ...


why Apple doesn't turn on these "features" by default ?


everytime is the same story: disable some feature, overwrite kext, reboot ... and so on ... why ???
The answer is pretty simple: money
 

h9826790

macrumors G5
Original poster
Apr 3, 2014
14,239
6,842
Hong Kong
Just a follow-up after some testing.

  1. Playback of HEVC 4K60 went from stuttering to perfectly smooth. Even the 120 Mbps HEVC Jellyfish file plays perfectly.
  2. There's now a 50% improvement in Handbrake transcoding when I select the VideoToolbox H.264 encoder instead the x264 encoder (25 fps vs 16 fps in converting the 120 Mbps jellyfish 4K file to a 6 Mbps 1080p file). VideoToolbox doesn't seem to be using HyperThreading, only 6 threads show busy in Activity Monitor; x264 uses all 12 threads on my system. But even with no HT, VideoToolbox is still 50% faster with the native GPU acceleration!
/csd
2. I am quite sure handbrake only use the GPU to encode, but not decode.

e.g. When I ask FFMpeg to use GPU for BOTH decoding and encoding. The CPU loading is very very low.
GPU HEVC to H264.png


However, if I only ask FFMpeg to use GPU to encode, but leave the decoding part for CPU. Then the CPU will hit 1000% loading (similar to Handbrake).
CPU HEVC to H264.png


And as you can see. When we transcoding HEVC to H264. If the source video is too demanding for the CPU. The GPU transcoding performance will be holding back by the CPU. In my above test, using pure GPU transcoding is about 10% faster. So, your computer will end up use more power, but work slower.

However, if the CPU is fast enough to handle the source video, then using CPU to decode, and use GPU to encode usually will have better result.

Anyway, using more CPU not necessary means better now.
 
Last edited:
  • Like
Reactions: zoltm

VaZ

macrumors regular
Aug 31, 2012
208
66
What app is that Hardware Info ?
So all Polaris and higher cards are the RX cards correct?

WOW my VLC uses 400% CPU to play that. Horrible Indeed. If so time to replace my Tahiti 7970
 
Last edited:
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.