CPU/GPU/Crossfire and streaming BF1

Ferkin

Prominent
May 2, 2017
1
0
510
Currently i stream on a daily or very regular basis, i play BF1 but i cannot stream it, currently i use 1 card on high settings and it runs beautiful at 70+ fps average using DX11, now if i enable crossfire i can still get a decent fps and i would like to stream the game, even if i have to use LOW 1080p settings, now, my 2 cards are both set at the exact same speeds and the CPU is never using 70% when streaming 99% of other games, but as soon as i try to play BF1 its lags and yet the CPU is still not using much over 60%, the fps drops from 70+ to 10 every couple of seconds...Now im using OBS and have tried AMD ReLive/Xsplit with the same results....What is dragging the fps down so much, anyone have any ideas, its only BF1 i cant stream, i have tried 100's of different combinations from 720p/900p/1080p, lowest settings, lowest stream settings, different x264/H264 settings, lowest bitrates everything, now im lost and need help...My spec below, any help would be appreciated.

MOTHERBOARD: Asus Sabertooth 990FX Rev 2.0

CPU: Amd FX8350 4.3Ghz O.C. (stock 4.Ghz)

CPU Cooler: Corsair H80 liquid cooler.

GPU 1: Gigabyte R9 270 core clock 1050Mhz memory clock 1500Mhz

GPU 2 Sapphire R9 270x core clock 1050Mhz memory clock 1500Mhz

MEMORY: 16gb ddr3 1600mhz Corsair Vengeance Pro series

SSD: Kingston V300 120gb

SSHD: Seagate 1tb Hybrid drive 2.5"

PSU:Rosewill 850w capstone 80+ gold series
 
Solution
1) Yes, it's likely the CPU.
It's important to understand that "60% usage" of the CPU can still mean a CPU bottleneck. A game has a main THREAD which can only run on one core at a time, then branch threads which can use other cores. Once that main core thread can't run any faster a bottleneck exists even though some of the cores sit unused.

2) GPU encoding:
It sounds like this isn't working. Perhaps it's not possible with CROSSFIRE, not sure. I don't use AMD but try to figure out how to do GPU encoding.

Is it the CPU?
Yes.

GPU encoding doesn't add much to the CPU cycles, and it's a dedicated video hardware so has minimal or no effect on the GPU itself. Basically, the created video stream from the GPU is split off to go to a dedicated...
1) Yes, it's likely the CPU.
It's important to understand that "60% usage" of the CPU can still mean a CPU bottleneck. A game has a main THREAD which can only run on one core at a time, then branch threads which can use other cores. Once that main core thread can't run any faster a bottleneck exists even though some of the cores sit unused.

2) GPU encoding:
It sounds like this isn't working. Perhaps it's not possible with CROSSFIRE, not sure. I don't use AMD but try to figure out how to do GPU encoding.

Is it the CPU?
Yes.

GPU encoding doesn't add much to the CPU cycles, and it's a dedicated video hardware so has minimal or no effect on the GPU itself. Basically, the created video stream from the GPU is split off to go to a dedicated encoder which turns that into the proper type of video for streaming. The CPU is involved slightly with that, and for for actually streaming but it should be minimal.

CPU encoding uses the CPU itself to crunch all the numbers and turn the sampled video into a video stream. Try converting a video using Handbrake. It's very intensive (which is why AMD is promoting CPU-based encoding as it demonstrates the benefit of an 8-core Ryzen CPU vs 4-core Intel).
 
Solution
1) AMD VCE is the hardware encoding setting you want (see OBS settings):
https://github.com/jp9000/obs-studio/wiki/OBS-Studio-Overview

"For Recording:

Set your Recording Path
Record using a preset (Same as stream, High Quality, Indistinguishable Quality, and Lossless) and a different Encoder (if available)
Select a Hardware Encoder if available (only if you use a different preset than "same as stream" and if a Hardware Encoder is available)[QuickSync, NVENC or AMD VCE]
Encoder option will not show up until you select a recording quality other than Same as stream"

2) *the quality settings (bitrate etc) will affect performance, especially if still using the CPU as the encoder (not AMD VCE's hardware). Also, if the bitrate is too high you may have issues UPLOADING the video in real-time.

When you say "stream" I assume you mean uploading to the internet. If you just mean recording to the computer then the issue of upload bandwidth doesn't matter.