Dolphin, the GameCube and Wii emulator - Forums

Full Version: Does raising internal resolution and SSAA also increase cpu load?
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pages: 1 2 3
I have often heard people in these forums saying that increasing image quality settings such as raising internal resolution and applying SSAA will only affect your emulation performance if your video card isn't powerful enough. It is obvious that these settings will increase the gpu load but is it also not logical to assume that additional load will also be put on the cpu, as the cpu needs to feed more data into the video card? With this question in mind I did some testing.

All testing was done with dolphin rev. 3.0-631 using d3d9 video backend where 60fps is full game speed.

The first game up is NSMBW using HLE audio. Testing was done on world 1-1 after killing the first enemy.

****efb copies to texture:

Ir x1___________223fps
Ir x4___________220fps
Ir x2 SSAA x9___99fps

This test is hardly a performance killer and performance is extremely good. It can be seen here that my video card has no problems keeping up even at the highest settings tested, still achieving over 150% game speed.

****efb copies to ram (cache):

Ir x1___________128fps
Ir x4___________85fps
Ir x2 SSAA x9___55fps

This test is more cpu intensive and we naturally see framerates drop. But, note that at the highest settings we have dropped from 99fps to 55fps. At Ir x1 we are still getting 128fps so why has it dropped significantly below 99fps at Ir x2 SSAAx9. The video card is still rendering the same scene.

****efb copies to ram (no cache):

Ir x1___________67fps
Ir x4___________53fps
Ir x2 SSAA x9___36fps

This test stresses the cpu a lot (and the memory bandwidth) and the framerates are much lower again. We are still getting over fullspeed at Ir x1 but why does the framerate drop well below that to 36fps at highest settings when we already know that this video card is capable of rendering the scene at 99fps. Surely we would expect it to stay at 67fps if only the video card gets increased load when pushing up the image quality.


This behaviour can also be seen when switching from HLE audio to the more cpu intensive LLE. I've used Mario Galaxy 2 to show this although the results aren't quite as dramatic because the performance difference between hle and lle in Mario Galaxy 2 isn't as dramatic as that between efb to texture and efb to ram in NSMBW.

Testing was done after resuming a save game on the starship at world 1. Efb copies to texture was used.

****hle audio

Ir x1___________87fps
Ir x4___________82fps
Ir x2 SSAA x9___55fps

****lle audio (not on thread)

Ir x1___________73fps
Ir x4___________70fps
Ir x2 SSAA x9___50fps

Using hle we can see that the video card can render the scene on the highest image quality at 55fps however when using lle we can only manage 50fps. In practice what this behaviour means is that when playing Mario Galaxy with hle I can play at Ir x4 but when using lle I have to drop the resolution to x3 to prevent unnecessary frame drops. This doesn't sound like cpu independent behaviour to me.

In conclusion, when someone owns a very powerful video card like a gtx 680 or hd7970 the natural inclination is to bump up the image quality as high as possible without consideration for the effects on cpu performance. Perhaps people with mediocre cpus and very powerful video cards should think twice before bumping up the image quality. This also holds true for those with powerful cpus when playing games that are just breaking fullspeed at lower resolutions.

I would love to hear other people's thoughts on this and other interpretations of the results. Thanks for reading.
Edit: I misread the question. It should be fixed now.

Quote:This test is more cpu intensive and we naturally see framerates drop. But, note that at the highest settings we have dropped from 99fps to 55fps. At Ir x1 we are still getting 128fps so why has it dropped significantly below 99fps at Ir x2 SSAAx9. The video card is still rendering the same scene.

Because you're using efb copy to ram.

Quote:This test stresses the cpu a lot (and the memory bandwidth) and the framerates are much lower again. We are still getting over fullspeed at Ir x1 but why does the framerate drop well below that to 36fps at highest settings when we already know that this video card is capable of rendering the scene at 99fps. Surely we would expect it to stay at 67fps if only the video card gets increased load when pushing up the image quality.

Because you're using efb copy to ram without a cached copy.

Quote:This behaviour can also be seen when switching from HLE audio to the more cpu intensive LLE. I've used Mario Galaxy 2 to show this although the results aren't quite as dramatic because the performance difference between hle and lle in Mario Galaxy 2 isn't as dramatic as that between efb to texture and efb to ram in NSMBW.

Testing was done after resuming a save game on the starship at world 1. Efb copies to texture was used.

****hle audio

Ir x1___________87fps
Ir x4___________82fps
Ir x2 SSAA x9___55fps

****lle audio (not on thread)

Ir x1___________73fps
Ir x4___________70fps
Ir x2 SSAA x9___50fps

Welcome to fifo emulation.
Well, the GPU and CPU thread have to be somewhat in sync and move at the same speed to have a game properly emulated so raising your IR and applying AA adds load to the GPU and once the GPU reaches its limits i.e too much data to render it has to slow down a bit so that it can render all the scenes, since it has to move at the same speed as the CPU thread, the slowdown of the GPU will ultimately lead to the slowdown of the CPU as well which is what we call 'GPU bottlenecking the CPU'. In conclusion raising IR and applying AA only affects the GPU but once the GPU reaches its limit and has to slow down to work properly it has to slow down the CPU as well.
I still don't quite understand the behaviour I'm seeing. I suspect maybe I didn't make my question clear enough. Looking at the Mario Galaxy results is probably easier. It is obvious that at Irx2 SSAAx9 in both settings my gpu is the bottleneck but using hle it is able to render the scene at 55fps. Why can it also not render at 55fps when lle is used (after all switching audio backend shouldn't affect gpu). It drops to 50fps when I was expecting 55fps, as removing the gpu bottleneck shows my cpu has no problems pulling 73fps with lle.

Please can someone explain why when using lle it drops from 73fps to 50fps instead of 55fps?
LLE needs much more processing power - that's it.
Your results clearly show what I was suspecting for some time as well-that increasing resolution and AA will,for some reason,put additional load on both gpu and cpu,and not just gpu as some people think.
So to answer your question,answer is YES,raising internal resolution or AA will also increase cpu load
But it will also increase GPU load,so if you dont have top of the line gpu,it won't really metter that it also increase cpu load,because gpu will be bottlenecking
(05-12-2012, 11:34 PM)rpglord Wrote: [ -> ]Your results clearly show what I was suspecting for some time as well-that increasing resolution and AA will,for some reason,put additional load on both gpu and cpu,and not just gpu as some people think.
So to answer your question,answer is YES,raising internal resolution or AA will also increase cpu load
But it will also increase GPU load,so if you dont have top of the line gpu,it won't really metter that it also increase cpu load,because gpu will be bottlenecking

(05-12-2012, 05:15 PM)Zee530 Wrote: [ -> ]In conclusion raising IR and applying AA only affects the GPU but once the GPU reaches its limit and has to slow down to work properly it has to slow down the CPU as well.

They both have to be in sync if the GPU slows down it has to drag down the CPU with it


(05-12-2012, 11:52 PM)Zee530 Wrote: [ -> ]
(05-12-2012, 11:34 PM)rpglord Wrote: [ -> ]Your results clearly show what I was suspecting for some time as well-that increasing resolution and AA will,for some reason,put additional load on both gpu and cpu,and not just gpu as some people think.
So to answer your question,answer is YES,raising internal resolution or AA will also increase cpu load
But it will also increase GPU load,so if you dont have top of the line gpu,it won't really metter that it also increase cpu load,because gpu will be bottlenecking

(05-12-2012, 05:15 PM)Zee530 Wrote: [ -> ]In conclusion raising IR and applying AA only affects the GPU but once the GPU reaches its limit and has to slow down to work properly it has to slow down the CPU as well.

They both have to be in sync if the GPU slows down it has to drag down the CPU with it

No,its complete opposite: cpu is slowing the gpu down even at high resolutions and 9x msaa. Just look at first post: gpu was able to run the game with Ir x2 SSAA x9 at 99 fps. But once efb copies to ram were enabled,it only run at 36 fps,which clearly shows cpu was slowing it down.
Furthermore,which is even more interesting,in the third test,why is there no 36 fps at all resolutions ? Why fps still scales when lowering resolutions to 53 and 67 fps when card can deliver 99 fps at higher settings ? Only explanation is that perfomance is affected by cpu when changing resolution,not gpu.
[Image: rageface.jpg]

You people really don't get it.

Raising the internal resolution or SSAA does not SIGNIFICANTLY affect cpu load. You can easily confirm this by opening task manager and running the same game with different IR and SSAA settings.

Quote:No,its complete opposite: cpu is slowing the gpu down even at high resolutions and 9x msaa. Just look at first post: gpu was able to run the game with Ir x2 SSAA x9 at 99 fps. But once efb copies to ram were enabled,it only run at 36 fps,which clearly shows cpu was slowing it down.

Nope. Go read about how efb copy to ram emulation works.

Quote:Furthermore,which is even more interesting,in the third test,why is there no 36 fps at all resolutions ? Why fps still scales when lowering resolutions to 53 and 67 fps when card can deliver 99 fps at higher settings ? Only explanation is that perfomance is affected by cpu when changing resolution,not gpu.

That's the only explanation you can think of? REALLY?

No. It's a bandwidth issue. Without a cached copy the efb copies have to be constantly updated before either thread can proceed. This causes both threads to stall while a new copy is created and downloaded/uploaded (not necessarily in that order). The bigger the copies are the longer this takes. This slows down rendering tremendously.

Quote:They both have to be in sync if the GPU slows down it has to drag down the CPU with it

That's not what he was asking. Read the OP again.

Quote:Please can someone explain why when using lle it drops from 73fps to 50fps instead of 55fps?

One word (technically four words): FIFO
Well that and the fact that LLE runs in sync with the cpu thread.
(05-13-2012, 11:09 AM)NaturalViolence Wrote: [ -> ]
Quote:Please can someone explain why when using lle it drops from 73fps to 50fps instead of 55fps?
One word (technically four words): FIFO
Well that and the fact that LLE runs in sync with the cpu thread.
I don't really see what FIFO has to do with lle... (but then again I haven't bothered reading his full post, you're probably referring to something else anyway lol)
Pages: 1 2 3