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.
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.
 
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
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
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
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:
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
 
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.
 
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?
 
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
 
Thanks! I ask because I have a RX480 installed on my cMP and I was unsure if this will work with that GPU
 
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.
 
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.
 
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.
 
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.
 
(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.
 
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:
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?
 
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
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)
 
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.