How far NVENC can go for recording gameplay locally

dulkenyut

New Member
We all know our recording capability with x264 encoder is pretty much defined by our CPU. It's core, it's number of core, it's clock speed etc.

But what about NVENC?

Let's say Turing Gen here

Does NVENC works alone without taking a single NVIDIA GPU cores resources?
If this is the case, it means that 1650 Super and 2080 Ti will perform completely the same

Or NVENC do takes some resources on GPU cores? Which means that NVENC on 1650 Super and 2080 Ti will perform differently.

Let me know what you guys think! Thank you!
 

koala

Active Member
Nvenc is a dedicated circuit on the GPU that runs independently. It doesn't need computing resources from the regular GPU, except if you activate look-ahead or psycho-visual tuning, where it needs a tiny bit of regular GPU resources. It's "free" to use, if it comes to resource utilization. This is the crucial advantage of nvenc in comparison to AMD VCE (AMD GPUs) and Quicksync (Intel iGPU).

There are differences in the Nvenc performance and quality. "Performance" means the maximum amount of fps that can be encoded for a given resolution. For example, some oldest Nvenc circuits aren't powerful enough to encode 4k with 60 fps, but all the newer ones are.

Each Nvidia chip generation comes with its own improved Nvenc.
Nvenc on the Pascal chip is about the same quality as x264 veryfast
Nvenc on the Turing chip is about the same quality as x264 medium to slow
Nvenc on the Ampere chip is about the same quality as x264 slow

GTX 10xx is using the Pascal chip.
GTX 1650 is using the Turing GPU cores but the Pascal Nvenc.
GTX 1650 SUPER is using the Turing chip.
GTX 1660 and GTX 1660 SUPER are both using the Turing chip.
RTX 2xxx is using the Turing chip
RTX 3xxx is using the Ampere chip

The Ti variants use the same chip as the SUPER variants, or the non Ti variants, if there is no SUPER variant.
The only confusion is with the GTX 1650 and GTX 1650 SUPER, because the original GTX 1650 (non SUPER) uses the Turing GPU cores but the Pascal Nvenc.

tl;dr
Use Nvenc, if it is available. There is no need for using x264, if you have Nvenc. If you have a Turing Nvenc, you probably don't have a very powerful CPU as well, so using x264 better than veryfast will consume so much CPU resources that the app you're capturing will suffer, so there is no improvement over nvenc if seen as a whole.
 
Last edited:

hildegain

New Member
Contrary to what has been stated. Nvenc is never "free". While it is a dedicated circuit of sorts: Using it still requires some of the main memory copy and pci bandwidth. In any event that you find yourself using any real amount of your GPU (for your game, RTX voice etc.) even before you get to the psy options -- you will find that either your recording suffers or the game does so.

What I'm saying is not that you should not use NVENC but that you can't operate under the assumption that it's free in any sense. You'll have to ensure you're not using beyond 80% of your GPU's resources on average before recording.

As to no need for using x264... x264 is still considerably far ahead of Nvenc in terms of quality. (There is no debate on this topic. It's a fact. At best NVENC is only comparable at higher bitrates. A problem if you're concerned with either space or fully lossless recording) Only made irrelevant at much higher bitrates. If quality is paramount -- then x264 is still king. IF you don't personally care about the quality. If you only care about 'good enough' (and at bitrates of 20m and above even AMD encoder could be considered good enough) then the Nvidia encoder is only extremely minorly behind x264 in terms of efficiency.

"using x264 better than veryfast will consume so much CPU resources that the app you're capturing will suffer"

And I've already stated why this is a factor no matter which encoder you use but that said. Any recent i7 or i9 can record 1080p60 with presets much higher than 'very fast' without trouble. Ultimately it is dependent on whether you're hardware is capable in anything you want it to do. Software encoding is hard on the CPU when the CPU is already taxed and GPU encoding works the same for an already taxed GPU.

The short: If you're CPU constrained but never GPU constrained. Use Nvenc. You'll need a slightly higher bitrate but if that's not a concern at all. It's fantastic! If you find yourself with a strong CPU but sometimes GPU constricted with GPU accelerated compositing, using RTX, and gaming: x264 is good for offloading from the GPU but nothing is ever free on your computer.

If you ultimately want 'free'. Then you need to output to a dedicated encoder elsewhere.

Also to the previous poster. Nvenc on Ampere is the same as on Turing. There were no improvements made on that generation.

So to answer the question. The encoder performs most of its operations independent of the main GPU render pipeline components. Only making use of memory and some basic instructions. The difference between low and high end GPUs is most often in how many dedicated encoder cores they have. The better to render at higher resolutions without suffering. But since it requires power draw, memory, and a little attention by GPU -- it's not ENTIRELY free. But for users with a strong GPU where they rarely see it maxed. It may as well be.
 

TryHD

Member
As to no need for using x264... x264 is still considerably far ahead of Nvenc in terms of quality. (There is no debate on this topic. It's a fact. At best NVENC is only comparable at higher bitrates. A problem if you're concerned with either space or fully lossless recording) Only made irrelevant at much higher bitrates. If quality is paramount -- then x264 is still king.
This is very debatable. The OBS builtin defaults for nvenc are crap, but if you use something like streamfx which gives you controll over nvenc settings + updated ffmpeg libraries on OBS you can get at p7 between x264 veryslow and placebo on turing and ampere and that as a real time encode which is impossible with x264 very slow or placebo.
 

aberniando

New Member
Nvenc is a dedicated circuit on the GPU that runs independently. It doesn't need computing resources from the regular GPU, except if you activate look-ahead or psycho-visual tuning, where it needs a tiny bit of regular GPU resources. It's "free" to use, if it comes to resource utilization. This is the crucial advantage of nvenc in comparison to AMD VCE (AMD GPUs) and Quicksync (Intel iGPU).

There are differences in the Nvenc performance and quality. "Performance" means the maximum amount of fps that can be encoded for a given resolution. For example, some oldest Nvenc circuits aren't powerful enough to encode 4k with 60 fps, but all the newer ones are.

Each Nvidia chip generation comes with its own improved Nvenc.
Nvenc on the Pascal chip is about the same quality as x264 veryfast
Nvenc on the Turing chip is about the same quality as x264 medium to slow
Nvenc on the Ampere chip is about the same quality as x264 slow

GTX 10xx is using the Pascal chip.
GTX 1650 is using the Turing GPU cores but the Pascal Nvenc.
GTX 1650 SUPER is using the Turing chip.
GTX 1660 and GTX 1660 SUPER are both using the Turing chip.
RTX 2xxx is using the Turing chip
RTX 3xxx is using the Ampere chip

The Ti variants use the same chip as the SUPER variants, or the non Ti variants, if there is no SUPER variant.
The only confusion is with the GTX 1650 and GTX 1650 SUPER, because the original GTX 1650 (non SUPER) uses the Turing GPU cores but the Pascal Nvenc.

tl;dr
Use Nvenc, if it is available. There is no need for using x264, if you have Nvenc. If you have a Turing Nvenc, you probably don't have a very powerful CPU as well, so using x264 better than veryfast will consume so much CPU resources that the app you're capturing will suffer, so there is no improvement over nvenc if seen as a whole.

Thank you for the detailed information. Now I can be sure to use Nvenc. Since my GTX 745 is a dedicated encoder and my cpu is i5 7600, there is no reason to use x264! Thanks!
 

aberniando

New Member
Contrary to what has been stated. Nvenc is never "free". While it is a dedicated circuit of sorts: Using it still requires some of the main memory copy and pci bandwidth. In any event that you find yourself using any real amount of your GPU (for your game, RTX voice etc.) even before you get to the psy options -- you will find that either your recording suffers or the game does so.

What I'm saying is not that you should not use NVENC but that you can't operate under the assumption that it's free in any sense. You'll have to ensure you're not using beyond 80% of your GPU's resources on average before recording.

As to no need for using x264... x264 is still considerably far ahead of Nvenc in terms of quality. (There is no debate on this topic. It's a fact. At best NVENC is only comparable at higher bitrates. A problem if you're concerned with either space or fully lossless recording) Only made irrelevant at much higher bitrates. If quality is paramount -- then x264 is still king. IF you don't personally care about the quality. If you only care about 'good enough' (and at bitrates of 20m and above even AMD encoder could be considered good enough) then the Nvidia encoder is only extremely minorly behind x264 in terms of efficiency.

"using x264 better than veryfast will consume so much CPU resources that the app you're capturing will suffer"

And I've already stated why this is a factor no matter which encoder you use but that said. Any recent i7 or i9 can record 1080p60 with presets much higher than 'very fast' without trouble. Ultimately it is dependent on whether you're hardware is capable in anything you want it to do. Software encoding is hard on the CPU when the CPU is already taxed and GPU encoding works the same for an already taxed GPU.

The short: If you're CPU constrained but never GPU constrained. Use Nvenc. You'll need a slightly higher bitrate but if that's not a concern at all. It's fantastic! If you find yourself with a strong CPU but sometimes GPU constricted with GPU accelerated compositing, using RTX, and gaming: x264 is good for offloading from the GPU but nothing is ever free on your computer.

If you ultimately want 'free'. Then you need to output to a dedicated encoder elsewhere.

Also to the previous poster. Nvenc on Ampere is the same as on Turing. There were no improvements made on that generation.

So to answer the question. The encoder performs most of its operations independent of the main GPU render pipeline components. Only making use of memory and some basic instructions. The difference between low and high end GPUs is most often in how many dedicated encoder cores they have. The better to render at higher resolutions without suffering. But since it requires power draw, memory, and a little attention by GPU -- it's not ENTIRELY free. But for users with a strong GPU where they rarely see it maxed. It may as well be.

Thanks for the reply. This is very on point. I dont really care about the quality. I believe like 20Mbps should be fine for me. Therefore, i will keep gtx 745. Thank you!
 

koala

Active Member
x264 is still considerably far ahead of Nvenc in terms of quality. (There is no debate on this topic. It's a fact. At best NVENC is only comparable at higher bitrates. A problem if you're concerned with either space or fully lossless recording) Only made irrelevant at much higher bitrates. If quality is paramount -- then x264 is still king.
I am sorry to disagree with this detail. There is (was) a debate on this topic. I made tests with x264, nvenc and quicksync, that proved what I said above: the quality of Pascal nvenc is about x264 veryfast. If you compare a video encoded with Pascal nvenc and the same video with x264 veryfast, you will observe no difference. It's the same quality. The comparison was done by computing the mse between some raw video and the encoded equivalent. Smaller mse are better quality, and same mse means same quality. The comparison thread: https://obsproject.com/forum/threads/comparison-of-x264-nvenc-quicksync-vce.57358/
That test is a bit old, only with Pascal. For newer nvenc generations, Nvidia did such tests themselves and published the results as part of their marketing material. I didn't extend that test myself, because I still don't have one of the newer RTX cards - simply too expensive. That GTX 1070 I bought 2016 right after it was released was one of the best investments in computer hardware I ever did.

If it comes to "nvenc is free (for resource usage)", it requires of course pci-express bandwidth to operate. However, this is 10 times less than the bandwidth demand for x264. With nvenc, the encoded (10 times smaller) frames are transferred, while for x264 the raw data is transferred. This usage is unavoidable, since video streaming or encoding cannot work if the video data isn't transferred to CPU memory. What's free that is the encoding process itself.
 
Top