Video Encoding Tested: AMD GPUs Still Lag Behind Nvidia, Intel (Updated)

75
YouTube YouTube
Watch On

The best graphics cards aren't just for playing games. Artificial intelligence training and inference, professional applications, video encoding and decoding can all benefit from having a better GPU. Yes, games still get the most attention, but we like to look at the other aspects as well. Here we're going to focus specifically on the video encoding performance and quality that you can expect from various generations of GPU.

Generally speaking, the video encoding/decoding blocks for each generation of GPU will all perform the same, with minor variance depending on clock speeds for the video block. We've checked the RTX 3090 Ti and RTX 3050 as an example — the fastest and slowest GPUs from Nvidia's Ampere RTX 30-series generation — and found effectively no difference. Thankfully, that leaves us with fewer GPUs to look at than would otherwise be required.

We'll test Nvidia's RTX 4090, RTX 3090, and GTX 1650 from team green, which covers the Ada Lovelace, Turing/Ampere (functionally identical), and Pascal-era video encoders. For Intel, we're looking at desktop GPUs, with the Arc A770 as well as the integrated UHD 770. AMD ends up with the widest spread, at least in terms of speeds, so we ended up testing the RX 7900 XTX, RX 6900 XT, RX 5700 XT, RX Vega 56, and RX 590. We also wanted to check how the GPU encoders fare against CPU-based software encoding, and for this we used the Core i9-12900K and Core i9-13900K.

Update 3/09/2013: The initial VMAF scores were calculated backward, meaning we used the "distorted" video as the "reference" video, and vice versa. This, needless to say, led to much higher VMAF scores than intended! We have since recalculated all of the VMAF scores. If you're wondering, that's super computationally intensive and takes about 30 minutes per GPU on a Core i9-13900K.

The good news is that our charts are corrected now. The bad news (besides the initially incorrect results being published) is that we killed off the initial torrent file and are updating with a new file that includes the logs from the new VMAF calculations. Also, scores got lower, so if you were thinking 4K 60 fps encodes at 16Mbps would basically match the original quality, that's only selectively the case (depending on the source video).

Latest Videos FromTom's Hardware
Jarred Walton
Senior Editor

Jarred Walton is a senior editor at Tom's Hardware focusing on everything GPU. He has been working as a tech journalist since 2004, writing for AnandTech, Maximum PC, and PC Gamer. From the first S3 Virge '3D decelerators' to today's GPUs, Jarred keeps up with all the latest graphics trends and is the one to ask about game performance.

  • PlaneInTheSky
    AMD expected ppl to buy expensive threadripper CPU for streaming. That was literally one of their promotion slides.

    But x86 CPU suck at parallelisation.

    So everyone went with Nvidia's NVENC and CUDA instead. Rightfully so.

    To this day, AMD sucks at GPU encoding and decoding. You're lucky if your whole encode isn't a corrupted file.
    Reply
  • -Fran-
    Thanks for the data!

    It would've been nice to add a CPU-based encoded video for reference and see how any of the fixed-function pipelines of the GPUs compare. EDIT: I'm dumb as always missing something in the graphs; there's the 13900K, so nice one!

    I've been using software AV1 with the CPU on "fast" and it beats anything on the GPU. It's kind of hilarious. And I "only" have a 5800X3D. Newer CPUs should perform even better; specially CPUs with even more cores.

    Video
    ID : 1
    Format : AV1
    Format/Info : AOMedia Video 1
    Format profile : Main@L4.1
    Codec ID : V_AV1
    Duration : 4 min 2 s
    Width : 1 920 pixels
    Height : 1 080 pixels
    Display aspect ratio : 16:9
    Frame rate mode : Constant
    Frame rate : 60.000 FPS
    Color space : YUV
    Chroma subsampling : 4:2:0
    Bit depth : 8 bits
    Default : Yes
    Forced : No
    Color range : Limited
    Color primaries : BT.709
    Transfer characteristics : BT.709
    Matrix coefficients : BT.709
    That's just the video general settings as described by the encoder. Also, I only use OBS as it is the practical and realistic software to use.

    Regards.
    Reply
  • springhalo
    Great article! Looks like you put a ton of work into making a fair comparison. I'm impressed the CPU encoding was able to hold its own against dedicated silicon, even if it uses much more power. Which CPU encoder did you use?

    I'm happy recording NVENC_HEVC 720p 20Mbps and re-encoding 20-second clips at 3Mbps for sharing on discord. Looking at these results seems like I can decrease that further to 10Mbps. Cheers!
    Reply
  • COCOViper
    Admin said:
    We tested multiple generations of AMD, Intel, and Nvidia GPUs to look at both encoding performance and quality. Here's how the various cards stack up.

    Video Encoding Tested: AMD GPUs Still Lag Behind Nvidia, Intel : Read more
    Would you also be willing to run an x264 encode at "very slow" preset, tune -film (or -grain) to see how quality compares? For those of us doing encodes not for streaming but for archive purposes, its always good to stay abreast of how all the encoders are performing from a quality first perspective.
    Reply
  • bit_user
    Thanks for the tests, @JarredWaltonGPU !

    Over all, closer than I would've expected. Nice to see AMD pull out some wins on 4k encoding performance, but it doesn't mean very much if the quality isn't there.

    Also, I'm pleased to see Intel doing so well. I suspected a significant number of early Intel GPU adopters were buying them for encoding.
    Reply
  • bit_user
    -Fran- said:
    It would've been nice to add a CPU-based encoded video for reference and see how any of the fixed-function pipelines of the GPUs compare. EDIT: I'm dumb as always missing something in the graphs; there's the 13900K, so nice one!
    Looking at the charts, I assumed the "CPU" was still using its Quicksync Video hardware encoder, but I see Jarred says it's using a pure software path. Very impressive!

    Would've been cool to use a Ryzen 7950X and remove all doubt about whether any hardware assist was at play, but I trust Jarred to know what he's doing.
    Reply
  • DavidLejdar
    Thank you for the effort! I don't stream, but I am doing a video series of 3D open-world games on YT for fun, recorded at 1440p. And a concern was to not have a file size too huge, while having the full-screen end result as crisp as the source screengrabs show or at least as in the screengrab below (from the video), without an easily visible blur as can be seen with the grass in the other screengrabs, which can also occur e.g. with the faces and clothing of NPCs.

    In that regard it is nice to see that I likely wouldn't be able to push the bitrate down much with another GPU (instead of the RX 6700 XT here) for the same end quality, as the video encoding quality seems to level out beyond a certain point for all the (newer) GPUs. But also good to know that hardware can make a visible difference when going with a lower bitrate, such as for the streaming.
    Reply
  • -Fran-
    bit_user said:
    Looking at the charts, I assumed the "CPU" was still using its Quicksync Video hardware encoder, but I see Jarred says it's using a pure software path. Very impressive!

    Would've been cool to use a Ryzen 7950X and remove all doubt about whether any hardware assist was at play, but I trust Jarred to know what he's doing.
    The 7950X does have an iGPU, but I wonder if it has the fixed-hardware encoder in it?

    The APUs all have the full fledged VCE built in at least, but I'm not 100% sure the iGPU in the Ry7K does. The Wiki does say they have VCN 3.1, so RDNA1 and 2 encoding engines.

    Regards.
    Reply
  • bit_user
    -Fran- said:
    The 7950X does have an iGPU, but I wonder if it has the fixed-hardware encoder in it?
    Not sure, but I assuming it's low-performance enough that we'd notice.

    Perhaps the best option would be to benchmark both the iGPU and pure software path. As long as they perform differently, we can be reasonably certain the software path really isn't using the iGPU.
    Reply
  • deesider
    DavidLejdar said:
    Thank you for the effort! I don't stream, but I am doing a video series of 3D open-world games on YT for fun, recorded at 1440p. And a concern was to not have a file size too huge, while having the full-screen end result as crisp as the source screengrabs show or at least as in the screengrab below (from the video), without an easily visible blur as can be seen with the grass in the other screengrabs, which can also occur e.g. with the faces and clothing of NPCs.

    In that regard it is nice to see that I likely wouldn't be able to push the bitrate down much with another GPU (instead of the RX 6700 XT here) for the same end quality, as the video encoding quality seems to level out beyond a certain point for all the (newer) GPUs. But also good to know that hardware can make a visible difference when going with a lower bitrate, such as for the streaming.
    When you upload to youtube the video is re-encoded. Given the tiny file size that results, the encoder that youtube uses is the best you can get. It's great for minimising file sizes for portability - like presentations. You just upload to youtube, wait for re-encoding, then download again without publishing the video.

    - But since it will always be re-encoded, for maximum quality, you are better off uploading the uncompressed video (if you are able).
    Reply