Bug Report Game capture not working when running obs on igpu

Dysp

New Member
Hi,

My setup is:
Intel(R) Core(TM) i7-8700K CPU @ 3.70GHz
Physical Memory: 16246MB
Windows Version: 10.0 Build 17134 (revision: 285; 64-bit
Adapter 1: Intel(R) UHD Graphics 630
Adapter 2: NVIDIA GeForce GTX 1050 Ti

In windows 10 configurations I can set the OBS Studio to be run with the GPU 0 (iGpu). Games that I'm trying to stream are running on GPU 1 (nvidia). Whenever I set the obs64.exe to be run on gpu 0 (iGpu), the obs fails to capture the rocket league when it's on full screen on my nvidia attached screen. I always get the black screen despite of trying all combinations of the game capture is offering. Please see below a picture illustration of one case. This capture is from second screen, while the game is full screen on first screen.

obs_fullscreen_2gpu.png


However if I use the OBS Studio's window capture and set my game to borderless windowed mode, the OBS (running on igpu) is actually able to capture the game (running on nvidia) from screen 1. In this configuration the stream is very good and very smooth, but the game in windowed mode looks like it's running at 60hz, while I want to run my game at 240fps for my 240hz monitor.

At this point I want to say that I'm not looking advice to drop my fps to 60. It's 2018 and it is very important to get the max fps I can get out of my system. Please let's leave it at that.

The real trouble in here is that while I want my nvidia 1050ti running at max, I have my whole iGpu and i7-8700K running completely idle. For some reason OBS always insist on using the "main" GPU power too, even if I use software of qsv encoder. I have also tried nvenc, qsv and software encoder with all possible simple and advanced setting and my streams are always laggy as the nvidia is always maxing out (g-sync keeping it good >200 in game). And like I said OBS always wants to use the gpu power even if I have completely idle i7 to do whatever. So I got the crazy idea to force OBS run on iGpu. In windowed mode streaming works great, but the game is not playable. With game capture I always get the black screen whatever I try. (And yes, the game capture works but the stream is laggy if I let the OBS.exe run on nvidia gpu).

Is it possible to fix and get the game capture going when running game in full screen on GPU 1, while the OBS is forced to run on iGpu (gpu 0). The windowed mode already does the trick, but causes bad playability. It would be very cool and work very well if we could offload the OBS needs to the idle iGpu. And please think this trough, this is not the same case as just using QSV. If I run the obs on nvidia and use QSV the OBS still wants to do stuff with the nvidia.

Also a one log file attached of an attempt to stream even if the preview already shows it won't work. Any help to make this work would be greatly appreciated. I bet many people are struggling with this issue these days as the primary GPU needs to be maxed out to give the best quality of game or reach the new monitor's 240hz. We have "monster machines" with completely idle parts in them, but the OBS insist on using the only part that needs to be maxed out on the task at hand.
 

Attachments

  • 2018-10-07 20-36-20.txt
    14.4 KB · Views: 16
Last edited:

Osiris

Active Member
Offloading rendering to a different GPU can have a significant impact on your system. You are better off just keeping the fps limited in the game to a point where the game doesn't use more then 90-95% of your GPU.
 

Dysp

New Member
Thanks for the reply. I appreciate it, even if I said it's not the answer I'm looking. Yes, it's the easy way, but also kind of brute force and it throws all the bucks out of the window, that I've used to get g-sync tech to get very smooth game play. Why play always at 150fps with 240Hz monitor? There is also a lot of variance in games, some levels of a game can be easy to run at 240fps, while another level will struggle to keep up with 150fps. Let alone to talk about difference between different games. I'd be "optimizing" my system for the worst case scenario to get consistent stream quality. Simply not what I want.

But I've made further progress. I don't know why it didn't work before, but now that I tried it again, I actually can get the picture with game capture using the "SLI/crossfire" mode. I actually do get decent game play and good stream quality with it. First of all my monitor is 1080p so I'm forcing the scaling to 1280x720 in game capture. However the game capture seems to have somekind of weird problem with the "Limit capture rate" -setting. If I limit the capture rate I get very good fps around 200 in my game, but I start to get micro lag in game play. Stream look very good. If I don't limit the capture rate I start getting very inconsistent fps between 120-200, but the game runs absolutely very smooth thanks to g-sync. The stream quality is also good. And one more weird thing is that when limiting the capture rate in game capture settings, the micro lag that I get in game seems to be connected to whatever I have set the fps in the main settings under picture. If I set the output fps to 30 I get the most microlag. If I set it to 60 I get slightly less micro lag in game. I even set it to 120 and streamed some test to twitch at @120 fps and the game runs with less micro lag, but of course the in game FPS drops every time I set the fps higher.

So why is the "limit capture rate" causing quite a lot of micro lag in game (not stream), when I have set to stream out with 30fps. I was thinking it should improve the overall performance. I think I'm getting close to good combo here.

Just to let you know I'm using software encoder with superfast and I have also tried to set process affinities so that game is using first 6 cores and OBS is using the other 6 cores. My cpu is still barely doing anything.
 

Dysp

New Member
@Osiris I think the warnings and dual GPU instructions are pretty much outdated. Please see the picture below. I'm perfectly able to run OBS with my iGPU while Fortnite is running on NVidia GPU and I don't even need to use the SLI mode in the game capture. But just for the sake of testing things out, I can stream Fortnite perfectly with and without SLI mode. The bus speeds etc are so fast these days that little memcopy isn't hurting me the least bit. I think OBS's dual GPU warnings etc are from the time when the setup was only limited to "lazy" laptops years ago. These days many powerful desktop setups have a very good secondary GPUs.

However the initial game I tried was Rocket League. I can now stream it with OBS on iGPU while rocket league on nvidia, but ONLY in SLI mode. I think the OBS's game capture has a bug with capturing DX9 game without SLI mode when using dual GPU's. That's the biggest difference I can think of between Fortnite and Rocket League. I would very much like to have Rocket League also working without the SLI mode, because I have to cap to 180fps in rocket league.

I'm pretty sure there is a huge user base with powerful GPU along with pretty powerful secondary GPU. The difference in stream quality is simply amazing, completely lag free, when you can run the processes on different GPUs. Like I said earlier it's really not fun to optimize your powerful setup on the worst case scenario to get constant smooth stream in every situation. By separating the processes the quality improvement is amazing while still getting the max out of your primary GPU in every situation.

Recap:
Captured game: Fortnite
Source: Game capture
OBS running on: GPU 0
Game running on: GPU 1
SLI/Crossfire mode: OFF
Gameplay: Perfect (nvidia maxed out)
Stream: Perfect (iGPU and cpu plenty of power left over)

Captured game: Fortnite
Source: Game capture
OBS running on: GPU 0
Game running on: GPU 1
SLI/Crossfire mode: ON
Gameplay: Perfect (nvidia maxed out)
Stream: Perfect (iGPU and cpu plenty of power left over)

Captured game: Rocket League
Source: Game capture
OBS running on: GPU 0
Game running on: GPU 1
SLI/Crossfire mode: OFF
Gameplay: Perfect
Stream: Black screen, NOT working

Captured game: Rocket League
Source: Game capture
OBS running on: GPU 0
Game running on: GPU 1
SLI/Crossfire mode: ON
Gameplay: Ok, but must cap at 180FPS in game
Stream: Good quality (iGPU and cpu plenty of power left over)



Fortnite_NoSLI_DualGPU.png
 
Top