Jump to content

  • Log In with Google      Sign In   
  • Create Account


#Actualmhagain

Posted 14 August 2012 - 03:39 PM

This kind of behaviour is quite normal; it's better to measure in milliseconds per frame rather than frames per second, at which point you'll see that - even though it looks as if your clears wipe out half of your performance - they're actually taking quite a small amount of additional time. (Note that if you're overdrawing the entire color buffer per frame anyway then you should be able to get away without clearing it, which will shave back a bit of perf.)

However, for a GPU that can run BF3 your overall performance seems shockingly low and points at something else being a cause of trouble. You should be getting framerates in the thousands here (for reference, I just tested similar on a low/mid AMD mobile GPU and easily cleared 2000fps at 1024x768 windowed). Have a look over your timer code to make sure there's nothing odd there, and also make double-sure that you're not calling Sleep anywhere. And there may be something evil in your game loop; e.g. GetMessage instead of PeekMessage, or bad PeekMessage handling.

Also worth enabling the debug runtimes and checking if you've got anything that's troublesome there, as well as capturing calls for a frame in PIX and having a look at what's happening from that point of view (be aware that a PIX call capture may make the first D3D call each frame seem inordinately longer than it really is - that's just an artefact of the sampling/capture mechanism and not an indicator of anything bad). Finally, make absolutely certain that you're not creating/destroying any D3D resources each frame - even if you don't otherwise use them, this is a very expensive operation and cration/destruction should be moved to runtime.

#1mhagain

Posted 14 August 2012 - 03:35 PM

This kind of behaviour is quite normal; it's better to measure in milliseconds per frame rather than frames per second, at which point you'll see that - even though it looks as if your clears wipe out half of your performance - they're actually taking quite a small amount of additional time. (Note that if you're overdrawing the entire color buffer per frame anyway then you should be able to get away without clearing it, which will shave back a bit of perf.)

However, for a GPU that can run BF3 your overall performance seems shockingly low and points at something else being a cause of trouble. You should be getting framerates in the thousands here (for reference, I just tested similar on a low/mid AMD mobile GPU and easily cleared 2000fps at 1024x768 windowed). Have a look over your timer code to make sure there's nothing odd there, and also make double-sure that you're not calling Sleep anywhere.

Also worth enabling the debug runtimes and checking if you've got anything that's troublesome there, as well as capturing calls for a frame in PIX and having a look at what's happening from that point of view (be aware that a PIX call capture may make the first D3D call each frame seem inordinately longer than it really is - that's just an artefact of the sampling/capture mechanism and not an indicator of anything bad). Finally, make absolutely certain that you're not creating/destroying any D3D resources each frame - even if you don't otherwise use them, this is a very expensive operation and cration/destruction should be moved to runtime.

PARTNERS