Smart Vsync, would it be possible?

Ante P

Veteran
Ok so I'm sitting here playing some games using my 9700 Pro.
I run most of them at high res with FSAA/Aniso.
In some of them I use Vsync...
but for an example, I have a synced 85 fps i Counter Strike but when someone throws a smoke grenade it drops to 42.5

now my question is, would it be possible to make a "smart" vsync that automatically turns off vsync if the fps drops below the refreshrate?
so instead of dropping to a synced 42.5 fps it would loose sync and continue struggling at a unsynced 50-84 fps? (dropping as low as 50 could perhasp bring it back to "half" sync again at 42.5)

I dunno, perhaps this is just stoopid crap coming out of my head, I just thought it would be a good idea


if anyone has any theories.. would it be possible through software or do you think you'd need to have the hardware to do it?

more questions: ;)
sometimes when using vsync and the fps drops below the refreshrate it doesn't sync to half the refreshrate
instead it carries on without sync for a little while just like I described that I would like above ie it chugs along at an unsynced 66 fps for an example
it seems to do this at total random, the next instant it will lock to 42.5 fps instead
(my 9700 does that stuff even when not dropping below the refreshrate in CS, it doesn't "lock" properly at 85 fps instead I get more than 85 fps at random intervals but that's beside the point here :) )




phew
 
i also have the "Vsync" problem when i played BF1942 1.0 version few months a go, to solve the problem , i have to enable fresh rate on. but now EA put 1.2 patch out then now i wouldnt do it again, maybe use 32bit instead of 16bit at CS can solve the "sync" problem.
 
Ichneumon said:
Humus said:
The solution to this problem is tripplebuffering.

Too bad you can't force tripple buffering.

3dfx's drivers allowed you to do this. In most games it worked fine, but on rare occasions it would cause some 2d displays(health, etc.) to flicker.

I don't know if ATI has the same option or not.
 
sorry for the stupid question, but what exactly does tripplebuffering do?
From what i've read you basicly get 2 Backbuffers to write in, but how does this help?
 
With doublebuffering, you have two logical buffers - being one 'displayed' and one 'drawn'.

When you swap the buffers, you change the status of the 'drawn' buffer to 'waiting to be displayed'. Then, at the next vsync, the 'displayed' buffer becomes 'free' and the 'waiting' buffer becomes 'displayed'.

Until a buffer becomes 'free' you cannot start drawing on it - obviously, because it's being displayed, so drawing on it would damage what's already there.

Triple buffering helps this because you have an extra free buffer. As such you can usually start drawing immediately when you swap because there is always a free buffer available.

This tends to break 'sync-lock' cases like those described above - if the render takes 1.5 frames, instead of seeing a new frame at 2-2-2-2 you will see it at 2-1-2-1. Note that the game engine still thinks it's running at 1.5-1.5-1.5-1.5, which creates a disparity, but if you're up at 85Hz this is unlikely to be noticeable. Some people can find this more disturbing than dropping to a constant slower rate, but this is all very subjective.

Triple buffering occasionally causes HUD issues because the application sends the HUD twice, once onto each (expected) frame. Applications that redraw the whole screen every frame do not suffer from this. That's the usual method now of course because it's the best way to get the most from Hyper-Z and antialiasing performance boosting hardware.
 
Back
Top