• Hey Guest. Check out your NeoGAF Wrapped 2025 results here!

Triple buffering: "Why we love it"

I can't find the seperate d3doverrider program.. is it built into rivatuner now?

And to set things straight..
Force triple buffering with d3doverrider, and also enable vsync in the game and i'm good?
Thanks for any help, guys.
 
I seriously would love to take an ABX test on the matter. I can guarantee you I can pick out the vsync+triple buffered game from no vsync simply from the mouse lag in the menu (where you wouldn't see any tearing). People say triple-buffered vsync is lagless, which is completely false.

It's simple logic really. If your frame is updated at most 60 frames per second, there will be greater delay then when it is updated much faster than that (even if the updates are only parts of a frame). I use it in most singleplayer games anyways, because I don't like tearing, but when I need the most response possible in a multiplayer FPS, vsync is not an option.

blu said:
what hw does that?

No hardware, really. It's just a pointer to the frame buffer (which resides in video memory). Triple buffering just sets up an extra frame buffer in memory, and the pointer updates to the most recently drawn frame buffer. The frame buffers are drawn in an alternation fashion.
 
id post about it too if it was something that i noticed a lot and pissed me off.

tearing really really affects me, so i certainly bitch about it in console games where i have no control over it. but i dont even use triple buffering on PC as of yet. normally i just click v-sync and play.
 
So what's the difference between triple buffering and triple buffering + vsync?
When I enable triple buffering without vsync, it seems like the framerate still gets locked at 60. Disclaimer that I tried reading page 4 for an answer.. :/
 
BastardTrees said:
Am I supposed to turn v-sync off in-game when using force triple-buffering + force v-sync via d3doverider ?

Leaving it on won't really help, as far as I'm aware. In some games (Dead Space), the vsync option might also act as a frame limiter, in which case you don't want it enabled.
 
TheExodu5 said:
I seriously would love to take an ABX test on the matter. I can guarantee you I can pick out the vsync+triple buffered game from no vsync simply from the mouse lag in the menu (where you wouldn't see any tearing). People say triple-buffered vsync is lagless, which is completely false.

It's simple logic really. If your frame is updated at most 60 frames per second, there will be greater delay then when it is updated much faster than that (even if the updates are only parts of a frame). I use it in most singleplayer games anyways, because I don't like tearing, but when I need the most response possible in a multiplayer FPS, vsync is not an option.



No hardware, really. It's just a pointer to the frame buffer (which resides in video memory). Triple buffering just sets up an extra frame buffer in memory, and the pointer updates to the most recently drawn frame buffer. The frame buffers are drawn in an alternation fashion.
You can try this if you want, but you will need to use gameplay instead of menus: http://zquake.frag.ru/misc/placebo.cfg
 
Grayman said:
You can try this if you want, but you will need to use gameplay instead of menus: http://zquake.frag.ru/misc/placebo.cfg

I can't tell the difference in between double-buffered vsync and triple-buffered vsync (unless the framerate drops below the vsync threshold). Maybe vsync can be forced off through the console commands? Kind of doubt it though.

Either way thanks for the link...I might try to see if I can get this working.

Is it designed for the original Quake?
 
TheExodu5 said:
I can't tell the difference in between double-buffered vsync and triple-buffered vsync (unless the framerate drops below the vsync threshold). Maybe vsync can be forced off through the console commands? Kind of doubt it though.

Either way thanks for the link...I might try to see if I can get this working.
I think that tests double buffer without vsync vs triple buffer vsync. I am not sure though. It is just in a forum thread I remember reading on the subject.

it says ezquake in the file, get http://nquake.sourceforge.net/ which comes with the shareware file built in if you do not have pak1 around.

if there is a cl_vsync_lag_fix command set it to zero.
 
Grayman said:
I think that tests double buffer without vsync vs triple buffer vsync. I am not sure though. It is just in a forum thread I remember reading on the subject.

Either way I'm going to try it. I have all the Quakes through Steam. Do you know which I need to run?
 
TheExodu5 said:
Either way I'm going to try it. I have all the Quakes through Steam. Do you know which I need to run?
I am not sure how steam packages quake 1, it may or may not work in their client. It will work in the nquake i linked above.
 
Grayman said:
I am not sure how steam packages quake 1, it may or may not work in their client. It will work in the nquake i linked above.

Thanks. I'm excited. Always wanted to do this. :D

edit: just booted up Quake through Steam (had to download it for the PAK file for nQuake). I notice it has mouse acceleration...I hope nQuake doesn't have mouse acceleration or else that would make it much more difficult to tell the difference.
 
in_mouse 3 (raw mouse input) afaik this also removes the windows accelleration if you do not have that hacked out of the registry
m_accel 0

I loaded it up without the blind test and may have noticed a small difference but I am not great at this stuff. I just know the lag is there in theory so I avoid it.
 
Grayman said:
in_mouse 3 (raw mouse input) afaik this also removes the windows accelleration if you do not have that hacked out of the registry
m_accel 0

I loaded it up without the blind test and may have noticed a small difference but I am not great at this stuff. I just know the lag is there in theory so I avoid it.

You are awesome.

Just about ready to get this going.

edit: was getting it wrong...couldn't feel any change...looks like it's not applying vsync (confirmed through fraps) so I need to figure out how to do that through a console command.
 
TheExodu5 said:
No hardware, really. It's just a pointer to the frame buffer (which resides in video memory). Triple buffering just sets up an extra frame buffer in memory, and the pointer updates to the most recently drawn frame buffer. The frame buffers are drawn in an alternation fashion.
sorry, bad wording. i meant to say 'what platform does that'.

classic triple buffering (or any form of ring buffering, for that matter) is just a time damper. its purpose is to leverage on-the-average-faster-than-playback rendition speed to smoothen out those spikes in the frame times. as such it traverses a queue of frames ready for display. i.e. if somebody controls frame dropping, that should be a higher-level authority (perhaps game logic). a ring buffer that arbitrarily drops frames at its own discretion is something i'd kill with fire.
 
IMACOMPUTA said:
I can't find the seperate d3doverrider program.. is it built into rivatuner now?

And to set things straight..
Force triple buffering with d3doverrider, and also enable vsync in the game and i'm good?
Thanks for any help, guys.

Get it with Rivatuner and that should work, but to avoid potential headaches just force both tripple buffering and v-sync in D3DOverrider and disable them everywhere else.


Daigoro said:
id post about it too if it was something that i noticed a lot and pissed me off.

tearing really really affects me, so i certainly bitch about it in console games where i have no control over it. but i dont even use triple buffering on PC as of yet. normally i just click v-sync and play.

As long as you've got the memory for it (and you almost certainly do) someone in your situation (i.e. someone that detests tearing and always enables vsync) is only going to see positive effects from forcing triple buffering. I highly recommend you do it.

For the record, I've never made any argument about triple buffering vs. standard double buffering and understand that's its entirely possible that the latter may be preferable to some. I however simply detest tearing, and am not hyper sensitive to image lag so for me standard double buffering is simply never an option and in the vast majority of cases triple buffer vsync will almost always yield more desirable results (in terms of latency, framerates and amount of stuttering) than double buffer vsync on a modern GPU.
 
Alright, changed it to this:

alias placebo_on "vid_vsync 1; gl_triplebuffer 1"
alias placebo_off "vid_vsync 0; gl_triplebuffer 0"

Should work.
 
Yep. Was a piece of cake. It's slight, but it's the difference between the feeling of instant response and a very slight disconnect in between my mouse and the movements on screen.

placebo.png
 
brain_stew said:
Notice any difference between double buffer vsync and triple buffer vsync?

That's a good question. I'll try that out now.

edit: nope....10/8...I just gave up. I can't tell the difference.

I think when they speak of improving input lag with triple buffering, it speaks more to the fact that it will draw more than 30 frames per second if it drops below 60. When you're maintaining a constant 60fps, I'm guessing it doesn't make a difference, since you're maintaining a 1 frame buffer regardless. I think that all it's adding is that one frame of lag, and that's what I'm detecting.
 
Looks like this thread was bumped again. So, I should probably add something to it. Bioshock 2 on the PS3, and I believe also on the 360, is using triple buffering with VSYNC. You have the option of turning VSYNC off at the expense of additional screen tearing.
 
Truespeed said:
Looks like this thread was bumped again. So, I should probably add something to it. Bioshock 2 on the PS3, and I believe also on the 360, is using triple buffering with VSYNC. You have the option of turning VSYNC off at the expense of additional screen tearing.

Triple buffering on PS3 but not on 360 where its locked at 30fps and it'll tear if it drops frames (but doesn't do that very often at all).

Edit: What the hell? When did you get that title change!? :lol
 
Truespeed said:
Looks like this thread was bumped again. So, I should probably add something to it. Bioshock 2 on the PS3, and I believe also on the 360, is using triple buffering with VSYNC. You have the option of turning VSYNC off at the expense of additional screen tearing.

Could just as easily be double buffered vsync. You'd have to see what happens with Vsync is enabled. If it's double buffered, then it will drop from 30fps to 20fps in heavier segments. If not, then it'll just hover in between 20fps and 30fps (whatever it's actual performance may be). A slight drop in performance in a triple buffered game can be detected as very minute stutters as a frame is repeated twice.

brain_stew said:
Triple buffering on PS3 but not on 360 where its locked at 30fps and it'll tear if it drops frames (but doesn't do that very often at all).

I've always wondered how consoles could get away with locking the framerate without needing to synchronize to the display. I'd love to be able to do that on the PC. I'd get the benefits of getting rid of tearing (as long as I maintained 60fps) with none of the input lag.
 
Those Quake results are as I thought. I honestly can't notice a single extra frame of input latency but I feel for you, I mean there's currently no real solution for you. Though definitely it seems to again compound the notion that as long as you've got the memory (and we're talking very small amounts of memory here, just ~3MB for 720p iirc, double that for 1080p and then times it by the amount of MSAA samples) then there's very little reason to use standard double buffer vsync, it you've got the option for triple buffering, which you do in pretty much every PC game, thanks to D3DOverrider.



TheExodu5 said:
I've always wondered how consoles could get away with locking the framerate without needing to synchronize to the display. I'd love to be able to do that on the PC. I'd get the benefits of getting rid of tearing (as long as I maintained 60fps) with none of the input lag.

I know some restrict the tearing to a few lines in the overscan region when maintaining their target refresh. I'd imagine that has something to do with it.
 
brain_stew said:
Those Quake results are as I thought. I honestly can't notice a single extra frame of input latency but I feel for you, I mean there's currently no real solution for you. Though definitely it seems to again compound the notion that as long as you've got the memory (and we're talking very small amounts of memory here, just ~3MB for 720p iirc, double that for 1080p and then times it by the amount of MSAA samples) then there's very little reason to use standard double buffer vsync, it you've got the option for triple buffering, which you do in pretty much every PC game, thanks to D3DOverrider.

It's not too big of a deal. It's marginal and I suffer through it in singleplayer games. In multiplayer games, I'm so focused and moving so quickly that I never really have the time to notice tearing in the first place.

Also, if you can maintain a framerate significantly higher than 60fps, tearing becomes very hard to notice since it's so minute.
 
Just so everybody knows, D3Doverrider does not use the triple buffering method described in the OP's article. This is the triple buffering implemented in the OpenGl method which hardly any game uses now.

There is no way to manipulate D3D to use the optimal method of the video card displaying the newest rendered frame and discarding any old frames that are not needed. D3Doverrider just tells the video card to render 3 frames ahead instead of 2........

This WILL increase input lag by a third, but if the game is struggling to quite maintain 60fps it should be a lot smoother.
 
brain_stew said:
As long as you've got the memory for it (and you almost certainly do) someone in your situation (i.e. someone that detests tearing and always enables vsync) is only going to see positive effects from forcing triple buffering. I highly recommend you do it.

For the record, I've never made any argument about triple buffering vs. standard double buffering and understand that's its entirely possible that the latter may be preferable to some. I however simply detest tearing, and am not hyper sensitive to image lag so for me standard double buffering is simply never an option and in the vast majority of cases triple buffer vsync will almost always yield more desirable results (in terms of latency, framerates and amount of stuttering) than double buffer vsync on a modern GPU.


i have been lazy. ill re-read the topic and try it out soon. might as well give it a shot. thanks.
 
kitch9 said:
Just so everybody knows, D3Doverrider does not use the triple buffering method described in the OP's article. This is the triple buffering implemented in the OpenGl method which hardly any game uses now.
actually, no sane frame buffering scheme should do that ever. dropping a ready frame originally intended for display, just because there's a newer one ready can produce undesired results. let's say you have 3 buffers participating in the scheme described in the article, and a faster frame producer:

Code:
t0:        fb A (currently front buffer): just shown, will stay on screen for ~17ms
t0 +  7ms: fb B (back buffer)           : frame produced fast, let's say 7ms
t0 + 14ms: fb C (back buffer)           : ditto

by the time frame A is done sitting on the screen (a vsync period), two frames are ready. the scheme picks C, as it's the newer one. so you just lost a frame. actually, as long as your frame production time stays sufficiently low, and you can produce two frames for the period of showing one, this scheme will always drop every second frame from showing up. as a result you'll get either a time compression, or a time stretch effect on the screen, depending on how you frame producer works. that's just broken.
 
Noob alert!

I installed Far Cry 2 and Dragon Age today, the first games I play now that I have everything for my new desktop pc.

With everything set on standard in Catalyst (the newest version) except for 16x AF I get between 50 and 80 fps in the car scene at the start (pretty much as far as I played, I suck at shooting in this game :/) with the in-game stuff at the highest except for 4x AA. And a shitton of tearing.

Enabling triple buffering in Catalyst and v-sync ingame gets rid of that tearing, but drops fps to 30. Not really locking, because it sometimes slowly goes up to ~45 until dropping back to 30. It´s weird.

So I have to install D3Doverrider (I have it downloaded on my laptop, need to search for the USB stick) and enable triple buff there. Then I drop the buffering in Catalyst and then enable v-sync in-game or not?

Dragon Age slightly tears as well, but doesn´t drop frames with v-sync on ingame. Here I´m more worried about my save, copied the save from my brother´s pc, but it´s not the most recent one, the hell?!
 
Binabik15 said:
Noob alert!

I installed Far Cry 2 and Dragon Age today, the first games I play now that I have everything for my new desktop pc.

With everything set on standard in Catalyst (the newest version) except for 16x AF I get between 50 and 80 fps in the car scene at the start (pretty much as far as I played, I suck at shooting in this game :/) with the in-game stuff at the highest except for 4x AA. And a shitton of tearing.

Enabling triple buffering in Catalyst and v-sync ingame gets rid of that tearing, but drops fps to 30. Not really locking, because it sometimes slowly goes up to ~45 until dropping back to 30. It´s weird.

So I have to install D3Doverrider (I have it downloaded on my laptop, need to search for the USB stick) and enable triple buff there. Then I drop the buffering in Catalyst and then enable v-sync in-game or not?

Dragon Age slightly tears as well, but doesn´t drop frames with v-sync on ingame. Here I´m more worried about my save, copied the save from my brother´s pc, but it´s not the most recent one, the hell?!

The triple buffering setting in CCC only applies to OpenGL games.

Force vsync and triple buffering in D3DOverrider and just leave it off every where else, that'll give you the least amount of potential complications, and you'll know its working if your game is 100% tear free.
 
blu said:
by the time frame A is done sitting on the screen (a vsync period), two frames are ready. the scheme picks C, as it's the newer one. so you just lost a frame. actually, as long as your frame production time stays sufficiently low, and you can produce two frames for the period of showing one, this scheme will always drop every second frame from showing up. as a result you'll get either a time compression, or a time stretch effect on the screen, depending on how you frame producer works. that's just broken.
What? Are there still games that animate/calculate physics/do anything based on frame counts as opposed to time? I thought that practise stopped in the early 90s.
 
brain_stew said:
The triple buffering setting in CCC only applies to OpenGL games.

Force vsync and triple buffering in D3DOverrider and just leave it off every where else, that'll give you the least amount of potential complications, and you'll know its working if your game is 100% tear free.
So do you recommend D3DOverrider as the best solution for ATI cards then?

I just got my 5870 today and losing nHancer is kind of a bummer for me.
 
dark10x said:
So do you recommend D3DOverrider as the best solution for ATI cards then?

I just got my 5870 today and losing nHancer is kind of a bummer for me.
I love my 5870 and have been happily using D3DOverrider since it came out. only weird thing i've noticed with it, is that in dirt 2 i sometimes have to toggle vsync on or off in the game for it to triple rather than double buffer.

sometimes i have to turn it on, sometimes i have to turn it off. other than that it works great.
 
I'm having a problem with mouse lag in Half-Life:Source and it's due to vsync being enabled. However, I get loads of tearing when it's not enabled.

The thing is, I can't force vsync through D3DOverider with source engine games and I'm not sure why. I just want to see if it's the source engine's application of vsync that's causing the mouse lag or not.

Any help would be greatly appriciated.
 
dark10x said:
So do you recommend D3DOverrider as the best solution for ATI cards then?

I just got my 5870 today and losing nHancer is kind of a bummer for me.

Its the only solution for triple buffering in D3D games for all cards regardless of manufacturer.
 
Will this work on something like VLC Player? I updated my old version and now I get tearing all over this bitch.
 
I'm having a problem with mouse lag in Half-Life:Source and it's due to vsync being enabled. However, I get loads of tearing when it's not enabled.

The thing is, I can't force vsync through D3DOverider with source engine games and I'm not sure why. I just want to see if it's the source engine's application of vsync that's causing the mouse lag or not.

Any help would be greatly appriciated.

Ah, nevermind. I had to change hl2's profile.

Still suffering the same problem though, getting stuttering when the framerate is capped at 60, but it's not really related to this thread.
 
jett said:
Will this work on something like VLC Player? I updated my old version and now I get tearing all over this bitch.

Tell it to make the sound when the program is starting up to check if it's running.
 
many thanks to OP, it's just feels right now. I knew something was irritating me, but didn't know where to scratch.
 
brain_stew said:
The triple buffering setting in CCC only applies to OpenGL games.

Force vsync and triple buffering in D3DOverrider and just leave it off every where else, that'll give you the least amount of potential complications, and you'll know its working if your game is 100% tear free.
You could also do it manually
  • go to C:\Users\"YourUserName\Documents\BioWare\Dragon Age\Settings
  • open and edit DragonAge "configuring settings"
  • change:
    UseVSync=1
    UseTripleBuffering=1
  • I also recommend changing:
    UseTrilinearFiltering=1
    AnisotropicFilteringLevel=16
 
I'll like to thank brain_stew for making this thread. Had a lot of headaches trying to get some performance with v-sync enabled till now :D
 
Now I hate this feature because it's ruined like 80% of console gaming for me. I hope this becomes a standart in the next-gen machines.
 
subversus said:
Now I hate this feature because it's ruined like 80% of console gaming for me. I hope this becomes a standart in the next-gen machines.
No kidding, it became especially apparent to me when the so-called "HD" systems came out. I've been singing the praises of triple buffering and vsync for over a decade now, it's the biggest reason I could never get all that excited about the 360.

PC gaming in general is probably the reason I get so annoyed at things like tearing and jaggies, actually.
 
This thread sounds very interesting. Has anyone tried this with any of the 5XXX ATI cards? And if so, what version of Rivatuner? I'm interested to give this a shot if my 5770s are supported.
 
Top Bottom