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.

startergo

macrumors 603
Sep 20, 2018
5,020
2,282
AKAIK the GTX Titan (GK110 core) is a Kepler series and none of the Kepler cores have the hardware for HEVC. Here is a grid from Nvidia which is self explanatory:

View attachment 876412
We need to find how it works then in Mojave and Catalina. It does not work in High Sierra. It may not work in Windows either.
 

Flacko

macrumors 6502
Oct 3, 2018
309
376
UK
We need to find how it works then in Mojave and Catalina. It does not work in High Sierra. It may not work in Windows either.
Can you confirm that you have HEVC with the Titan on its own. Cannot really understand how it would work or what is happening as the Titan (with Kepler) physically does not have the hardware to do HEVC unlike the RX580. Some later Titans (Pascal/Turing cores) can do HEVC but Apple does not provide any drivers beyond the Kepler series for Mojave/Catalina.
 
  • Like
Reactions: VaZ

h9826790

macrumors P6
Original poster
Apr 3, 2014
16,656
8,587
Hong Kong
AKAIK the GTX Titan (GK110 core) is a Kepler series and none of the Kepler cores have the hardware for HEVC. Here is a grid from Nvidia which is self explanatory:

View attachment 876412

I know, in fact, none of the NVENC / NVDEC should work because of this hack. That's why I asked startergo to remove all GPU but only leave the Titan in the cMP, then run the test again (to avoid false result).
 
  • Like
Reactions: startergo

startergo

macrumors 603
Sep 20, 2018
5,020
2,282
I know, in fact, none of the NVENC / NVDEC should work because of this hack. That's why I asked startergo to remove all GPU but only leave the Titan in the cMP, then run the test again (to avoid false result).
I will do that and other testings when I have a chance to sit in front of the machine. I will use Nvidia cards only in slots 1 and 2 and see how is it going. So far I have confirmed that with 3 cards (1 in slot 1 and 2 in the expansion board the 3 cards can play flawlessly HEVC video in FCP, VLC, QuickTime without CPU usage. The AMD does not output to the screen but I can screen share to it.
 
  • Like
Reactions: Reindeer_Games

tsialex

Contributor
Jun 13, 2016
13,454
13,601
I've just found this. ?
Screen Shot 2019-11-11 at 22.56.33.png


If OpenCore devs don't help us, we can help ourselves :p PXS* to GFX0 rename inside the BootROM easy peasy.
 
Last edited:

startergo

macrumors 603
Sep 20, 2018
5,020
2,282
I've just found this. ? View attachment 876510

If OpenCore devs don't help us, we can help ourselves :p
[automerge]1573524256[/automerge]
PXS2 to GFX0 rename inside the BootROM easy peasy.
[automerge]1573524597[/automerge]
Btw, just found where are the DSDT tables that define processors are. Some obsolete server lovers would kill for this…:p
You can find here very interesting info... Among all:
1573525980551.png
 

Ludacrisvp

macrumors 6502a
May 14, 2008
797
363
Some careful edits and we probably can have hardware decode native, with just Lilu/WTG.

Btw, I'm dying to see how Apple will implement MP7,1 hardware acceleration…
Probably something that routes things through the T2 chip so we can't emulate / bypass the checks.
 

Charmandrigo

macrumors member
Jul 3, 2018
94
22
In my understanding on AMD hardware, the RX400 series are Polaris based too (the first ones to use this architecture actually). So, doing this will work as expected, if not similar to how it works with RX500 GPUs?
 

h9826790

macrumors P6
Original poster
Apr 3, 2014
16,656
8,587
Hong Kong
I've just found this. ? View attachment 876510

If OpenCore devs don't help us, we can help ourselves :p PXS* to GFX0 rename inside the BootROM easy peasy.

This is a good finding. Another possible (and permanent) solution for GFX0 renaming.

Now, we have to find out the very very last (hopefully) missing puzzle. Why GFX0 renaming + WEG board-id injection can’t activate HEVC encoding?

So far, I couldn’t find any hint yet. CMMChris also double checked the IOReg, also can’t spot anything missing.

Just thinking another possible way “mod the board-id / ident at the ROM level”. This of course very high risk (especially the development process), and not a good solution for general users, but it could be another possible solution.
[automerge]1573590214[/automerge]
In my understanding on AMD hardware, the RX400 series are Polaris based too (the first ones to use this architecture actually). So, doing this will work as expected, if not similar to how it works with RX500 GPUs?

Should work
 

Charmandrigo

macrumors member
Jul 3, 2018
94
22
Thanks! I ask because I have a RX480 installed on my cMP and I was unsure if this will work with that GPU
 

cdf

macrumors 68020
Jul 27, 2012
2,256
2,583
Now, we have to find out the very very last (hopefully) missing puzzle. Why GFX0 renaming + WEG board-id injection can’t activate HEVC encoding?

Exactly. To narrow down the search, have you tried using OpenCore to update the platform information in each of the three destinations (SMBIOS, Data Hub, and NVRAM) one at a time? Determining which fields lead to proper activation would tell us what to look for in AppleGVA.
 

h9826790

macrumors P6
Original poster
Apr 3, 2014
16,656
8,587
Hong Kong
Exactly. To narrow down the search, have you tried using OpenCore to update the platform information in each of the three destinations (SMBIOS, Data Hub, and NVRAM) one at a time? Determining which fields lead to proper activation would tell us what to look for in AppleGVA.

Good idea, haven’t try it yet.
 

sirbryan

macrumors newbie
Nov 12, 2019
17
23
1) There is NO BIOS hack require for HWAccel activation. It's either by installing extra kext (your current method) or by editing the AppleGVA.framework (system file).

2) Swordsmith video is a HEVC video. This video can be played smoothly in Mojave because HEVC hardware decode can be activated via the work around introduced in this thread. The same work around can only activate H264 HWAccel in Catalina, no HEVC decode. Therefore, that video cannot be played smoothly in your case.

(Using 10.14.6 w/latest security update, on a 2012 5,1 with single hex-core 3.46 CPU and Sapphire RX580, SIP currently off.)

After performing the hex edit (and subsequent plist and permissions fixes), H.264 hwaccel is working beautifully. But only H.264.

When trying to play any HEVC files, everything is punted to the CPU, which I've confirmed by all playback stuttering, Activity Monitor graphs showing high CPU load, and ioreg dumps showing nothing hitting UVD:

Code:
"HWChannel UVDEnc
 Commands Completed"=0
--
"HWChannel UVDEnc
 Commands Submitted"=0
--
"HWChannel UVDDec
 Commands Completed"=0
--
"HWChannel UVDDec
 Commands Submitted"=0
--
"HWChannel UVDEncLLQ
 Commands Submitted"=0
--
"HWChannel UVDEncLLQ
 Commands Completed"=0

Any thoughts? I've scoured virtually the entire thread and don't recall seeing anything related to this.
 

startergo

macrumors 603
Sep 20, 2018
5,020
2,282
To narrow down the search, have you tried using OpenCore to update the platform information in each of the three destinations (SMBIOS, Data Hub, and NVRAM) one at a time?
When I updated only the Data Hub upon boot it stays at:
Waiting for an external debugger...
I left debugging disabled. All fields are 0.
 

h9826790

macrumors P6
Original poster
Apr 3, 2014
16,656
8,587
Hong Kong
(Using 10.14.6 w/latest security update, on a 2012 5,1 with single hex-core 3.46 CPU and Sapphire RX580, SIP currently off.)

After performing the hex edit (and subsequent plist and permissions fixes), H.264 hwaccel is working beautifully. But only H.264.

When trying to play any HEVC files, everything is punted to the CPU, which I've confirmed by all playback stuttering, Activity Monitor graphs showing high CPU load, and ioreg dumps showing nothing hitting UVD:

Code:
"HWChannel UVDEnc
 Commands Completed"=0
--
"HWChannel UVDEnc
 Commands Submitted"=0
--
"HWChannel UVDDec
 Commands Completed"=0
--
"HWChannel UVDDec
 Commands Submitted"=0
--
"HWChannel UVDEncLLQ
 Commands Submitted"=0
--
"HWChannel UVDEncLLQ
 Commands Completed"=0

Any thoughts? I've scoured virtually the entire thread and don't recall seeing anything related to this.

Which player?
[automerge]1573616721[/automerge]
When I updated only the Data Hub upon boot it stays at:
Waiting for an external debugger...
I left debugging disabled. All fields are 0.

I bet SMBIOS is the most important one. Try only mod that one.
 

sirbryan

macrumors newbie
Nov 12, 2019
17
23
So, BOTH entries inside the AppleGVA file are edited? Plist also edited, correct?

Correct. I just double-checked. I had made the changes and fixed permissions as per your instructions.

Then, on a hunch, I decided to try something else.

The iMac Pro 1,1 w/Vega Info.plist entry looks like this:
Code:
<key>Mac-7BA5B2D9E42DDD94</key>
                <dict>
                        <key>allowFrameReordering</key>
                        <false/>
                        <key>hwe</key>
                        <true/>
                        <key>hwe420</key>
                        <true/>
                        <key>interlacedOff</key>
                        <true/>
                        <key>ke1</key>
                        <true/>
                </dict>

I have a few iMac 5Ks with 500 series GPUs in them (560 and 580), so I pulled up their board-id:
Code:
<key>Mac-BE088AF8C5EB4FA2</key>
                <dict>
                        <key>facetimeDecode</key>
                        <true/>
                        <key>forceOfflineRenderer</key>
                        <true/>
                        <key>hwe</key>
                        <true/>
                        <key>hweBGRA</key>
                        <true/>
                        <key>ke1</key>
                        <true/>
                        <key>pp</key>
                        <integer>1</integer>
                </dict>

Because we don't have a QuickSync CPU/GPU, we remove the forceOfflineRenderer flag. Also, without a FaceTime camera, I don't imagine the facetimeDecode flag will make a difference.

So here's what I ended up with:

Code:
<key>Mac-F221BEC8</key>
                <dict>
                        <key>hwe</key>
                        <true/>
                        <key>hweBGRA</key>
                        <true/>
                        <key>ke1</key>
                        <true/>
                        <key>pp</key>
                        <integer>1</integer>
                </dict>

Interestingly enough, after saving the changes, buttery smooth playback began to work.

Fiddled some more, and found that whether the key is hweBGRA or hwe420 doesn't seem to make a difference, at least not in playback. So perhaps my editing/saving of the file (again) caused the OS to reload the framework and enabled hwaccel for VideoToolbox. <shrug> Either way, it is now working like everybody else.

DRM in Safari is still broken, likely because of the inconsistencies between the driver and the hardware.
[Edit: found a post that discusses similar issues with JPEG acceleration due to hardcoded settings in AppleGVA & AppleVPA. Shiki apparently fixes this.]

More testing to be done in FCPX.
 
Last edited:

startergo

macrumors 603
Sep 20, 2018
5,020
2,282
I bet that they do the same as they did with iMac Pro, but in a generic way that could work with every slot and not just GFX0.
Alex I was just reading the comments in the bugtracker for opencore. Are you sure that only GFX0 and not GFX1 (for the second slot) works? So If you have cards in both slots you can't rename both to GFX0 as that will probably produce a havoc in the registry hooks?
 

tsialex

Contributor
Jun 13, 2016
13,454
13,601
Alex I was just reading the comments in the bugtracker for opencore. Are you sure that only GFX0 and not GFX1 (for the second slot) works? So If you have cards in both slots you can't rename both to GFX0 as that will probably produce a havoc in the registry hooks?
I'm not sure about GFX1, but not one Mac that can enable or has to have have hardware encoding done by the GPU has dual discrete GPUs, it's always IGPU and GFX0 combo or just GFX0.
 
  • Like
Reactions: h9826790

startergo

macrumors 603
Sep 20, 2018
5,020
2,282
I'm not sure about GFX1, but not one Mac that can enable or has to have have hardware encoding done by the GPU has dual discrete GPUs, it's always IGPU and GFX0 combo or just GFX0.
Maybe there should be an option say in Shiki to select any slot to GFX0 in multi GPU setup (whichever is required for acceleration)
 

tsialex

Contributor
Jun 13, 2016
13,454
13,601
Maybe there should be an option say in Shiki to select any slot to GFX0 in multi GPU setup (whichever is required for acceleration)
OpenCore developers already told us that they have a very low priority for MP5,1 specific issues, this will probably have even less priority than the PXS* renames.

That's why I'm looking for other ways to enable what we need without OpenCore. If you can provide a patch or can make a fork of Opencore to address the MP5,1 issues, will be welcome by us.
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.