4
\$\begingroup\$

My game must stay at 75fps to be playable (I'm developing for the Oculus Rift) and I'm optimizing with that hardware in mind.

My mid-range Nvidia GTX 650 Ti struggles a little with some Rift demos, but most do OK at medium-low graphics settings. I believe it's a reasonable optimization target if I want to enable more people to play my game.

Now, I've acquired a better-performing GTX 970, but I'd like to still optimize for older hardware. I don't want to be spoiled by my current better performance and develop something that could run only on high-end cards. In a few days, I won't have my old card available to me anymore.

While developing, how can I test if my game still runs at acceptable frame rate on older GPUs?


What I have in mind is to benchmark my GTX 650 now with some software, then underclock my GTX 970 until I get to the older card benchmark score. Is that a good approach? Would it effectively have the same performance?

If yes, what about memory and shader clocks? How can I objectively benchmark them separately?

(If relevant, I'm using Unity and Unreal Engine 4.)

\$\endgroup\$
  • \$\begingroup\$ profile it, then profile it again, and again... \$\endgroup\$ – OMGtechy Dec 10 '14 at 21:51
  • 1
    \$\begingroup\$ The thing is, while profiling it, I could get satisfactory results for my GTX 970, and that could not be the case for a GTX 650 for example. \$\endgroup\$ – NeoZero Dec 10 '14 at 22:06
  • \$\begingroup\$ So profile on a GTX 650; you say you already have one. \$\endgroup\$ – jhocking Dec 10 '14 at 22:15
  • \$\begingroup\$ @jhocking Can you write an answer to explain how to set this up in a way which allows to easily do that while still being able to use the GTX970 for other applications and doesn't require buying a second PC? \$\endgroup\$ – Philipp Dec 10 '14 at 22:17
  • \$\begingroup\$ @jhocking Yes, but I'm selling it to help to pay for the expensive GTX 970. Also, keeping on exchanging both cards so many times would slow development, and wouldn't be very good for them and for my motherboard. \$\endgroup\$ – NeoZero Dec 10 '14 at 22:25
5
\$\begingroup\$

There is literally no good option other than testing on a range of target hardware.

Simply testing on slower hardware isn't enough. Older cards are often on different driver series, meaning that they support a lower version of Direct3D or OpenGL.

Cards of similar speeds but from different manufacturers will have different behavior. The behavior can differ because of loose specifications of semantics in the D3D or GL specs allowing vendors to do things differently, because of the vendor added some enabled-by-default extensions, or because of plain conformance bugs. For example, it's common to write GLSL code that works on an NVIDIA card but fails on Intel or AMD hardware because the GLSL code doesn't actually conform to the GLSL spec but which NVIDIA's drivers accept anyway.

Even aside from the hardware, there's various configurations to test. Users don't always install the latest drivers; the NVIDIA 34x drivers are different in key ways from the 30x legacy drivers. Users don't always have exact same version of the OS that you do, and software that works well in Windows 8 might perform poorly or not even run on Windows 7.

The only - only - reliable way to ensure that your game runs well on target machines is to actually test it on them.

If you can't test it yourself, you're going to have to rely on getting others to help test it for you with pre-alpha nightly builds or the like. Plenty of hip indie games do that stuff these days.

A poor man's option you might have available would be the discrete GPU in your CPU. Most recent processors from either Intel or AMD have an integrated GPU. It might take some shenanigans (rebooting, changing BIOS settings, and moving monitor cables) to use. Some of the newer systems make it easier and can do the swap in software (maybe only under a VM or the like). Beware that even then, you're only testing your integrated GPU and not all the others you might want to stay compatible with. Just because it runs on your desktop's Haswell Intel GPU doesn't mean it'll run on a customers's older A10 AMD APU or mobile Sandy Bridge Intel GPU.

Short version: you have to test on the target machines to get meaningful feedback on compatibility.

\$\endgroup\$
3
\$\begingroup\$

If you want to stick with the hardware route, you may want to invest into a Dual-PCI motherboard specifically for this scenario. In my previous setup I had a GTX970 and an older GT640. Switching between GPUs will require you to reboot, go into BIOS and select a primary.

I've since dumped the 640 in favor of the built-in HD4400 in my i7 4770K. Check your CPU which may have an integrated GPU, it will be even a better representation of a low-end GPU than a dedicated GPU like the 650.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.