Jump to content



Photo
- - - - -

VPX drops to 30 fps after short time of play

vsync triple buffer

  • Please log in to reply
9 replies to this topic

#1 PilzTom

PilzTom

    Enthusiast

  • Members
  • PipPipPip
  • 82 posts
  • Location:South of Germany

  • Flag: Germany

  • Favorite Pinball: Attack From Mars

Posted 18 October 2015 - 09:46 AM

The effect:
After starting a table with option Vsync=1 everything works fine with 60fps. After some time (interval is mostly different) the game begins to stutter and then is constantly at 30 fps for almost exactly 1 minute and then will go up to 60 fps again.

The background (I did lots of research, but not sure if I did understand everything correctly):
The issue is caused by Vsync itself. Vsync always sets fps to a multiplier (1x, 1/2x, 1/3x) of the monitor refresh rate. If the fps drops below the monitor rate Vsync automatically falls back one multiplier step. This explains the 30 fps mentioned above. I'm not sure, but I assume when framerate is up again for about one minute the vsync multiplier is going up again.
This also explains why it does not occur for all users (I got one confirmation from another user in different forum - I first thought it is table related). It seems within the table I tested with I am exaclty at the limit - setting monitor refreshrate to 59hz insetad of 60hz makes the issue more rare, setting to 50hz almost eliminates it but the "felt smothiness" is not so good then.
So people with highend-GPUs will not have this.

To avoid the switching between 60-30-60fps triple buffering was introduced. Lets say it unties GPU render rate from refresh rate but still maintaining Vsync. When using Vsync triple buffering should always be set to be used. But this seems not to work with VPX (at least for my rig).
As far as I understood several articles about that it must be explicitely used by the game itself. Nvidia control panel anly allows general use or not.

Now the question:
Does VPX explicitely use triple buffering?
(I found lots of forum entries about triple buffering not correctly working with DX11, but this was related to 64-bit applications and the posts were outdated anayway. Another article said that triple buffering won't work with windowed fullscreen mode)
 

The overall performance of my card is quite satisfying, when vsync is at 60 fps gameplay is very smooth. But when the slowdown appears it is unplayable at all. Maybe this could be solved somehow, I would prefer some short single stutter instead of a minute of crazy ball jerking.

 


Currently building playing a low-cost cab: 39''/27''/15''

System: Intel Core i5-4570, Asus P8Z77-M, 8GB, EVGA GTX650 Ti Boost 1GB, Win10 Pro x64 , 3 screen setup


#2 ClarkKent

ClarkKent

    Pinball Fan

  • Members
  • PipPipPipPip
  • 1,552 posts

  • Flag: Austria

  • Favorite Pinball: Q*Bert's Quest, Red's and Ted's Road Show, Dialed In, Big Bang Bar

Posted 18 October 2015 - 01:13 PM

Same problem here. Using an GTX660.

 

What about forcing it?

 

I learned that G-Sync helps - but I think that's not available for regular TVs in our cabs...


Edited by ClarkKent, 18 October 2015 - 02:03 PM.


#3 lizard

lizard

    Enthusiast

  • Platinum Supporter
  • 318 posts
  • Location:Australia

  • Flag: Australia

  • Favorite Pinball: Kiss

Posted 18 October 2015 - 10:31 PM

I know its not VPX as the title says but i just solved a similar problem to this on vp9, i was having ball stuttering randomly but when it was not stuttering the ball was perfectly smooth. I tried every setting combination, Reloaded windows to start fresh also and still had no answer. Last night i reinstalled net framework first then reinstalled directx9 again and the stuttering is finally gone. Maybe this will work for VPX to but If Your not getting similar stuttering in vp9 its probably something different, thought its worth mentioning though. 



#4 ClarkKent

ClarkKent

    Pinball Fan

  • Members
  • PipPipPipPip
  • 1,552 posts

  • Flag: Austria

  • Favorite Pinball: Q*Bert's Quest, Red's and Ted's Road Show, Dialed In, Big Bang Bar

Posted 19 October 2015 - 05:53 AM

The only thing I can tell you for sure is that VPX runs the best with vsync turned on when starting a table in VPX directly right after turning on the cab. No frontend or something. And as far as I know this does not happen if your processor/gfx is fast enough.



#5 ClarkKent

ClarkKent

    Pinball Fan

  • Members
  • PipPipPipPip
  • 1,552 posts

  • Flag: Austria

  • Favorite Pinball: Q*Bert's Quest, Red's and Ted's Road Show, Dialed In, Big Bang Bar

Posted 19 October 2015 - 04:16 PM

Runs better with setting 2 in VPX, not fully fluid but better. With adaptive I can even play AMH...



#6 Outhere

Outhere

    Pinball Wizard

  • Platinum Supporter
  • 4,806 posts

  • Flag: United States of America

  • Favorite Pinball: M M

Posted 19 October 2015 - 05:13 PM

VP-10  settings

I7

I am Using an GTX660.

I get 150 fps +

game play is smooth

Attached Files


Edited by Outhere, 31 October 2015 - 11:29 AM.


#7 PilzTom

PilzTom

    Enthusiast

  • Members
  • PipPipPip
  • 82 posts
  • Location:South of Germany

  • Flag: Germany

  • Favorite Pinball: Attack From Mars

Posted 19 October 2015 - 06:20 PM

I have 4xAntialiasing enabled - the quality is so much better with it. This should explain the huge difference in fps.

 

Anyway, I did some tests with D3DOverrider (it is part of RivaTuner and could be extracted as single EXE from its installer). This tool can force triple buffering for specific applications. When it is active VPX plays smooth with some slight stutter from time to time with the same table. No more drops to 30 fps. Best solution until now.

Interesting is that the stutter and fps drop does not occur when using only one screen - it seem the GPU is near its limit but only beyond it when a second and/or third screen are used (all attached to the same card).

 

When setting to adaptive Vsync (Value 2) I cannot play at all because of extreme stuttering. Adaptive means that the driver switches Vsysnc off dynamically if framerate drops below monitor rate and switches it on if it is high enough. No idea why, but unusable for me.

 

And according to DX9: I read a few times it is necessary to install DX9 to run VPX !? I never did that (or can't remember). I have Win7 and the latest DX (11?) for that. Physmod 9 worked smooth all the time and was also playable without Vsync on, VPX without Vsync is really worse with my config


Currently building playing a low-cost cab: 39''/27''/15''

System: Intel Core i5-4570, Asus P8Z77-M, 8GB, EVGA GTX650 Ti Boost 1GB, Win10 Pro x64 , 3 screen setup


#8 allknowing2012

allknowing2012

    Pinball Fan

  • Members
  • PipPipPipPip
  • 1,948 posts
  • Location:Waterloo, ON

  • Flag: Canada

  • Favorite Pinball: bucaneer

Contributor

Posted 19 October 2015 - 06:53 PM

When I am building a VPX table .. edit, play,stop,edit, play - I can get a big decline in fps. No way to narrow it down though :-(


* I don't know everything - I just have no life *
testimageNL

 

 

 

#9 fuzzel

fuzzel

    spaghetti code

  • VP Dev Team
  • PipPipPipPipPip
  • 2,818 posts

  • Flag: Germany

  • Favorite Pinball: yes I have

Posted 19 October 2015 - 06:55 PM

My other posting got lost somehow. Anyway: VPX doesn't use tripple buffering but you shouldn't rely on the fps as a reference for perfomance. The fps calculation is pretty rough and a lot of other factors can produce stutter even if the fps seems to be in a good range.

Did you try to set VSync to 60 or 120? The info text in the video settings is a bit misleading here and I think it is a relict from VP9 but the VSync value is a limit at which fps boundary the wait for vsync should kick in. So if you set the value to 60 VPX will wait for vsync on frames which are faster than 60fps and VPX won't wait if the fps drops below this boundary.

The other option to play with is "Max prerendered frames": this adds a so called stall-frame for the gpu to catch up with the rendering. Depending on the amount of table elements and especially the dynamic elements (lights, primitives, flashers) the render calls/buffers become very huge. When setting "Max prerendered frames" to 1,2,3 or 4 (0 disables it) VPX will add a stall-frame into the render pipeline to give the gpu a bit more time to catch up. After the stall-frame the bulb lights and transparent elements are rendered. So the frame rendering process get a kind of a break and the gpu can process the render call which are already put into the pipeline before adding a lot of new calls into it.

 

You don't need to install DX9 because the newer DX versions have a legacy mode to support older DX versions. You can't compare VP9.9/Physmod with VPX because every element in VPX is 3D and much more dynamic than VP9.9. The whole lighting is done in realtime where in VP9.9 all lighting was faked with flashers and images and just blended together.



#10 ClarkKent

ClarkKent

    Pinball Fan

  • Members
  • PipPipPipPip
  • 1,552 posts

  • Flag: Austria

  • Favorite Pinball: Q*Bert's Quest, Red's and Ted's Road Show, Dialed In, Big Bang Bar

Posted 19 October 2015 - 09:06 PM

Anyway, I did some tests with D3DOverrider (it is part of RivaTuner and could be extracted as single EXE from its installer). This tool can force triple buffering for specific applications. When it is active VPX plays smooth with some slight stutter from time to time with the same table. No more drops to 30 fps. Best solution until now.

Interesting is that the stutter and fps drop does not occur when using only one screen - it seem the GPU is near its limit but only beyond it when a second and/or third screen are used (all attached to the same card).

Which version of D3DOverrider do you use? I found 2.0.0 from Aug 2009. Is there a newer version than that? I need this for Win7 64bit.

 

And what's your settings in VP when using D3DOverrider? And the settings of Nvidia control panel (triple buffer activated or deactivated there?)?


Edited by ClarkKent, 19 October 2015 - 09:35 PM.






Also tagged with one or more of these keywords: vsync, triple buffer