Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.
Status
The first post of this thread is a WikiPost and can be edited by anyone with the appropiate permissions. Your edits will be public.

h9826790

macrumors P6
Original poster
Apr 3, 2014
16,666
8,592
Hong Kong
[For existing OpenCore users, you can always download my latest OpenCore package at post #1314 for update]

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


Everything is covered in the OpenCore thread. The step by step tutorial to enable AMD hardware acceleration is now at here, but I strongly recommend you go through the OpenCore thread before you do anything.


The same method works in both Mojave and beyond. 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 (in 10.14.5). 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 and later, 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 in macOS up to Catalina.)

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.6. 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)

Update: HWAccel works quite well in all 10.14.6, 10.15.7, and 11.2.3 now.

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: According to this post, the answer is YES.

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)
10.15.3.png

AMD GPU.png

P.S. For those who want to add the prefix AMD in front of they graphic card's name, please join the OpenCore thread. We can rename the graphic card to whatever we want in OpenCore.

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. (Update: So far, it shows that VideoProc only knows if HWAccel is working (via VideoToolBox), but it can't tell which hardware is providing HWAccel in macOS. Therefore, it use a "one size fit all" solution. Due to most Mac out there use the iGPU Intel Quick Sync to provide HWAccel. VideoProc seems only will display Intel whenever HWAccel is in use, regardless if the computer is actually using AMD VCE / VCN, Intel Quick Sync, or even M1.)

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: Only via eGPU (Polaris or higher).

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

Q32: Why "About This Mac" shows a different clock speed after installing OpenCore?
A: The CPU still work at its native clock speed, nothing is really changed. The only thing changed is just the presentation. We inject the iMac Pro board ID via OpenCore to activate HWAccel in macOS. Therefore, macOS also use the iMac Pro's format to show the CPU clock speed (e.g. 3.46GHz will be rounded up to 3.5GHz). This is normal, 100% cosmetic, and purely 2 digit vs 3 digit presentation.
 
Last edited:
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
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
** 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:
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
 
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
 
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:
would mean that the RX580 does not work under 10.13.6
Some one should test it and confirm if hardware encode works for RX-580 faking iMac Pro.

VEGA is not a surprise, already works with iMac Pro and High Sierra.
 
  • Like
Reactions: Eschers
What app is that Hardware Info ?
So all Polaris and higher cards are the RX cards correct?

My VLC uses 400% CPU to play that. Horrible Indeed.
 
Last edited:
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.