Contribute
Register

Radeon RX 4XX/5XX standalone system, AMDRadeonX4250.kext (GVA support H264) does not support HEVC HW

Status
Not open for further replies.
Not correct. When I export with FCPX both gpus are working, did test with only IGPU enabled and IGPU + DGPU on exporting, the fastest was with both enabled.
Both GPU's "working" does not mean dGPU is encoding...it will decode but not encode WITHOUT the dummy kext (unless you are using 10.14.5 BETA).
You can prove it to yourself by examining the IOREG WITH and WITHOUT the dummy kext.
See this.
 
I did a lot of testing on this and IGPU disabled always is faster than IGPU enabled, given that DGPU Encoding works properly and correct AppleGVA configuration is set (iMacPro1,1).

Example:

Vega 64 Standalone
Source 4k60 (1:47)
H.264 to H.265: 1:30 Minutes
H.265 to H.264: 1:56 Minutes

Vega 64 + IGPU (Quick Sync)
Source 4k60 (1:47)
H.264 to H.265: 3:05 Minutes
H.265 to H.264: 2:25 Minutes

What does my registration date have to do with the matter?

What app did you use for test?
The second test seems to be only on SW encoding or only on IGPU.
Next time use pictures so we can see what you did there.
Offtopic: Because you’re talking with someone with over 8 years experience.
 
Video Proc. Without Auto Copy and keep original settings from source file.
Second test used IGPU only because that is what happens if it is activated... how often do I have to repeat that?
PS: 8 years of experience doesn't say anything. ;) You obviously lack some basic knowledge about how macOS works with regards to video encoding and decoding.
 
I mentioned this a bit ago, but after some more testing I'm pretty sure of it. They made some changes in 10.14.4 to AppleGVA that allow you to force which encoder to use no matter what your board-id is.

in terminal:

defaults write com.apple.AppleGVA forceATI -bool YES
or
defaults write com.apple.AppleGVA forceIntel -bool YES

to go back to default:
defaults delete com.apple.AppleGVA

I write an app that uses the hardware encoder and when I updated to 10.14.4 I noticed it suddenly started using the AMD encoder because I'd long ago set forceATI and forgotten about it. I've verified which encoder is in use via AppleGVA debug output.

This should make it somewhat easier to compare encoders since you don't have to reboot to do it.

Note this also changes the DECODER.
 
Yup, but this could still limit performance a bit depending on which processor / IGPU is used.
By default macOS uses IGPU for encoding, DGPU for decoding.
When forcing DGPU for Encoding, it will start to use the IGPU for decoding. At least that was what I observed when I checked on this last time.

In any case, for Vega and (starting with 10.14.5) RX4xx / Rx5xx users, it always is best to go with DGPU only (IGPU disabled) and use the iMacPro1,1 SMBIOS. This is not only the best choice in terms of performance but also results in fully working DRM.
 
I mentioned this a bit ago, but after some more testing I'm pretty sure of it. They made some changes in 10.14.4 to AppleGVA that allow you to force which encoder to use no matter what your board-id is.

in terminal:

defaults write com.apple.AppleGVA forceATI -bool YES
or
defaults write com.apple.AppleGVA forceIntel -bool YES

to go back to default:
defaults delete com.apple.AppleGVA

I write an app that uses the hardware encoder and when I updated to 10.14.4 I noticed it suddenly started using the AMD encoder because I'd long ago set forceATI and forgotten about it. I've verified which encoder is in use via AppleGVA debug output.

This should make it somewhat easier to compare encoders since you don't have to reboot to do it.

Note this also changes the DECODER.

10.14.4 or 10.14.5 beta 2?
 
Last edited:
I think the situation of which encoder and decoder it uses is more complicated than it seems at first glance.

I'm using 10.14.4 with an iMac 14,2 board id. WEG with no extra boot arguments. Vega 56 and a connectorless intel iGPU enabled (i7-8700k)

First thing: just because VDADecoderChecker says 'successfully connected to Intel plugin, offline GenXX' does NOT mean that's the hardware decoder in use. That message seems to be part of some device enumeration AppleGVA does and doesn't indicate the final device that is chosen.

The only reliable way to see what hardware decoder/encoder it picked is to set these:
defaults write com.apple.AppleGVA gvaDebug -bool YES
defaults write com.apple.AppleGVA enableSyslog -bool YES

Then open console.app and search for 'GVA'. You should see GVA debug messages as you launch apps that use it. You will see one line in particular 'GVA: plugin is ATI' or 'GVA: plugin is Intel'. THAT'S the one it is using.

With no force set, VDADecoderChecker consistently uses the intel plugin for me. Obviously this depends on your SMBIOS settings/and or WEG boot arguments. However, if i set forceATI, it absolutely reports the ATI plugin is used.

My encoder app also consistently picks the intel plugin, unless forceATI is set, and then it picks the 'ATI' one.

However, when using Quicktime player, things get more interesting. I think Apple may have changed some things recently behind the scenes, but again I have no way to reliably test older Mojave versions.

If i load a 4K HEVC movie with Quicktime, it uses the Intel plugin by default. Setting forceATI works, and it picks the ATI plugin.

However, if I open a normal 1080 h264 movie with Quicktime...I get no GVA debug output at all. As if Quicktime isn't using the GVA framework to decode h264. I don't know if that means it is selecting the software decoder for some reason, or if they've written some custom metal based decoder outside of GVA framework. I need to fully disable SIP to attach to Quicktime Player to trace the VideoToolbox calls to see what is going on.

Using a recent version of VLC behaves the same as VDADecoderChecker for both h264 and HEVC files.

The quicktime h264 thing is weird, and requires more investigation.

iMac14,2 has forceOfflineRenderer set to true, so it always defaults to iGPU for both encoder/decoder. When I get a chance to reboot I'll disable forceOfflineRenderer and see what's changed.

One more thing to note: the technique of using Activity Monitor to see what dylibs have been loaded to determine which encoder/decoder is being used is also unreliable. The device enumeration can cause both of them to be loaded. Just because you see an AMD bundle loaded does not mean it is actually being used.
 
In 10.14.5 beta 2 Activity Monitor I didnt seen AMDMTLBronzeDriver load.
I think is metal support on RX 580, it was clearly there in 10.4.4.
 
Very interesting article about encoding/decoding on mac, it seem Apple’s T2 chip does make the difference ->Link
 
Testing the Radeon RX 580 4GB hardware encoding/decoding in Mac OS 10.14.5 beta 2.
The tests were done in FCPX version 10.4.6, using the 4k video file TCL Supercars 4k Demo.mp4 HEVC size 1.33 GB, also used VideoProc, HWMonitorSMC2 and Intel Power Gadget. I renamed my DGPU as Radeon Pro 580.
The picture 1 shows which GPU is used and loading.
The pictures 2 & 3 shows the time need it for exporting.
Best exporting time is market in red.


Test 1: DGPU RX 580 enabled, IGPU disabled, SMBIOS iMacPro 1,1.
HEVC -> H264 : 4:01 pictures 1&2
H264 -> HEVC : 3:09 picture 3

1.png2.png
3.png


Test 2 : IGPU Intel UHD 630 enabled, DGPU disabled (unplugged), SMBIOS Mac mini 8,1.
HEVC -> H264 : 3:53 pictures 1&2
H264 -> HEVC : 7:04 picture 3

1.png2.png3.png


Test 3 : DGPU RX 580 enabled, IGPU Intel UHD 630 enabled, DP cable in DGPU, SMBIOS iMac 19,2.
HEVC -> H264 : 2:28 pictures 1&2
H264 -> HEVC : 6:07 picture 3

1.png2.png3.png
 
Status
Not open for further replies.
Back
Top