Announcement

Collapse
No announcement yet.

Can AMD RX570 into 1080p60fps hardware video encoding?

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Can AMD RX570 into 1080p60fps hardware video encoding?

    Using VAAPI hardware encoding in OBS with a RX 570 works just fine at 1080p 30 fps. Going above that to 1080p 60 fps results in 40-50% frames dropped by the encoder - which basically means it's unusable. Thus; it would appear that the limits are 720p 60 fps and 1080p 30 fps for hardware video encoding on the RX 570 right now.

    Doing some searches for hardware specifications it appears that the RX 570 is supposed to be able to do 4k 30fps and 1080p 120 fps.

    It is interesting to note that this limit of 1080p30fps does not appear to be related to GPU load at all. Going above that results in 40-50% encoder-dropped frames regardless of OBS recording a static image or a game loading the GPU 100%. I also don't have any problem using CPU encoding with higher framerates and resolutions using the x264 on the superfast preset.

    I am using OBS 23.1, kernel 5.1.0-rc6, mesa 19.0.2, , libva 2.4.1. Anyone care to help me figure out if/how to break the 1080p30 barrier on this card?

  • #2
    Originally posted by debianxfce View Post
    I use the flv encoder with the RX570. Let the CPU do the encoding while recording gaming. Your graphics card have enough work to do with the display rendering.
    flv is a container not a codec. And there's really no reason to use that over mkv with OBS (not that it matters).

    The GPU has a dedicated encoding ASIC which doesn't (shouldn't) affect gaming performance much (apart from memory bandwidth use). It's not like GPU load is the bottleneck anyway, as I said, 1080p60 results in 40-50% encoder-dropped frames even if it's just recording a static image.

    I know CPU encoding is an option, but it's not ideal. 1440p60 on superfast does add enough CPU load to affect gaming performance in more CPU-intensive games. GPU encoding would be preferable. Buying a new GPU would be an option except that whatever the bottleneck is on my setup seems to be not the actual hardware. If anyone with another GPU cares to test and comment on that then feel free to do so. The My GPU should be able to encode at higher resolutions and framerates - so I'm not convinced I would get any better results if I were to buy say a Vega64 or a Radeon7.

    Comment


    • #3
      To check if this is a hardware limitation, try encoding/transcoding a H.264 video through ffmpeg or similar with VAAPI. If it gives you more than 60 fps, your problem is not the decoding hardware but elsewhere.

      Also software encoding gives seriously better results, so is decidedly preferable if it is possible. But you need a potent enough CPU for this (a Ryzen 1600 which is currently $80 at Microcenter should do).

      Comment


      • #4
        Originally posted by chithanh View Post
        To check if this is a hardware limitation, try encoding/transcoding a H.264 video through ffmpeg or similar with VAAPI. If it gives you more than 60 fps, your problem is not the decoding hardware but elsewhere.
        A simple test like
        Code:
        ffmpeg -i Apink.I.Am.So.Sick.Master.mov   -vaapi_device /dev/dri/renderD128 -vf 'format=nv12,hwupload' -c:v h264_vaapi encoding-test.mp4
        gives me 54fps on the RX 570 and 80fps on the 2400G which means the APU can into 1080p60fps and the RX570 can't. More interestingly, both can do much higher with HEVC where the RX 570 can into 108 fps at 1080p. Annoyingly OBS can't HEVC.

        Also software encoding gives seriously better results, so is decidedly preferable if it is possible. But you need a potent enough CPU for this (a Ryzen 1600 which is currently $80 at Microcenter should do).
        I have the Ryzen technology. While it's fine for just transcoding/encoding that's not helpful for OBS purposes when it's on the box used to create the content recorded. If you're recording your desktop for some reason (tutorial video? whatever) then it's obviously totally fine. If the CPU's at 99% on all them cores then that's a somewhat different situation where there's not really room for an additional encoding load. A dedicated Ryzen with a HDMI capture card would obviously work (since it would only be doing the encoding) but now we're talking an entirely separate dedicated computer just to do what a fixed function ASIC on a GPU can/should do.

        Looking into this, btw, it does appear that AMD hardware video encoding is pretty bad compared to NVidia's offerings (just looking at comparison footage on yt, which is compressed and not really the actual results but it gives an impression).
        Last edited by xiando; 25 April 2019, 02:07 PM.

        Comment


        • #5
          Originally posted by debianxfce View Post
          I have not seen 99% CPU utilization with the Ryzen 5 1600. This is what have when running the Heaven Benchmark
          That's a GPU benchmark. Of course your CPU is going to be mostly idle. Try some games. Some won't tax your CPU very much, some will.

          Anyway, I am curious as to what kind of results those of you who have a Vega 56 and 64 card gets when encoding a 1080p video with VAAPI. The 2400G is almost twice as fast on h264 as the RX 570 which makes me curious. It's not like that APU's anywhere near as good as Polaris for much else (ie games) which indicates that the Vega cards may be a lot better than Polaris for hardware encoding purposes.

          Comment


          • #6
            Originally posted by xiando View Post
            gives me 54fps on the RX 570 and 80fps on the 2400G which means the APU can into 1080p60fps and the RX570 can't. More interestingly, both can do much higher with HEVC where the RX 570 can into 108 fps at 1080p. Annoyingly OBS can't HEVC.
            Interesting, maybe the 570 fails to clock high enough when VCE is in use. Possibly forcing it into a high power state helps.

            Originally posted by xiando View Post
            I have the Ryzen technology. While it's fine for just transcoding/encoding that's not helpful for OBS purposes when it's on the box used to create the content recorded. If you're recording your desktop for some reason (tutorial video? whatever) then it's obviously totally fine. If the CPU's at 99% on all them cores then that's a somewhat different situation where there's not really room for an additional encoding load.
            Most games are GPU limited and typically use no more than 4-8 threads. That means the remaining threads should be available for encoding use.

            GamersNexus tested 4C/8T 7700K vs. 8C/16T 1700 and found that the 1700 always had enough free CPU cycles for software encoding, while the 7700K struggled.

            This new benchmark looks at the AMD R7 1700 vs. Intel i7-7700K performance while streaming, including stream output/framerate, drop frames, streamer-side FPS, power consumption, and some brief thermal data. -


            Comment


            • #7
              Originally posted by chithanh View Post
              Interesting, maybe the 570 fails to clock high enough when VCE is in use. Possibly forcing it into a high power state helps.
              I talked to some good folks on #radeon about this and others see a similar limitation on Polaris when using VAAPI/ffmpeg, the RX480 hits a 1080p 50 fps wall on encoding h264 video. The Vega can 104 fps. It's also interesting to note that both the RX570 and RX480 can do HEVC video at 1080p at around 95-100 fps. OBS doesn't do HEVC on VAAPI (yet?) so I guess it may be worth looking into that. It seems trivial since it already does VAAPI/H264. The reason it doesn't have that feature is probably just streaming-services not having that feature.

              As for using the CPU.. As I said, it really depends on the game and resolution. Something like SuperTuxKart has a barely measurable CPU-load, it's almost idle. A few others I've tried result in a combined (game+encoding) load near/at 100% and that's not good.

              Comment


              • #8
                i'm facing the same conundrum
                I have this Youtube channel for my Dota 2 gameplay videos and my R9380 is able to recording in 1080p 60fps. Sadly the new RX570 cannot.
                Did you by any chance find a work around for this mate?

                Comment

                Working...
                X