In my research for a stuttering problem in my game engine, I think, I have found the problem, but don't have any idea why this is happening, that's why I ask you if you have an idea !
The situation : DirectX10 under win7 simple engine. If running fullscreen (and only in fullscreen), with Vsync On and the rendering loop going much more faster than the vsync ==> Stutter (Frame dropped by the driver).
My base solution at this moment : Make the call to device.present() not faster than the Vsync !
My questions : - What is happening here ? It seems that the called to .present() "is caching" frames, and if the cache is full, it can go to throw away a frame ==> It makes the stutter ! - Why is it not happening in windowed mode under the exact same situation (back buffer resolution, scene, ...) ???
Edit : Here is a Pix debugging screen (big picture), showing the stuttering : http://www.s33m3.be/PIX/PIX3.png You can see that frame 912, that did exactly the same amount of work as other frames, wasn't processed by the GPU. (No GPU start/Duration). And after debugging, it just that for this frame the call to .Present() was really low (more then 10 times faster than the average .Present() of the other frames !
So how can I disable in DirectX10 this "feature" to throw aways frames ? I would prefer the Present method to hold instead of dropping a frame !