Bug Report OBS Studio NVENC gets all fubared when using either SLI or SGSSAA, but not GFE NVENC

LinkDrive

New Member
For reference, my specs are i7-5820k @ 4.2GHz and SLI 1080Ti @ stock

I'm hitting a bit of a wall and grasping at straws hoping someone has a solution out there. I preference OBS for streaming due to its flexibility over GFE, and the minimal overhead NVENC provides over H264 is quite nice. However, I've noticed that using OBS with NVENC and SLI is enabled, my in game frame rates tank, and depending on the game (only PUBG so far), artifacts will show in game. Also, when using driver enabled SGSSAA with OBS NVENC, my in game frames are absolutely unplayable even with SLI disabled.

To be clear, this is with multi adapter compatibility enabled, and these issues are nonexistent when using H264. The issues are also nonexistent when using GFE to stream or record. It almost seems like the issue is caused by OBS's implementation of NVENC.

In games with SLI enabled and with OBS set to NVENC, my FPS tanks by nearly 2/3rds (22 FPS in Skyrim, 50 FPS in Warframe, etc). Even if I'm not recording or streaming, simply having OBS open with NVENC selected causes the issue. What's worse, killing OBS doesn't release the frame rate. Instead, I have to close OBS and restart the game for the frame rates to normalize. The same thing happens with driver enabled SGSSAA, but the frame rates drop even harder regardless if SLI is enabled or not.

The artifacting issue is a little more straight forward. The artifacts only show while recording/streaming with OBS NVENC, and immediately go away when the recording/streaming is stopped.

For the time being, I'm using H264 in SLI enabled games, or games that is using SGSSAA. Fortunately, my CPU is pretty fast and I'm able to hit 900p 60FPS across the board. However, the performance benefit of NVENC is hard to ignore.

Thoughts?
 

Osiris

Active Member
OBS can only use one GPU at a time, so it will only get half of the frames, this has nothing to do with NVENC. And you also need to enable vsync to avoid the game using all of the GPU's power, which leaves nothing for OBS.

Also post a log so we can better see what is going on.
 

LinkDrive

New Member
OBS only uses one GPU if multi adapter compatibility isn't enabled. In my case however, all of my SLI profiles in OBS are set to multi adapter compatible. Like I said in my original post, h264 works fine, and by fine I mean captures all frames without issue.

Also, I'm not talking about the output running at 1/3rd FPS with NVENC selected, I'm talking about in game FPS dropping to 1/3rd with NVENC selected. It doesn't matter if OBS is recording/streaming or not, the hit is still there.

I don't have access to my logs at the time. Currently at work. I'll upload a log when I get home.
 

R1CH

Forum Admin
Developer
SLI in general is extremely glitchy and not recommended at all for serious streaming.
 

Osiris

Active Member
Also, I'm not talking about the output running at 1/3rd FPS with NVENC selected, I'm talking about in game FPS dropping to 1/3rd with NVENC selected. It doesn't matter if OBS is recording/streaming or not, the hit is still there.

That's where the vsync part comes in, also multi-adapter compatibility increases the CPU usage.
 

LinkDrive

New Member
SLI in general is extremely glitchy and not recommended at all for serious streaming.

What about using SGSSAA? I'm curious to know why my in game FPS goes down to 2 with SGSSAA and NVENC enabled (this happens even with SLI disabled*), but not with h264.
 

LinkDrive

New Member
That's where the vsync part comes in, also multi-adapter compatibility increases the CPU usage.

The CPU usage really isn't that big of a deal. Even with multi adapter enabled and using h264 with the faster preset at 900p 60 FPS, my 5820k is only hitting around 40% usage.
 

LinkDrive

New Member
Here's the log

22:32:05.451: CPU Name: Intel(R) Core(TM) i7-5820K CPU @ 3.30GHz
22:32:05.451: CPU Speed: 3299MHz
22:32:05.451: Physical Cores: 6, Logical Cores: 12
22:32:05.451: Physical Memory: 16309MB Total, 10039MB Free
22:32:05.451: Windows Version: 10.0 Build 15063 (revision: 726; 64-bit)
22:32:05.451: Running as administrator: false
22:32:05.451: Aero is Enabled (Aero is always on for windows 8 and above)
22:32:05.451: Windows 10 Gaming Features:
22:32:05.451: Game Bar: Off
22:32:05.451: Game DVR Allowed: Yes
22:32:05.451: Game DVR: Off
22:32:05.451: Game DVR Background Recording: Off
22:32:05.452: Game Mode: Off
22:32:05.452: Portable mode: false
22:32:05.461: OBS 20.1.1 (64bit, windows)
22:32:05.461: ---------------------------------
22:32:05.462: ---------------------------------
22:32:05.462: audio settings reset:
22:32:05.462: samples per sec: 48000
22:32:05.462: speakers: 2
22:32:05.463: ---------------------------------
22:32:05.463: Initializing D3D11...
22:32:05.463: Available Video Adapters:
22:32:05.463: Adapter 1: NVIDIA GeForce GTX 1080 Ti
22:32:05.463: Dedicated VRAM: 2981101568
22:32:05.463: Shared VRAM: 4255748096
22:32:05.463: output 1: pos={0, 0}, size={2560, 1440}, attached=true
22:32:05.463: output 2: pos={-3840, 0}, size={3840, 2160}, attached=true
22:32:05.465: Loading up D3D11 on adapter NVIDIA GeForce GTX 1080 Ti (0)
22:32:05.494: D3D11 loaded successfully, feature level used: 45056
22:32:06.078: ---------------------------------
22:32:06.078: video settings reset:
22:32:06.078: base resolution: 2560x1440
22:32:06.078: output resolution: 1920x1080
22:32:06.078: downscale filter: Bicubic
22:32:06.078: fps: 60/1
22:32:06.078: format: NV12
22:32:06.081: Audio monitoring device:
22:32:06.081: name: Default
22:32:06.081: id: default
22:32:06.081: ---------------------------------
22:32:06.082: Required module function 'obs_module_load' in module '../../obs-plugins/64bit/chrome_elf.dll' not found, loading of module failed
22:32:06.085: [CoreAudio encoder]: Adding CoreAudio AAC encoder
22:32:06.086: [AMF] Encountered Exception during AMF initialization: Unable to load 'amfrt64.dll', error code 126.
22:32:06.086: Failed to initialize module 'enc-amf.dll'
22:32:06.091: Required module function 'obs_module_load' in module '../../obs-plugins/64bit/libcef.dll' not found, loading of module failed
22:32:06.091: Required module function 'obs_module_load' in module '../../obs-plugins/64bit/libEGL.dll' not found, loading of module failed
22:32:06.091: Required module function 'obs_module_load' in module '../../obs-plugins/64bit/libGLESv2.dll' not found, loading of module failed
22:32:06.091: Failed to load 'en-US' text for module: 'obs-browser.dll'
22:32:06.091: [browser_source: 'Version: 1.29.0']
22:32:06.093: NVENC supported
22:32:06.321: Couldn't find VLC installation, VLC video source disabled
22:32:06.324: No blackmagic support
22:32:06.402: ---------------------------------
22:32:06.402: Loaded Modules:
22:32:06.402: win-wasapi.dll
22:32:06.402: win-mf.dll
22:32:06.402: win-dshow.dll
22:32:06.402: win-decklink.dll
22:32:06.402: win-capture.dll
22:32:06.402: vlc-video.dll
22:32:06.402: text-freetype2.dll
22:32:06.402: rtmp-services.dll
22:32:06.402: obs-x264.dll
22:32:06.402: obs-vst.dll
22:32:06.402: obs-transitions.dll
22:32:06.402: obs-text.dll
22:32:06.402: obs-qsv11.dll
22:32:06.402: obs-outputs.dll
22:32:06.402: obs-filters.dll
22:32:06.402: obs-ffmpeg.dll
22:32:06.402: obs-browser.dll
22:32:06.402: image-source.dll
22:32:06.402: frontend-tools.dll
22:32:06.402: enc-amf.dll
22:32:06.402: coreaudio-encoder.dll
22:32:06.402: ---------------------------------
22:32:06.402: ==== Startup complete ===============================================
22:32:06.408: All scene data cleared
22:32:06.408: ------------------------------------------------
22:32:06.429: WASAPI: Device 'Speakers (Sound Blaster Z)' initialized
22:32:06.437: WASAPI: Device 'Microphone (Yeti Stereo Microphone)' initialized
22:32:06.477: adding 21 milliseconds of audio buffering, total audio buffering is now 21 milliseconds
22:32:06.601: adding 21 milliseconds of audio buffering, total audio buffering is now 42 milliseconds
22:32:07.051: Switched to scene 'Scene'
22:32:07.051: ------------------------------------------------
22:32:07.051: Loaded scenes:
22:32:07.051: - scene 'Scene':
22:32:07.051: - source: 'Game Capture' (game_capture)
22:32:07.051: ------------------------------------------------
22:32:32.247: [game-capture: 'Game Capture'] attempting to hook fullscreen process: Warframe.x64.exe
22:32:32.249: [game-capture: 'Game Capture'] using helper (compatibility hook)
22:32:32.250: [game-capture: 'Game Capture'] hook not loaded yet, retrying..
22:32:35.264: [game-capture: 'Game Capture'] attempting to hook fullscreen process: Warframe.x64.exe
22:32:35.266: [game-capture: 'Game Capture'] init_hook_info: user is forcing shared memory (compatibility mode)
22:32:35.273: [game-capture: 'Game Capture'] d3d9 memory capture successful
22:32:35.281: [game-capture: 'Game Capture'] memory capture successful
22:32:58.849: ==== Shutting down ==================================================
22:32:58.859: Switched to scene '(null)'
22:32:58.860: [game-capture: 'Game Capture'] capture stopped
22:32:58.861: WASAPI: Device 'Speakers (Sound Blaster Z)' Terminated
22:32:58.864: WASAPI: Device 'Microphone (Yeti Stereo Microphone)' Terminated
22:32:58.868: All scene data cleared
22:32:58.868: ------------------------------------------------
22:32:58.917: Freeing OBS context data
22:32:58.979: == Profiler Results =============================
22:32:58.979: run_program_init: 1704.89 ms
22:32:58.979: ┣OBSApp::AppInit: 9.01 ms
22:32:58.979: ┃ ┗OBSApp::InitLocale: 0.844 ms
22:32:58.979: ┗OBSApp::OBSInit: 1671.02 ms
22:32:58.979: ┣obs_startup: 1.121 ms
22:32:58.979: ┗OBSBasic::OBSInit: 1650.51 ms
22:32:58.979: ┣OBSBasic::InitBasicConfig: 0.293 ms
22:32:58.979: ┣OBSBasic::ResetAudio: 0.069 ms
22:32:58.979: ┣OBSBasic::ResetVideo: 619.125 ms
22:32:58.979: ┣OBSBasic::InitOBSCallbacks: 0.003 ms
22:32:58.979: ┣OBSBasic::InitHotkeys: 0.037 ms
22:32:58.979: ┣obs_load_all_modules: 320.919 ms
22:32:58.979: ┃ ┣obs_init_module(coreaudio-encoder.dll): 2.97 ms
22:32:58.979: ┃ ┣obs_init_module(enc-amf.dll): 0.275 ms
22:32:58.979: ┃ ┣obs_init_module(frontend-tools.dll): 1.208 ms
22:32:58.979: ┃ ┣obs_init_module(image-source.dll): 0.003 ms
22:32:58.979: ┃ ┣obs_init_module(obs-browser.dll): 0.042 ms
22:32:58.979: ┃ ┣obs_init_module(obs-ffmpeg.dll): 0.45 ms
22:32:58.979: ┃ ┣obs_init_module(obs-filters.dll): 0.011 ms
22:32:58.979: ┃ ┣obs_init_module(obs-outputs.dll): 0.004 ms
22:32:58.979: ┃ ┣obs_init_module(obs-qsv11.dll): 223.084 ms
22:32:58.979: ┃ ┣obs_init_module(obs-text.dll): 0.279 ms
22:32:58.979: ┃ ┣obs_init_module(obs-transitions.dll): 0.004 ms
22:32:58.979: ┃ ┣obs_init_module(obs-vst.dll): 0.001 ms
22:32:58.979: ┃ ┣obs_init_module(obs-x264.dll): 0.002 ms
22:32:58.979: ┃ ┣obs_init_module(rtmp-services.dll): 0.622 ms
22:32:58.979: ┃ ┣obs_init_module(text-freetype2.dll): 0.027 ms
22:32:58.979: ┃ ┣obs_init_module(vlc-video.dll): 0.026 ms
22:32:58.979: ┃ ┣obs_init_module(win-capture.dll): 0.037 ms
22:32:58.979: ┃ ┣obs_init_module(win-decklink.dll): 2.016 ms
22:32:58.979: ┃ ┣obs_init_module(win-dshow.dll): 0.714 ms
22:32:58.979: ┃ ┣obs_init_module(win-mf.dll): 74.703 ms
22:32:58.979: ┃ ┣obs_init_module(win-wasapi.dll): 0.004 ms
22:32:58.979: ┃ ┗reset_win32_symbol_paths: 0.084 ms
22:32:58.979: ┣OBSBasic::ResetOutputs: 4.932 ms
22:32:58.979: ┣OBSBasic::CreateHotkeys: 0.156 ms
22:32:58.979: ┣OBSBasic::InitService: 0.735 ms
22:32:58.979: ┣OBSBasic::InitPrimitives: 0.268 ms
22:32:58.979: ┗OBSBasic::Load: 643.241 ms
22:32:58.979: obs_hotkey_thread(25 ms): min=0.002 ms, median=0.004 ms, max=291.66 ms, 99th percentile=0.077 ms, 99.8568% below 25 ms
22:32:58.979: audio_thread(Audio): min=0 ms, median=0.04 ms, max=0.225 ms, 99th percentile=0.098 ms
22:32:58.979: obs_video_thread(16.6667 ms): min=0.552 ms, median=0.835 ms, max=602.833 ms, 99th percentile=6.106 ms, 99.51% below 16.667 ms
22:32:58.979: ┣tick_sources: min=0.001 ms, median=0.008 ms, max=602.156 ms, 99th percentile=2.228 ms
22:32:58.979: ┣render_displays: min=0 ms, median=0.001 ms, max=11.795 ms, 99th percentile=0.087 ms
22:32:58.979: ┗output_frame: min=0.529 ms, median=0.628 ms, max=289.877 ms, 99th percentile=3.358 ms
22:32:58.979: ┣gs_context(video->graphics): min=0.117 ms, median=0.157 ms, max=289.289 ms, 99th percentile=2.981 ms
22:32:58.979: ┃ ┣render_video: min=0.016 ms, median=0.052 ms, max=0.236 ms, 99th percentile=0.099 ms
22:32:58.979: ┃ ┃ ┣render_main_texture: min=0.005 ms, median=0.01 ms, max=0.13 ms, 99th percentile=0.042 ms
22:32:58.979: ┃ ┃ ┣render_output_texture: min=0.002 ms, median=0.021 ms, max=0.111 ms, 99th percentile=0.038 ms
22:32:58.979: ┃ ┃ ┣render_convert_texture: min=0.001 ms, median=0.009 ms, max=0.189 ms, 99th percentile=0.021 ms
22:32:58.979: ┃ ┃ ┗stage_output_texture: min=0 ms, median=0.003 ms, max=0.035 ms, 99th percentile=0.01 ms
22:32:58.979: ┃ ┣download_frame: min=0 ms, median=0.003 ms, max=229.667 ms, 99th percentile=2.794 ms
22:32:58.979: ┃ ┗gs_flush: min=0.024 ms, median=0.101 ms, max=289.244 ms, 99th percentile=0.311 ms
22:32:58.979: ┗output_video_data: min=0.368 ms, median=0.46 ms, max=1.57 ms, 99th percentile=0.584 ms
22:32:58.979: video_thread(video): min=0 ms, median=0.001 ms, max=0.004 ms, 99th percentile=0.002 ms
22:32:58.979: =================================================
22:32:58.979: == Profiler Time Between Calls ==================
22:32:58.979: obs_hotkey_thread(25 ms): min=24.947 ms, median=25.047 ms, max=316.361 ms, 82.6648% within ±2% of 25 ms (0% lower, 17.3352% higher)
22:32:58.979: obs_video_thread(16.6667 ms): min=5.355 ms, median=16.667 ms, max=602.842 ms, 99.085% within ±2% of 16.667 ms (0.457516% lower, 0.457516% higher)
22:32:58.979: =================================================
22:32:58.995: Number of memory leaks: 1

Here you can see the exact behavior.
Notice how simply having OBS open tanks the frame rate without streaming or recording. Once this happens, closing OBS isn't enough to fix the frames. The entire game needs to be restarted. This is happening on all games, some with higher degrees of severity than others.

 

sam686

Member
That video, at 0:44, with GPU usage being (gpu)1=60% 2=28% and then 1=34% 2=62% shows that that there may be something very wrong with SLI.

Temperatures of both GPU is dropping a lot with poor frame rate, it might be the graphics card downclocking something severely low while the GPU usage remain high. GPU have multiple clocks: core, RAM, PCI-E bus, and so on.
 

LinkDrive

New Member
That video, at 0:44, with GPU usage being (gpu)1=60% 2=28% and then 1=34% 2=62% shows that that there may be something very wrong with SLI.

Temperatures of both GPU is dropping a lot with poor frame rate, it might be the graphics card downclocking something severely low while the GPU usage remain high. GPU have multiple clocks: core, RAM, PCI-E bus, and so on.

What's probably going on is the cards are entering a 2d accelerated mode. Those are the exact same clocks I get when I play a flash game, which you can see below.

d3QdegH.png

What's odd is that this only happens with NVENC selected. This doesn't happen with H264, and Shadowplay both captures and records without issue as well. It certainly seems like it's something with the way OBS handles NVENC.
 
The core clocks stay the same, possibly memory clock dropping?

Does the same occur if you are doing Desktop capture instead of directly hooking into the game via Game Capture?
 

LinkDrive

New Member
The core clocks stay the same, possibly memory clock dropping?

Does the same occur if you are doing Desktop capture instead of directly hooking into the game via Game Capture?

Display capture doesn't have multi adapter compatibility, so no, it doesn't happen.

I just noticed something REALLY weird though. If I have OBS running with multi adapter disabled, launch a game, tab out and enable multi adapter, the FPS doesn't drop at all.

You can see the workaround here

Just to make sure it was capturing correctly, I went ahead and ran a quick record. Sure enough, it's capturing from both cards without issues using the workaround and NVENC.

You can see SLI + NVENC working flawlessly here
https://www.youtube.com/watch?v=fmddl6P3MQo

As it turns out, the original issue I posted about also happens even with x264, so I was wrong that it doesn't just occur with NVENC enabled. I didn't realize it at the time because when I was testing it, OBS was already running with multi adapter disabled. That's how I found out about this "fix".

Log attached below
00:54:27.684: CPU Name: Intel(R) Core(TM) i7-5820K CPU @ 3.30GHz
00:54:27.684: CPU Speed: 3299MHz
00:54:27.684: Physical Cores: 6, Logical Cores: 12
00:54:27.684: Physical Memory: 16309MB Total, 11786MB Free
00:54:27.684: Windows Version: 10.0 Build 15063 (revision: 726; 64-bit)
00:54:27.684: Running as administrator: false
00:54:27.684: Aero is Enabled (Aero is always on for windows 8 and above)
00:54:27.684: Windows 10 Gaming Features:
00:54:27.684: Game Bar: Off
00:54:27.684: Game DVR Allowed: Yes
00:54:27.684: Game DVR: Off
00:54:27.684: Game DVR Background Recording: Off
00:54:27.684: Game Mode: Off
00:54:27.684: Portable mode: false
00:54:27.696: OBS 20.1.1 (64bit, windows)
00:54:27.696: ---------------------------------
00:54:27.696: ---------------------------------
00:54:27.696: audio settings reset:
00:54:27.696: samples per sec: 48000
00:54:27.696: speakers: 2
00:54:27.697: ---------------------------------
00:54:27.697: Initializing D3D11...
00:54:27.697: Available Video Adapters:
00:54:27.698: Adapter 1: NVIDIA GeForce GTX 1080 Ti
00:54:27.698: Dedicated VRAM: 2981101568
00:54:27.698: Shared VRAM: 4255748096
00:54:27.698: output 1: pos={0, 0}, size={2560, 1440}, attached=true
00:54:27.698: output 2: pos={-3840, 0}, size={3840, 2160}, attached=true
00:54:27.699: Loading up D3D11 on adapter NVIDIA GeForce GTX 1080 Ti (0)
00:54:27.737: D3D11 loaded successfully, feature level used: 45056
00:54:28.346: ---------------------------------
00:54:28.346: video settings reset:
00:54:28.346: base resolution: 2560x1440
00:54:28.346: output resolution: 1920x1080
00:54:28.346: downscale filter: Bicubic
00:54:28.346: fps: 60/1
00:54:28.346: format: NV12
00:54:28.348: Audio monitoring device:
00:54:28.348: name: Default
00:54:28.348: id: default
00:54:28.348: ---------------------------------
00:54:28.349: Required module function 'obs_module_load' in module '../../obs-plugins/64bit/chrome_elf.dll' not found, loading of module failed
00:54:28.352: [CoreAudio encoder]: Adding CoreAudio AAC encoder
00:54:28.353: [AMF] Encountered Exception during AMF initialization: Unable to load 'amfrt64.dll', error code 126.
00:54:28.353: Failed to initialize module 'enc-amf.dll'
00:54:28.358: Required module function 'obs_module_load' in module '../../obs-plugins/64bit/libcef.dll' not found, loading of module failed
00:54:28.358: Required module function 'obs_module_load' in module '../../obs-plugins/64bit/libEGL.dll' not found, loading of module failed
00:54:28.358: Required module function 'obs_module_load' in module '../../obs-plugins/64bit/libGLESv2.dll' not found, loading of module failed
00:54:28.359: Failed to load 'en-US' text for module: 'obs-browser.dll'
00:54:28.359: [browser_source: 'Version: 1.29.0']
00:54:28.360: NVENC supported
00:54:28.417: Couldn't find VLC installation, VLC video source disabled
00:54:28.420: No blackmagic support
00:54:28.485: ---------------------------------
00:54:28.485: Loaded Modules:
00:54:28.485: win-wasapi.dll
00:54:28.485: win-mf.dll
00:54:28.485: win-dshow.dll
00:54:28.485: win-decklink.dll
00:54:28.485: win-capture.dll
00:54:28.485: vlc-video.dll
00:54:28.485: text-freetype2.dll
00:54:28.485: rtmp-services.dll
00:54:28.485: obs-x264.dll
00:54:28.485: obs-vst.dll
00:54:28.485: obs-transitions.dll
00:54:28.485: obs-text.dll
00:54:28.485: obs-qsv11.dll
00:54:28.485: obs-outputs.dll
00:54:28.485: obs-filters.dll
00:54:28.485: obs-ffmpeg.dll
00:54:28.485: obs-browser.dll
00:54:28.485: image-source.dll
00:54:28.485: frontend-tools.dll
00:54:28.485: enc-amf.dll
00:54:28.485: coreaudio-encoder.dll
00:54:28.485: ---------------------------------
00:54:28.485: ==== Startup complete ===============================================
00:54:28.491: All scene data cleared
00:54:28.491: ------------------------------------------------
00:54:28.517: WASAPI: Device 'Speakers (Sound Blaster Z)' initialized
00:54:28.521: WASAPI: Device 'Microphone (Yeti Stereo Microphone)' initialized
00:54:28.562: adding 42 milliseconds of audio buffering, total audio buffering is now 42 milliseconds
00:54:29.126: Switched to scene 'Scene'
00:54:29.126: ------------------------------------------------
00:54:29.126: Loaded scenes:
00:54:29.126: - scene 'Scene':
00:54:29.126: - source: 'Game Capture' (game_capture)
00:54:29.126: ------------------------------------------------
00:54:48.265: [game-capture: 'Game Capture'] attempting to hook fullscreen process: Warframe.x64.exe
00:54:48.267: [game-capture: 'Game Capture'] using helper (compatibility hook)
00:54:48.268: [game-capture: 'Game Capture'] hook not loaded yet, retrying..
00:54:51.281: [game-capture: 'Game Capture'] attempting to hook fullscreen process: Warframe.x64.exe
00:54:51.360: [game-capture: 'Game Capture'] d3d9 shared texture capture successful
00:54:51.365: [game-capture: 'Game Capture'] shared texture capture successful
00:55:10.682: [game-capture: 'Game Capture'] capture stopped
00:55:14.714: [game-capture: 'Game Capture'] attempting to hook fullscreen process: Warframe.x64.exe
00:55:14.716: [game-capture: 'Game Capture'] init_hook_info: user is forcing shared memory (compatibility mode)
00:55:14.731: [game-capture: 'Game Capture'] shared texture capture successful
00:55:31.153: Starting recording due to hotkey
00:55:31.154: ---------------------------------
00:55:31.154: [NVENC encoder: 'simple_h264_stream'] settings:
00:55:31.154: rate_control: CBR
00:55:31.154: bitrate: 6000
00:55:31.154: cqp: 0
00:55:31.154: keyint: 120
00:55:31.154: preset: default
00:55:31.154: profile: main
00:55:31.154: level: auto
00:55:31.154: width: 1920
00:55:31.154: height: 1080
00:55:31.154: 2-pass: true
00:55:31.154: b-frames: 2
00:55:31.154: GPU: 0
00:55:31.154:
00:55:31.544: [CoreAudio AAC: 'simple_aac']: settings:
00:55:31.544: mode: AAC
00:55:31.544: bitrate: 160
00:55:31.544: sample rate: 48000
00:55:31.544: cbr: on
00:55:31.544: output buffer: 1536
00:55:31.548: ==== Recording Start ===============================================
00:55:31.548: [ffmpeg muxer: 'simple_file_output'] Writing file 'G:/2017-11-16 00-55-31.flv'...
00:55:46.799: Stopping recording due to hotkey
00:55:47.081: [ffmpeg muxer: 'simple_file_output'] Output of file 'G:/2017-11-16 00-55-31.flv' stopped
00:55:47.081: Output 'simple_file_output': stopping
00:55:47.081: Output 'simple_file_output': Total frames output: 919
00:55:47.081: Output 'simple_file_output': Total drawn frames: 931
00:55:47.081: ==== Recording Stop ================================================
00:55:50.665: [game-capture: 'Game Capture'] capture window no longer exists, terminating capture
00:55:50.665: [game-capture: 'Game Capture'] capture stopped
00:55:56.152: ==== Shutting down ==================================================
00:55:56.160: Switched to scene '(null)'
00:55:56.160: WASAPI: Device 'Speakers (Sound Blaster Z)' Terminated
00:55:56.218: WASAPI: Device 'Microphone (Yeti Stereo Microphone)' Terminated
00:55:56.219: All scene data cleared
00:55:56.219: ------------------------------------------------
00:55:56.253: Freeing OBS context data
00:55:56.301: == Profiler Results =============================
00:55:56.301: run_program_init: 1531.26 ms
00:55:56.301: ┣OBSApp::AppInit: 10.148 ms
00:55:56.301: ┃ ┗OBSApp::InitLocale: 0.908 ms
00:55:56.301: ┗OBSApp::OBSInit: 1489.36 ms
00:55:56.301: ┣obs_startup: 1.122 ms
00:55:56.301: ┗OBSBasic::OBSInit: 1466.55 ms
00:55:56.301: ┣OBSBasic::InitBasicConfig: 0.294 ms
00:55:56.301: ┣OBSBasic::ResetAudio: 0.075 ms
00:55:56.301: ┣OBSBasic::ResetVideo: 651.956 ms
00:55:56.301: ┣OBSBasic::InitOBSCallbacks: 0.004 ms
00:55:56.301: ┣OBSBasic::InitHotkeys: 0.034 ms
00:55:56.301: ┣obs_load_all_modules: 137.31 ms
00:55:56.301: ┃ ┣obs_init_module(coreaudio-encoder.dll): 3.058 ms
00:55:56.301: ┃ ┣obs_init_module(enc-amf.dll): 0.276 ms
00:55:56.301: ┃ ┣obs_init_module(frontend-tools.dll): 1.134 ms
00:55:56.301: ┃ ┣obs_init_module(image-source.dll): 0.003 ms
00:55:56.301: ┃ ┣obs_init_module(obs-browser.dll): 0.04 ms
00:55:56.301: ┃ ┣obs_init_module(obs-ffmpeg.dll): 0.45 ms
00:55:56.301: ┃ ┣obs_init_module(obs-filters.dll): 0.011 ms
00:55:56.301: ┃ ┣obs_init_module(obs-outputs.dll): 0.004 ms
00:55:56.301: ┃ ┣obs_init_module(obs-qsv11.dll): 52.461 ms
00:55:56.301: ┃ ┣obs_init_module(obs-text.dll): 0.27 ms
00:55:56.301: ┃ ┣obs_init_module(obs-transitions.dll): 0.004 ms
00:55:56.301: ┃ ┣obs_init_module(obs-vst.dll): 0.001 ms
00:55:56.301: ┃ ┣obs_init_module(obs-x264.dll): 0.002 ms
00:55:56.301: ┃ ┣obs_init_module(rtmp-services.dll): 0.619 ms
00:55:56.301: ┃ ┣obs_init_module(text-freetype2.dll): 0.016 ms
00:55:56.301: ┃ ┣obs_init_module(vlc-video.dll): 0.027 ms
00:55:56.301: ┃ ┣obs_init_module(win-capture.dll): 0.043 ms
00:55:56.301: ┃ ┣obs_init_module(win-decklink.dll): 1.632 ms
00:55:56.301: ┃ ┣obs_init_module(win-dshow.dll): 0.694 ms
00:55:56.301: ┃ ┣obs_init_module(win-mf.dll): 62.737 ms
00:55:56.301: ┃ ┣obs_init_module(win-wasapi.dll): 0.003 ms
00:55:56.301: ┃ ┗reset_win32_symbol_paths: 0.067 ms
00:55:56.301: ┣OBSBasic::ResetOutputs: 4.938 ms
00:55:56.301: ┣OBSBasic::CreateHotkeys: 0.16 ms
00:55:56.301: ┣OBSBasic::InitService: 0.732 ms
00:55:56.301: ┣OBSBasic::InitPrimitives: 0.244 ms
00:55:56.301: ┗OBSBasic::Load: 634.789 ms
00:55:56.301: obs_hotkey_thread(25 ms): min=0.002 ms, median=0.005 ms, max=295.034 ms, 99th percentile=0.107 ms, 99.7387% below 25 ms
00:55:56.301: audio_thread(Audio): min=0 ms, median=0.042 ms, max=7.556 ms, 99th percentile=0.574 ms
00:55:56.301: ┗receive_audio: min=0.001 ms, median=0.352 ms, max=7.507 ms, 99th percentile=0.584 ms, 0.170193 calls per parent call
00:55:56.302: ┣buffer_audio: min=0.001 ms, median=0.001 ms, max=0.011 ms, 99th percentile=0.002 ms
00:55:56.302: ┗do_encode: min=0.227 ms, median=0.348 ms, max=7.503 ms, 99th percentile=0.576 ms
00:55:56.302: ┗encode(simple_aac): min=0.221 ms, median=0.324 ms, max=0.593 ms, 99th percentile=0.554 ms
00:55:56.302: obs_video_thread(16.6667 ms): min=0.153 ms, median=0.654 ms, max=594.12 ms, 99th percentile=1.183 ms, 99.7486% below 16.667 ms
00:55:56.302: ┣tick_sources: min=0.001 ms, median=0.012 ms, max=593.512 ms, 99th percentile=0.05 ms
00:55:56.302: ┣render_displays: min=0 ms, median=0 ms, max=12.269 ms, 99th percentile=0.09 ms
00:55:56.302: ┗output_frame: min=0.151 ms, median=0.639 ms, max=283.348 ms, 99th percentile=0.91 ms
00:55:56.302: ┣gs_context(video->graphics): min=0.089 ms, median=0.179 ms, max=282.789 ms, 99th percentile=0.408 ms
00:55:56.302: ┃ ┣render_video: min=0.015 ms, median=0.055 ms, max=0.232 ms, 99th percentile=0.109 ms
00:55:56.302: ┃ ┃ ┣render_main_texture: min=0.002 ms, median=0.031 ms, max=0.185 ms, 99th percentile=0.056 ms
00:55:56.302: ┃ ┃ ┣render_output_texture: min=0.002 ms, median=0.009 ms, max=0.17 ms, 99th percentile=0.035 ms
00:55:56.302: ┃ ┃ ┣render_convert_texture: min=0.001 ms, median=0.008 ms, max=0.195 ms, 99th percentile=0.021 ms
00:55:56.302: ┃ ┃ ┗stage_output_texture: min=0 ms, median=0.002 ms, max=0.037 ms, 99th percentile=0.004 ms
00:55:56.302: ┃ ┣download_frame: min=0 ms, median=0.004 ms, max=22.236 ms, 99th percentile=0.006 ms
00:55:56.302: ┃ ┗gs_flush: min=0.023 ms, median=0.118 ms, max=282.754 ms, 99th percentile=0.35 ms
00:55:56.302: ┗output_video_data: min=0.357 ms, median=0.455 ms, max=1.395 ms, 99th percentile=0.593 ms
00:55:56.302: video_thread(video): min=0 ms, median=0.001 ms, max=2.491 ms, 99th percentile=1.242 ms
00:55:56.302: ┗receive_video: min=0 ms, median=1.049 ms, max=2.488 ms, 99th percentile=1.334 ms, 0.180341 calls per parent call
00:55:56.302: ┗do_encode: min=0.889 ms, median=1.049 ms, max=2.487 ms, 99th percentile=1.333 ms
00:55:56.302: ┗encode(simple_h264_stream): min=0.881 ms, median=1.027 ms, max=1.616 ms, 99th percentile=1.302 ms
00:55:56.302: =================================================
00:55:56.302: == Profiler Time Between Calls ==================
00:55:56.302: obs_hotkey_thread(25 ms): min=24.822 ms, median=25.085 ms, max=395.702 ms, 78.3328% within ±2% of 25 ms (0% lower, 21.6672% higher)
00:55:56.302: obs_video_thread(16.6667 ms): min=1.836 ms, median=16.667 ms, max=594.126 ms, 99.5359% within ±2% of 16.667 ms (0.212725% lower, 0.251402% higher)
00:55:56.302: =================================================
00:55:56.324: Number of memory leaks: 1
 
Last edited:

LinkDrive

New Member
I did a clean install from 388.13 to 388.31 hoping that maybe what's going on is some sort of weird driver issue. Unfortunately, OBS is still causing my FPS to plummet unless I use the workaround I found last night.
 

LinkDrive

New Member
While it is great you have found a temporary measure, I hope someone else can confirm the existence of the issue and a permanent fix is found.

I hope so too. If it works with the temporary fix, then I don't see any reason why it couldn't get fixed permanently. I know the consensus around here is "don't use SLI", but honestly if it can work with SLI, then I don't see why a fix couldn't get rolled out in future versions.
 
Well I'm no dev and definitely no coder (Very basic lua and xml at best, everything else is almost hieroglyphs to me) with your temporary fix though it would appear that the coding behind multi-adapter compatibility toggle is somewhat borked if it works after you toggle it when the game is launched.

Does your workaround still work if you start OBS with it disabled, enable it then launch the game? Could provide more insight to any dev that is willing to take a look at it.

Also good to know it doesn't just affect NVENC as anybody using x264 or AMD cards (Possibly) might be able to use your workaround as well.
 

LinkDrive

New Member
Does your workaround still work if you start OBS with it disabled, enable it then launch the game? Could provide more insight to any dev that is willing to take a look at it.

Unfortunately not. Toggling Multi Adpater off and on prior to launching doesn't have any positive effect. So, in summary

  • Launching OBS with Multi Adapter enabled then launching a game - breaks
  • Tabbing out of a game, launching OBS with Multi Adapter enabled, then tabbing back in - breaks
  • Launching OBS, toggling Multi Adapter off then on, then launching a game - breaks
  • Launching OBS with Multi Adapter off, launching a game, tabbing and enabling Multi Adapter - works
  • Launching a game, tabbing, launching OBS with M.A. off, tabbing back into the game, tabbing back into OBS to enable M.A - works
The last one on the list I literally just now tried on a hunch. You can see the last step in action here.


It almost seems like it has something to do with the way Game Capture is grabbing the scene. It almost looks like it needs to be capturing the source from a single card first before Multi Adapter can work properly. I say this because in all my testing, if OBS isn't already capturing a source, starting the capture with Multi Adapter enabled out the gate is where the issue seems to come up.
 
Perhaps when multi-adapter compatibility is toggled on, OBS fails to correctly identify the master card in the multi-GPU configuration and jumps back and forth between the multi-GPU configuration regardless of GPU selected in options?

Perhaps OBS is interrupting the slave card rendered image transfer to the master GPU in the SLI/X-Fire configuration before final output?
 

LinkDrive

New Member
Perhaps OBS is interrupting the slave card rendered image transfer to the master GPU in the SLI/X-Fire configuration before final output?

It's possible. The fact that the FPS doesn't go back up to normal levels even after closing OBS certainly implies that it's hitting the drivers somehow.
 

Osiris

Active Member
OBS cannot switch back and forth between different GPU's on the fly.
Hooking into the game has the "side-effect" that it can only have access to 1 GPU and since in SLI both GPU's render half of the frames only half of the frames are captured by OBS, multi-adapter compatibility forces shared memory capture which involves system RAM, as in all frames are copied to system RAM.
Display capture gets the frames from windows, which does include all the frames, but it's not as performant as game capture.
 
Top