Question / Help AMD crossfire FPS

sakuma

New Member
English is not good....sorry :(

Hardware:
i7 3960x oc4g
Asus p9x79
amd 280x *2
Memory 16g

TOOLS:MSI Afterburner

GAME:GTA5

problem:AMD crossfire FPS low
live REC gpu1 %40-60, gpu2 %40-60,cpu%50-80
fps:35-55

Close OBS fps:59-60
gpu1 %80-99, gpu2 %80-99,cpu%30-60

Edition:0.9.1
2015-05-11 16-40-58_2015511191714.JPG
 

sakuma

New Member
yes.multi-adapter compatibility enable
two gpu Work
but Low load :GPU1 %50-70,GPU2 %50-70,FPS 30-50
close OBS,FPS=60
Give an example:
fps:44
gpu1 %75
gpu2 %68
cpu%60-80

QQ截图20150515195420 - 副本.jpg
 

Lain

Forum Admin
Lain
Forum Moderator
Developer
The multi-GPU compatibility option will have more impact on your game, it's an option that causes it to download the frames in the game itself rather than the more efficient method usually used with single-card setups where it doesn't have to transfer off the GPU.

The scale option I put in game capture is meant to help with it, reduce the scale of game capture to something like 1280x720 and it should reduce the capture load.

There's just no real way around this sort of thing for crossfire. For nvidia they have a capture API but for crossfire there aren't too many great options. Crossfire/SLI just do not play well with capturing.
 

the9quad

Member
First off:

I am not bashing OBS, but using the OBS gamecapture (if you have crossfire) is really not something you want to do. It kills performance imo. Luckily, there is a better way without sacrificing performance and still using OBS.

Actually you have two other options and they will give your darn near a zero performance hit.


Option#1-preferred method
Use Dxtory to cap the footage using RawCap and DirectShow Ouptut.
Add a video camera device in OBS with the Dxtory directshow output (Dxtory Video 1) as the device.
voila, crossfire full screen game capture for streaming with relatively zero performance hit. Yes it works flawlessly and I honestly see no difference in performance doing it this way whether I am streaming or not (so it is effectively a zero hit for me). Your experience may differ, but I doubt it.
here are the settings:

dxtory:
2015-05-19_14-45-25.png

OBS:
2015-05-19_14-43-39.png




Option#2 (only posted this option to show some other program managed it once, so it is possible)

There has only been one other method of streaming or capturing crossfire with relatively zero performance hit and that was using an older version of Action!.
In version 1.17.3 Action! was using AMD APP (NOT VCE!) and you could stream to twitch without losing any FPS. Then they went to version 1.20.2 and broke it and it hasn't worked since lol. But if you stilll had a old version of that, you could use it. The problem is, Action! is very limited to basic functionality for streaming. Really not sure why other programs have not tried the APP route versus VCE. I am not a program guy, so I am just asking. I know APP is older, but it sure does seem to work miles better to me.

I have videos showing just about every single streaming/capture program using crossfire. Trust me, the only two that really work without crushing performance are the two I just mentioned. Personally, I'd just use dxtory into OBS, it works fine and the only downside is that it costs like $34 for dxtory.

Here I am streaming @720P/30 fps while playing at 3200X1800 in BF4 with all settings on ultra and still getting over 100 FPS. You cannot do that with OBS's gamecapture, but here it is with OBS and Dxtory together:

http://www.twitch.tv/the9quad/c/5726630

here is 1440p all ultra streaming at 720p/30fps (this was Action! 1.17.3)

http://www.twitch.tv/the9quad/c/5424984

so yes it is possible to capture footage or stream it in crossfire with little to no performance penalty, and with out any weird graphical anomalies. Unfortunately, it takes two programs to do it or one old limited in functionality program.

System that was tested on was a i7 4930k @4.4 ghz, Three R9-290x's, 32 gigs of DDR3 @2400mhz, and windows 8.1 for reference.


I have tested:
OBS, X-Split. Playclaw, Action!, Dxtory, Overwolf, Raptr, FFSplit( wont do full screen-so useless),D3Dgear, and wirecast, but none worked very well except the two methods above.
 
Last edited:

Lain

Forum Admin
Lain
Forum Moderator
Developer
the9quad - Just in case you were also including single video adapter systems in your post (not saying you are, but just in case), let me just state that in terms of single card setups, game capture is the absolute highest performing and least impactful method to capture hands down because it does not move frames off the GPU for the capture. It's the best possible capture when using OBS. Dxtory could only ever DREAM of ever coming close, but it never will when used with other compositing programs. You should absolutely under no circumstances ever use dxtory in a single-card setup with modern games because it cannot share GPU memory with OBS in the same way OBS' native game capture hook can share GPU memory with OBS.

Now that the single-card rant is out of the way, SLI/crossfar is what we're talking about, and the situation is different. The ultra-fast GPU memory copy method that single-card setups use won't work for SLI/crossfire. Why? Because OBS can only share texture memory with one card, not both, so what will happen is that only every other frame will be captured because it's swapping the frame rendering between the GPUs. SLI/crossfire run in fullscreen modes, and there can only be one fullscreen application active on the computer at a time. So, we have to use a different capturing method for SLI setups, which means we have to tell the hook to download each frame in the game thread itself to ensure it captures properly; that's where the "multi-adapter compatibility" option comes in. It forces the game's thread to download frames off the GPU instead of trying to share memory, which will work with SLI. Dxtory functions identically. It doesn't do some as-of-yet-unknown-to-only-the-dxtory-developer "magic voodoo", it's a simple and documented technique.

Now, the reason why you may mistakenly think that Dxtory is getting "better" performance is because Dxtory always limits the resolution and FPS of the capture. That's it. So how do you get that in OBS? In the multiplatform version I added the same features, the ability to scale the capture and limit the framerate of the capture. The scaling feature pre-scales the texture before download off the GPU(s) to reduce bandwidth and ultimately the impact on the game. Limiting capture framerate will limit game capture's download rate to the same FPS OBS is set to. So, if OBS is set to 30fps, then the game will only capture frames at 30 FPS. Note again that it's the OBS framerate it's affected by, so if OBS is set to 60fps it'll incur twice the downloading as 30fps, so make sure to choose your FPS of OBS itself wisely.

Furthermore, Dxtory has to travel over DirectShow, which will cause more copies of the data, and further reduce performance of the capture (not to mention is subject to potential color conversion, though that rarely happens). For game capture it goes directly from the game to OBS without a middle-man API involved.

So, glad we could get that cleared up. It's simply a matter of settings and setup. I've provided the tools, now it's up to you guys to use them.
 
Last edited:

the9quad

Member
Actually Jim, I appreciate the response. But that is not the case with 3 video cards or maybe not the case with Hawaii cards in crossfire at all. Either OBS runs all janky with the screen herky jerking all over the place or the framerate takes a serious hit when it is setup like you say to set it up..

video of what is happening:
http://www.hitbox.tv/video/527616


Here is the set up screen btw, in case I am setting it up wrong:

2015-05-21_16-03-13.png


2015-05-21_16-22-00.png
 
Last edited:

the9quad

Member
Trust me I would love for it to work and not to have to use dxtory, but in all honesty that is the only way it works. Maybe that middleman is needed.

Then again, maybe it is due the way CFX works on hawaii cards versus how SLI works.

Also to clarify:Dxtory doesn't always scale or limit the FPS. You have to set those options in Dxtory just like you do in OBS. There is an option for each.

2015-05-21_16-51-04.png


I am not trying to come of as snarky, I really do love OBS, and appreciate all you do. I was merely trying to show what works with CFX.
 
Last edited:
Didn't dxtory invent some new stuff with Crossfire/SLI capture that improves it quite a bit?
Think i read about it and ppl see quite a difference, but i also think ppl got problems with it as well.

As i don't have Crossfire i can't speak for it myself.
 

Lain

Forum Admin
Lain
Forum Moderator
Developer
Ah well that might be the case ZeroWalker/the9quad. We don't have the nvidia/AMD capture APIs implemented yet, so they actually might be doing that. Apologies if so.
 
I have no idea what they are Jim, i only know that there is some "Multi-Adapter" thing in the new Dxtory that supposely boosts performance.

I don't think it used any AMD/Nvidia API, it's just some weird stuff he made i guess.
But then again i may be wrong.

Though Jim a question, Nvidia supposely got this weird "Hardware Capture Buffer" thing that Shadowplay uses,
and the point of it is to bypass API (DX,GL etc) and be next to none on performance hit (i guess it's limited to GPU hardware encoding as well, but perhaps software is possible as i don't see a reason why it wouldn't).

Is this something you know about, can it be used in OBS in someway (i know there are limitations as it takes from the buffer which will only give you what the GPU is displaying, so i am guessing it's like a Global Desktop Capture thing).

Here is what i am talking about: http://en.wikipedia.org/wiki/Nvidia_Shadowplay
NVFBC and NVIFR.

(NVFBC is the interesting one).
 

Lain

Forum Admin
Lain
Forum Moderator
Developer
It's not "weird stuff he made". As I said this isn't a voodoo science.
 
Top