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.
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.
i7 2600k @4.5ghz
1gb HD 6870
16gb ddr3 1600mhz
Win7 x64
1gb HD 6870
16gb ddr3 1600mhz
Win7 x64