New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
vdadecoder checker error #227
Comments
Hi, This FAQ entry is written in a rather opaque manner and does not outline some internal details I know. I will explain them below but you will still have to find a solution yourself. If you know any interested people you could also point them to this message. Perhaps igork knows something else but I have no idea whether he touched Pascal. So, as of 10.12.4 AppleGVA video decoding framework only knows about the following decoders:
AMD decoders are an unrelated question, and Intel decoders could be "offline" and "online". Both kinds of Intel decoders are capable of performing hardware video decoding (well, probably except Gen6, support of which seems to be very partial).
According to The maximum support level of VP4 means that if you have NVIDIA newer than 2xx series you cannot use NVIDIA hardware video decoder at all (despite some stupid people using However, to be able to use Intel offline hardware video decoder a valid int nvAcceleratorParent::SetAccelProperties(nvAcceleratorParent* this) {
int rendererId = 0;
int rendererSubId = 0;
int oclass = GetCardOclass(this);
if (oclass <= 0x88B0) {
if (oclass == 0x74B0) {
rendererId = 0x1040002;
} else if (oclass == 0x85B1) {
rendererId = 0x1040008;
rendererSubId = 1;
} else {
if (oclass != 0x86B1)
return;
rendererId = 0x1040008;
rendererSubId = 2;
}
SetProperty(this, "IOVARendererID", &rendererId, 4LL);
if (rendererSubId)
SetProperty(this, "IOVARendererSubID", &rendererSubId, 4LL);
} else if (oclass == 0x88B1) {
rendererId = 0x1040004;
SetProperty(this, "IOVARendererID", &rendererId, 4LL);
} else if (oclass == 0x95B1 || oclass == 0x90B1) {
rendererId = 0x1040008;
rendererSubId = 3;
SetProperty(this, "IOVARendererID", &rendererId, 4LL);
SetProperty(this, "IOVARendererSubID", &rendererSubId, 4LL);
}
} As you see basically NVIDIA added a hack for iMac14,2 and similar with 6xx GPUs (oclass 0x95B1) by pretending that they are VP4 GPUs. So, injecting 0x1040008 for Maxwell GPUs did nothing but extend the same hack a little further. Since AppleGVA won't recognise any other value, you are pretty much bound to use one of those known IDs for Pascal cards as well. One last note is that starting with 10.12.3 you need to recompile VDADecoderChecker, and starting with 10.12.4 few users reported that there are plist injection issues for their Maxwell GPUs. |
Hi, i made some test with GTX 950 on z97 and z170 platforms. On z97 (i7 4790k) is everything ok. Quick Sync supported and VDADecoderChecker output ""Hardware acceleration is fully supported". On z170 (i5 6600) And MacX Video Converter shows "Hardware encoding supported: NO" Without IOVARendererID → <08 00 04 01> (via iMac.kext), IOVARendererSubID → <03 00 00 00> (via iMac.kext) VDADecoderChecker output this: but MacX Video Converter shows "Hardware encoding supported: YES" and i can use Quick Sync for encoding. It looks like that problem is somewhere in Skylake/Kabylake or in Intel HD 530/630 and AppleIntelSKLGraphicsFramebuffer because older platforms works with the procedure described in Shiki's FAQ without problems. |
Well, encoding and decoding go via different routes, so the easiest way to check whether decoding actually works( but VDADecoderChecker lies to you) is to pick a large video file and to play it in QuickTime (example). Unfortunately other than the compilation issue I mentioned above I know of no other false positives, so probably your hardware video decoding does not work indeed. From what I know HD530 (0x1912) graphics works fine for some people but there are memory limit issues (the value may vary from 64 MB to 128 MB) and it could be dependent on mac model (the best variant should be iMac17,1). Could point you to the material compilation on applelife, but that's mostly all of it. I have no such card, and could only wish you luck trying and experimenting. |
@ghodgeon commented Thank you for the information! I have a 1080Ti and 980Ti and Intel HD 530 'working' in one machine. If I load the display through the onboard HDMI port, we have successful hardware acceleration. The moment I plug in a monitor into one of the GPU's, we lose hardware acceleration. is this related to the Maxwell 'fake' injection advice you have above? The other GPU's need to read the same IOVARendererSubID for things to stay alive? Appreciate everything you've done so far....Stumped from here on in ! |
I was linked to a kext by @mologie fixing this issue today: While currently a bit immature it seems to be doing right things, and resolves this issue. Upd: unfortunately seems to be still there. |
I made a discovery which seems related to this issue. I too have a Z170 with discrete Nvidia :
I am quite surprised being now able to read iTunes DRM protected videos with Shiki installed, but without any injection of IOVARendererID / IOVARendererSubID. Is this normal ? Decoding seems OK : I am able to play in QuickTime the big video file you pointed to as an example. Output of VDADecoderChecker is :
I had visual problems with iBooks, Xcode… , but it's not the transparent windows anymore. These problems were fixed by installing NVWebDriverLibValFix in CLOVER/kext/Other. Other details are available on the |
I have updated my GPU branch to enable QuickSync. I found that the "model" name given to the IGPU device has some influence. Example of output running the 4K video in QuickTime Player : Here is my SSDT (which - as a precaution - also includes injection of the property to fix Skylake glitches) :
Do you see any explanation ? |
Well, without reversing it is hard to say, to be honest. And without the hardware it is even harder. What I do know is that connector-less SKL/KBL GPU works perfectly with AMD GPUs with WhateverGreen, so I am pretty certain the only issue is IOVARenderer stuff, and the rest is just coincidence. |
I guess this is not directly related to AppleGVA itself, but more to the equivalent of Nvidia Optimus/AMD PowerXPress that Apple has developed. |
I confirm that injecting a "correct" Nvidia IOVARendererID breaks Intel QuickSync. I noticed that injecting a "dummy" IOVARendererID (for instance |
Yes :
|
It looks like AppleGVA (or something else in VideoToolbox.framework) is requesting the VDA hardware decoder without releasing it. |
Starting with version 1.2.0 of NvidiaGraphicsFixup there will be several improvements for NVIDIA owners. Among them:
At this moment you can only compile the driver on your own (requires you to recompile Lilu and all the plugins from the source code). Keep an eye on it once it is released. Among making the life easier with less kexts to use it might improve the situation with hardware video decoding for Pascal users, though likely with only Haswell/Broadwell CPUs. |
Is this aiming to decode from the dGPU or forward it to Intel quick sync like native mac? If dGPU, for skylake users will the connector-less platform id work for quicksync decode/encode? |
Finally it works, with latest Lilu, Shiki and NvidiaGraphicsFixUp for a high bitrate file playback in Quicktime, I see low CPU usage and my iGPU in a connector less mode shows usage in intel power gadget. I was also able to do a screen recording in quicktime with iGPU doing the work. This was with i7 6700 and GTX 1070 in Sierra 10.12.6. But theres a major catch, anything outside quicktime, like web browser video from Youtube or VLC again kick back to CPU than iGPU for decoding which results in higher usage. Should I use one of these commands to force?:
|
No, you should not, it is hard to say at this point why there could be any issue in other programs, but I would assume it is the same on "supported" platforms. Most reliable ways to confirm that hardware video decoding works this are VDADecoderChecker and iTunes/QuickTime. As for "how good" it works, only Apple knows. |
VDADecoderChecker still gives me an error though. I'll test this with High Sierra and see. |
That is very strange. It is likely that something is misconfigured, because I am pretty certain it works fine on 10.12.6. We tested it on a similar configuration but with 7700K. In my opinion, you better recheck the FAQ steps, perhaps something was forgotten about. There also is a chance you have corrupted dyld shared cache, follow the corresponding FAQ entry to check it and rebuild it. |
I get this:
Connection to Intel plugin seems fine. But is it ok for VDADecoder to fail? |
I compiled and tried Lilu, Shiki, and NvidiaGraphicsFixup on High Sierra with a 7700K and 1080 GPU, and get the same error:
It also seems to break Quick Sync with MacX Video Converter saying hardware encoding isn't supported. |
Um, you better reread the previous messages and the FAQ, to be honest. Or maybe even wait for a release, perhaps more simplified instructions get published with time. On your hardware you will need shikigva=4 at least, and the rest is to be followed from the FAQ. While I do understand that not everybody got the fixes right away, I ask you to read everything carefully and avoid posting to this issue tracker too much. 10.13 is believed to be buggy and problematic, and since I do not have it on real hardware I cannot tell you what is wrong there if anything. 10.12.6 is known to work just fine, but even a small mistake will prevent you from having hardware video decoding and encoding, and I cannot spend much time exploring what went wrong, sorry. |
As a temporary workaround for 10.13 specific issues I added a process whitelist. It is activated by 8th bit, thus making one provide For 10.12 you will be fine with a shared cache rebuild (see https://github.com/vit9696/Shiki/issues/10#issuecomment-334925025). |
@emiliogonzalezjunior commented I am using High Sierra and the shikivga=12 boot arg is working. However, Davinci Resolve isn't present in the Process whitelist . Airplay also doesn't seem to be working (GT=0 in the intel power gadget), is it possible to include airplay in the process whitelist? davinci resolve file path: /DaVinci Resolve.app/Contents/MacOS/Resolve Thank You for your great work! |
Is this "Process Whitelist" High Sierra specific? Because I am still using 10.12.6 and in there Firefox, Opera or Chrome still not using HW decoding, I was wondering if I should add something for 10.12.6. |
I am little confused, how does one use the patches.plist? |
@xelanaiznac opened vit9696/Shiki#5
hi.
I don't know if it Is the right place to speak about this but z170 and z270 with Nvidia discrete graphic card can not have shiki working due to error about vdadecoder (VDADecoderCreate failed. err: -12473).
on older system (z97 for example) it was possible adding iMac.kext (thanks to igork) which inject the correct values of iovarenderid and iovarendersubid.
from shiki faq we learned this:
"How can I inject IOVARendererID/IOVARendererSubID in certain NVIDIA GPUs?
NVIDIA drivers do not properly add these values necessary for VDA decoding for Maxwell GPUs in their Web drivers. You could add them with a plist-only kext. The correct values for VP4 GPUs are:
IOVARendererID → <08 00 04 01>
IOVARendererSubID → <03 00 00 00>
VP3 ones want a different IOVARendererID → <04 00 04 01>.
Thanks to igork for noticing it."
I'm using pascal gtx 1080 and I found out there https://en.wikipedia.org/wiki/Nvidia_PureVideo that my gpu is a vp8. maybe we have to use different iovarenderid and subbed values?
The text was updated successfully, but these errors were encountered: