Wednesday, May 25, 2016

QuickSync, a broken dream

The reason I'm writing this is because of my experiences in helping people stream and record on computers using integrated graphics. In my mind, I figured QuickSync was similar to AMD's VCE or NVIDIA's NVENC in that using hardware accelerated encoding would impose a minor performance penalty. In practice, Intel's implementation does impose a huge penalty if you are playing games on Intel's GPUs.

QuickSync is Intel's technology for encoding video. The idea is that their CPUs would have a bit of circuitry dedicated to accelerating video encoding and free the rest of the CPU to do other things e.g. game physics. It works but there are some major caveats:

Quicksync depends on the processor's integrated GPU (iGPU) which means that if the iGPU is being used, Quicksync performance falls. This means that this feature isn't really very useful for people playing somewhat demanding games on iGPUs - the area where hardware accelerated encoding would help the most. It's fine for encoding video or doing basic screencasts but it simply shares too many resources with the rest of the integrated GPU to work effectively while playing 3D games.

Now I'm not sure how much it would have cost to have Quicksync implemented as a fully discrete hardware solution; Intel probably reasoned that streaming and recording gameplay is an upper tier feature not needed by typical iGPU users and that users who do stream and record games would probably have a discrete GPU anyway, but it is unfortunate. Quicksync has been around for several years and so it's understandable that its earliest forms which were targeted toward video conversion might have left gaming uses as an afterthought. But given the huge growth in streaming and gameplay recording versus realtime movie file encoding, it's surprising that Quicksync has not adapted.

Quicksync does work on iGPU systems, but performance is inversely proportional to gameplay demands. This means that the whole recording and streaming process is very inconsistent. This performance relationship also exists even with a dedicated GPU if software x264 encoding schemes are used*, though this is rarely a problem on quad core+ systems.

So my recommendation for potential streamers and people hoping to record gameplay is to always have a discrete video card, even if it is hardly faster than the iGPU. This will ensure that all iGPU resources are free for Quicksync. In that case, all the iGPU is being used for is encoding and so it functions as truly dedicated hardware.

But for integrated graphics users, x264 on quad core and higher systems is typically going to be better than QuickSync for streaming, while the very low compression, i.e. low processing load, codecs used by FRAPS and DXTORY are going to be the best for recording. Of course the file sizes are relatively enormous but there ain't no such thing as a free lunch.

It would be nice to set aside iGPU resources for Quicksync and adjust the game's graphical settings after the fact.

* This is why I prefer to set processor affinities for non-streaming PC setups as you can set aside appropriate resources for a given quality level and know that no matter what happens in game, streaming quality remains consistent. It is a kind of virtual streaming PC.

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.