Hi,
I have a very strange problem with my animation dropping a frame exactly every one second.
System: DirectX 9, Windows 7 & 8, Geforce GTX 750 TI, 60Hz Refresh, Doublebuffering
Edit: I found a solution for me: Just use tripple buffering (double buffering was only activated by accident). But the problem using double buffering persists on standard NVidia gfx boards. I also tested a NVidia Quadro K600 which seems to be immune (maybe because the Quadros using a different driver). I leave this post here if somebody has a similar problem or maybe NVidia can check for a problem in the driver?
The problem already exists a long time in my application and occurs on different machines, but I was only recently able to make it visible via NSight 4.
In this timeline you can see the “long frame” every second.
Now zoomed into the selected area:
You can see a spike in load in the nvd3dum.dll every one second and the call to DrawPrimitive takes extremely long (about 26 ms). But it’s really the same content rendered every time.
I can reproduce the problem with a very simple drawing loop with only one Clear and one DrawPrimitive.
MainLoop
Clear(...);
DrawPrimitive(...); // draw a simple colored quad
Present;
End
Interestingly the problem doesn’t occur if I leave out either Clear or DrawPrimitive. It also doesn’t occur if I throttle the loop (e.g. via Sleep(20 ms)) over 16 ms.
Could it be some issue with the driver actively waiting for a vsync? As this issue exists already very long (I aware of it over a year) I don’t think it is a recent driver issue.