Contribute
Register

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

Joined
Nov 2, 2018
Messages
183
Motherboard
HP 8300 - 3.08
CPU
i5-3470, i5-3570, i5-3570K
Graphics
RX 560, RX 570, GT730
Mac
Mac mini
Classic Mac
Power Mac
Yes, I did I have updated both lilu and weg.
I have Vega 64 and I think the AMD acceleration issue with Catalina was with only 4**/5** cards but I could be wrong.

I have tested it on 2 PC, one has 5700 XT and other Vega 64, both machines lose HEVC support when iGPU is disabled. I tried both iMacPro and MacPro7,1 SMBIOS.
Seems pretty odd as in Mojave iGPU's status was irrelevant with iMacPro smbios.

I have attached my CLOVER folder for you or anyone else to have a look.
Could you provide your IORegistryExplorer output, and in particular,
tell us what Radeon Framebuffers are being selected? There are injectors
to enable HEVC for Baffin and Ellesmere, but I'm not sure what your cards
default to.
 
Joined
Mar 16, 2015
Messages
213
Motherboard
HP 6300 SFF-V3.08
CPU
i5-3570
Graphics
GT 640
Mac
Mac mini, Mac Pro
Classic Mac
Power Mac, Quadra, SE/30
Hardware support for HEVC disables when I disable iGPU with 10.15.3 - iMacPro smbios.

Back when I was using Mojave I had switched to iMacPro smbios and at that point both HEVC and H.264 was being handled by AMD, there was no difference whether iGPU was on or off in BIOS. But I kept it ON for windows.

Now I am using 10.15.3 and I recently switched off iGPU in bios and today I realised that I no longer have support for HEVC. playing or outputting HEVC in FCPX shoots up CPU usage. I am still on iMacPro smbios. No changes with config at all, just disabled iGPU in bios.
Switching on iGPU brings back support for HEVC but it doesn't use iGPU at all, render happens on AMD only but it seems that it just wants iGPU to be enabled in bios even though it doesn't even touch it while rendering.
When I was testing the operation with "SMBIOS = MacPro6.1", I was wondering why the HEVC file that had been playing was not playable.
This is probably due to a change in the on / off setting of the iGPU.

After reading the @DiscoDancer post, I tried to see if the result of VTCopyVideoEncoderList changes depending on whether iGPU is enabled or disabled during installation.
The result is that the result of VTCopyVideoEncoderList changes, but I can not decipher the changed contents.

A simple Xoce program will be posted, so if you are interested in the content, try it.
Dump VTCopyVideoEncoderList information to ~ / VTCopyVideoEncoderList.txt.

Code:
#import <Foundation/Foundation.h>
#import <VideoToolbox/VTVideoEncoderList.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool
    {
        NSMutableString *record = [NSMutableString stringWithCapacity:0];
        [record appendString:@"Dump:VTCopyVideoEncoderList\n"];

        CFArrayRef encoder_list;
        VTCopyVideoEncoderList(NULL, &encoder_list);
        
        NSArray *array = (__bridge NSArray*)encoder_list;
        
        int index = 1;
        for( id list in array )
        {
            NSArray *keys = [list allKeys];
            [record appendFormat:@"index[%02d] \n{", index];
            for( id key in keys)
            {
                if( [key compare:@"CodecType"] != NSOrderedSame )
                    [record appendFormat:@"\n%@:\"%@\"",key, [list objectForKey:key]];
                else
                    [record appendFormat:@"\n%@:\"%@\"(0x%08X)",
                       key,
                       [list objectForKey:key],
                       (int)[[list objectForKey:key] integerValue]
                      ];

//                NSLog(@"index[%2d] key[%@] data[%@]", index, key, [list objectForKey:key]);
            }
            [record appendString:@"\n},\n"];
            index++;
        }
        CFRelease(encoder_list);
        
        NSString *file = @"~/VTCopyVideoEncoderList.txt";
        [record writeToFile:[file stringByExpandingTildeInPath]
                 atomically:YES
                   encoding:NSUTF8StringEncoding
                      error:NULL];
    }
    return 0;
}
 
Joined
Oct 23, 2010
Messages
900
Motherboard
GA-Z77X-UP5-TH
CPU
i7-3770K
Graphics
RX 580
Mac
iMac, MacBook Pro
Mobile Phone
Android, iOS,
@macnb
interesting, for now with PlugInType=1 and KernelXCPM ticked in Clover configurator and CPUFriend+CPUFriendDataProvider.kext in clover/kext/other/
my Average frequency of all cores is around 2.5Ghz
View attachment 452637
Those charts look OK. That is approximately what I see.

I'm planning to try ssdtPRGen+ssdt_data.dsl combined to compare (my OC is 4.5).
should i run:
Code:
sudo ~/ssdtPRGen.sh -c 2 -t 77 -turbo 4500 -target 1 -x 1 -b Mac-FC02E91DDD3FA6A4
to generate ssdt or get rid of -x 1 probably, then untick KernelXCPM in clover?:think:
Code:
sudo ~/ssdtPRGen.sh -c 2 -t 77 -turbo 4500 -target 1 -b Mac-FC02E91DDD3FA6A4
To be honest, I see very little difference between using XCPM and not using it.
Also, I believe XCPM does not really work properly with Ivy Bridge.
Let me explain what I mean by that.
When You set KernelXCPM to True, Clover does patch the kernel to use XCPM and you can confirm that by running the following command:
Code:
sysctl -a |grep -i xcpm.mode
It will return:
Code:
machdep.xcpm.mode: 1
The problem is, that the Clover does not inject the FrequencyVectors for Ivy Bridge that XCPM expects.
You can confirm that by running:
Code:
sysctl -a |grep -i xcpm.mode.vectors_loaded_count
And it will return:
Code:
machdep.xcpm.mode.vectors_loaded_count: 0
According to Piker Alpha:
"3.) If sysctl -n machdep.xcpm.vectors_loaded_count returns 0 then the FrequencyVectors data is not being used. Backup the plist for your board-id and replace it with a different plist."

That's where CPUFriend comes in.
However when we use Mac-FC02E91DDD3FA6A4.plist file to create the CPUFriend data kext, that .plist DOES NOT contain any FrequencyVector data for iMac13,2 (which uses an Ivy Bridge CPU) and thus XCPM cannot use any frequency vectors. The reason it does not contain any Frequency Vectors is because Apple do not use XCPM for Ivy Bridge.
Therefore, turning on XCPM with CPUFriend does not really help XCPM on Ivy Bridge.

As an experiment, I took the FrequencyVectors array from iMac14,2 Mac-27ADBB7B4CEE8E61.plist :

Screenshot 2020-03-12 at 15.10.29.png

....and added it to the iMac13,2 Mac-FC02E91DDD3FA6A4.plist file and that does show:
Code:
machdep.xcpm.mode.vectors_loaded_count: 1
But the idle frequency is still around 2.5Ghz both on Mojave and Catalina.
I tried OpenCore and added kernel patches to enable XCPM with CPUFriend but the results are the same.
But those FrequencyVectors are for a Haswell CPU (not Ivy Bridge) so it's not a valid thing to do.

Conclusion is that XCPM does not gain anything useful on Ivy Bridge CPU.

i've also found this interesting post by @LisaAlterEgo here for me to combine ssdt_data.dsl with ssdtPRGen ssdt:
https://www.tonymacx86.com/threads/...ver-uefi-hotpatch.279627/page-13#post-2058672

It was not very clear for me from the CPUFriend github explanation :)
CPUFriend gives you an option to use EITHER the kext it generates OR the SSDT_dsl.dsl file it generates.
You use one or the other. The result is the same using either method. The Kext is the easiest to use. The SSDT method provide slight improvement at boot time but NOT during use. Just use the kext method.

Also are you using EIST on Auto or Disable in BIOS settings?
I am using EIST set to AUTO.
 
Joined
May 17, 2011
Messages
19
Motherboard
MSI Z390 Gaming Pro Carbon AC
CPU
Intel i7-9700k
Graphics
Sapphire Nitro+ 5700XT
Mobile Phone
Android
Could you provide your IORegistryExplorer output, and in particular,
tell us what Radeon Framebuffers are being selected? There are injectors
to enable HEVC for Baffin and Ellesmere, but I'm not sure what your cards
default to.
Hi, I am sorry for the late reply. There have been few updates: My Vega64 died and now I only have 5700xt and I re-installed macOS and switched to OpenCore. The situation with HEVC is still the same. No HEVC acceleration when iGPU is off.

Thank You


When I was testing the operation with "SMBIOS = MacPro6.1", I was wondering why the HEVC file that had been playing was not playable.
This is probably due to a change in the on / off setting of the iGPU.

After reading the @DiscoDancer post, I tried to see if the result of VTCopyVideoEncoderList changes depending on whether iGPU is enabled or disabled during installation.
The result is that the result of VTCopyVideoEncoderList changes, but I can not decipher the changed contents.

A simple Xoce program will be posted, so if you are interested in the content, try it.
Dump VTCopyVideoEncoderList information to ~ / VTCopyVideoEncoderList.txt.

Code:
#import <Foundation/Foundation.h>
#import <VideoToolbox/VTVideoEncoderList.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool
    {
        NSMutableString *record = [NSMutableString stringWithCapacity:0];
        [record appendString:@"Dump:VTCopyVideoEncoderList\n"];

        CFArrayRef encoder_list;
        VTCopyVideoEncoderList(NULL, &encoder_list);
       
        NSArray *array = (__bridge NSArray*)encoder_list;
       
        int index = 1;
        for( id list in array )
        {
            NSArray *keys = [list allKeys];
            [record appendFormat:@"index[%02d] \n{", index];
            for( id key in keys)
            {
                if( [key compare:@"CodecType"] != NSOrderedSame )
                    [record appendFormat:@"\n%@:\"%@\"",key, [list objectForKey:key]];
                else
                    [record appendFormat:@"\n%@:\"%@\"(0x%08X)",
                       key,
                       [list objectForKey:key],
                       (int)[[list objectForKey:key] integerValue]
                      ];

//                NSLog(@"index[%2d] key[%@] data[%@]", index, key, [list objectForKey:key]);
            }
            [record appendString:@"\n},\n"];
            index++;
        }
        CFRelease(encoder_list);
       
        NSString *file = @"~/VTCopyVideoEncoderList.txt";
        [record writeToFile:[file stringByExpandingTildeInPath]
                 atomically:YES
                   encoding:NSUTF8StringEncoding
                      error:NULL];
    }
    return 0;
}
Much of the things you said were beyond my level of understanding, unfortunately. But I did run the program in xcode and got the file. Can't make much out of it though. I've attached it if you'd like to have a look.

Thank You
 

Attachments

Joined
Mar 16, 2015
Messages
213
Motherboard
HP 6300 SFF-V3.08
CPU
i5-3570
Graphics
GT 640
Mac
Mac mini, Mac Pro
Classic Mac
Power Mac, Quadra, SE/30
But I did run the program in xcode and got the file. Can't make much out of it though. I've attached it if you'd like to have a look.
Check if "IsHardwareAccelerated:" 1 "is lost in the execution result when iGPU is off.

I verified whether there was reproducibility in my case, but there was no change with on / off of iGPU.
However, mpv stopped working as it affected the operation of the application.

It's difficult to find a way to go well, but leaving it may be silly.
 
Joined
May 17, 2011
Messages
19
Motherboard
MSI Z390 Gaming Pro Carbon AC
CPU
Intel i7-9700k
Graphics
Sapphire Nitro+ 5700XT
Mobile Phone
Android
Check if "IsHardwareAccelerated:" 1 "is lost in the execution result when iGPU is off.

I verified whether there was reproducibility in my case, but there was no change with on / off of iGPU.
However, mpv stopped working as it affected the operation of the application.

It's difficult to find a way to go well, but leaving it may be silly.
I tried it with iGPU off and 'IsHardwareAccelerated' is still showing 1. I must add that I only lose HEVC acceleration in FCPX. VideoProc on the other hand says that the HEVC support is there.
With iGPU off FCPX taxes CPU like crazy when exporting HEVC file and it also takes ages to complete.
I am completely clueless here.
 

Attachments

Joined
Mar 16, 2015
Messages
213
Motherboard
HP 6300 SFF-V3.08
CPU
i5-3570
Graphics
GT 640
Mac
Mac mini, Mac Pro
Classic Mac
Power Mac, Quadra, SE/30
I tried it with iGPU off and 'IsHardwareAccelerated' is still showing 1.
Thank you for attaching the execution result.
I tested with "SMBIOS = iMac13,2 MacPro6.1 iMacPro1.1", but it seems that the 'IsHardwareAccelerated' flag can only be guaranteed during playback.
Any playback was possible, but encoding with ffmpeg succeeded only with "iMacPro1.1".

With iGPU off FCPX taxes CPU like crazy when exporting HEVC file and it also takes ages to complete.
I think that the execution speed at the time of encoding will also change, and HEVC conversion with ffmpeg on Windows will be about twice as fast as VideoToolBox.
 
Joined
Feb 10, 2012
Messages
72
Motherboard
GB Z370-HD3P
CPU
i5 9600K
Graphics
RX 580
Mac
MacBook Pro
Classic Mac
512K
Mobile Phone
iOS
RX 580 working perfectly here on 10.15.4. DRM in Safari and all.

/edit iMacPro1,1 profile, IGPU disabled, latest (compiled) Lilu & WEG.
/edit2 I can't say how pleasantly surprised I am by this. None of the other Catalina versions worked for me so I put off upgrading until now.
 
Last edited:
Joined
Dec 14, 2016
Messages
351
Motherboard
Asus Prime z370 A-II
CPU
i9-9900K
Graphics
Radeon VII
Mac
MacBook Pro, Mac Pro
Mobile Phone
iOS
I tried it with iGPU off and 'IsHardwareAccelerated' is still showing 1. I must add that I only lose HEVC acceleration in FCPX. VideoProc on the other hand says that the HEVC support is there.
With iGPU off FCPX taxes CPU like crazy when exporting HEVC file and it also takes ages to complete.
I am completely clueless here.
I'm in the same situation... HEVC acceleration not working in FCPX, Compressor, or Quicktime but is working in Premiere Pro and VideoProc.

I was able to pull version 10.4.6 of FCX and can confirm it works well...HEVC acceleration is active. 10.4.8 took a minute to render 10 seconds of 4K video...10.4.6 took 11 seconds. Note: this is for 8 bit HEVC. 10 bit speeds did not change. Certain motion effects also render much faster (you have to use the old version).

My guess is when Apple switched to the new Metal Engine setup in Catalina and FCX apps, it used a new path to the Graphics card that Hackintoshs' aren't yet compatible with.
 
Last edited:
Joined
Jan 13, 2017
Messages
266
Motherboard
Gigabyte Designare Z390
CPU
i9 9900K
Graphics
RX580
Mac
iMac, Mac Pro
Classic Mac
Apple
Mobile Phone
iOS
RX 580 working perfectly here on 10.15.4. DRM in Safari and all.

/edit iMacPro1,1 profile, IGPU disabled, latest (compiled) Lilu & WEG.
/edit2 I can't say how pleasantly surprised I am by this. None of the other Catalina versions worked for me so I put off upgrading until now.
I use RX580 on SMBios 19.1 and also work perfect .. TV and everything are super.
 
Top