Worse performance on dGPU than iGPU?

Support for running, installing or compiling OpenMW

Before you submit a bug report for the first time, please read: Bug reporting guidelines
Post Reply
velomous
Posts: 4
Joined: 11 Mar 2024, 08:51

Worse performance on dGPU than iGPU?

Post by velomous »

On my Nvidia 3070-ti GPU (and no the rain has nothing to do with it, same performance without rain)
24-03-50-openmw.png
On my AMD 680m iGPU
24-03-51-openmw.png

These have the same exact settings, what could possibly be causing this? A beefy dedicated gpu losing to an iGPU, this is not making any sense!

I tried running with Zink, and it flipped things, dGPU now ran about as well as the iGPU and the iGPU ran quite a lot worse... There were some graphical glitches though.
User avatar
AnyOldName3
Posts: 2678
Joined: 26 Nov 2015, 03:25

Re: Worse performance on dGPU than iGPU?

Post by AnyOldName3 »

That integrated GPU isn't awful, so if your dedicated GPU isn't leaving idle clocks for whatever reason or something like that, it wouldn't be surprising if the integrated GPU ended up faster. 1470 MHz definitely isn't a 3070 Ti's maximum clock speed (1770 MHz), but it doesn't look like idle clocks, either.
velomous
Posts: 4
Joined: 11 Mar 2024, 08:51

Re: Worse performance on dGPU than iGPU?

Post by velomous »

Look at the utilization, it's only 40% on the nvidia gpu but 100% on the igpu, and yeah it's a fantastic igpu, but the 3070-Ti should be leagues ahead of it, it shouldn't be a competition, these gpus are not even in the same ballpark, in nvidia terms, the 680m is only comparable to a GTX 1050 or so in performance, which is amazing for an igpu and quite suitable to run an old game like morrowind really well, but you know, it can't compete with a 3070-Ti, it is orders of magnitude more powerful, in fact it is roughly 7x more powerful than the 680m.
User avatar
AnyOldName3
Posts: 2678
Joined: 26 Nov 2015, 03:25

Re: Worse performance on dGPU than iGPU?

Post by AnyOldName3 »

If they were both getting the same performance, I'd say you were bottlenecked by something else (as OpenMW's typically CPU-bound). As the Nvidia GPU's slower, I think it's likely that either:
  • The Nvidia driver's wasting loads of time that the AMD one isn't. Until about a year and a half ago, AMD's OpenGL driver was really slow (basically it took a very long time to work out what it needed to tell the GPU to do and then give control back to the application so it could ask to draw the next thing), then they totally replaced it, and it was much faster. It's plausible that they overtook Nvidia, and the draw thread's just spending lots of time waiting for the driver. It's hard to tell as generally AMD's driver does better at shifting work to spare cores, so the higher CPU usage could mean the draw thread's not a bottleneck with the integrated GPU, but the driver's just putting more work onto other cores, or it could mean the draw thread's not a bottleneck in either situation and it's doing more work on AMD where it's chewing through more frames. You might be able to narrow this down by disabling some cores until you're obviously CPU-bound for both GPUs and comparing how badly the framerate is hurt by that.
  • The more likely option is that OpenMW's not asking the GPU to do anything complicated enough for the driver to realise it's a game and needs to go fast, so isn't bothering to make it go fast in order to save power. Usually the main knob a user has to control that is the same one as makes the game use the dedicated GPU, and if that's not working, you either need to set per-game overclock profiles, or yell at the vendor until they fix their driver. We don't have a contact at Nvidia, so can't yell at them on your behalf.
The results you saw with Zink support both theories. Both vendors' Vulkan drivers are faster than their OpenGL ones, and Zink gives the GPU more work to do (hence being slower on the integrated GPU that was already working properly). If there's a particular problem with Nvidia's driver being slow with OpenGL, it'd bypass it, but on the other hand, it might generate enough extra work that the driver realised it needed to go fast.
Post Reply