Monday, October 18, 2010

ATI's triple buffering

I investigated the triple buffering issue. The conclusions are:
  1. ATI itself recommends to turn off triple buffering if you experience any issues. I'm quoting directly: "However using Triple Buffering may cause problems for graphics cards with lower Video RAM, so disable this option if you’re experiencing problems such as mouse or input lag".
  2. When a big-name game gets those issues, ATI adds a "profile" to the driver to silently disable Triple Buffering for that game. Games use a wide variety of rendering techniques, and ATI's Triple Buffering implementation is known to be incompatible with many games; for those that are popular, it is silently disabled by the driver.
  3. It is not possible for the game itself to disable Triple Buffering (the driver does not provide a way to).
  4. While searching for any technical documentation it became apparent that ATI is far more interested in publishing marketing articles about benefits of TB than technical documentation. (fairly inaccurate articles, I must add, but this is normal for marketing)
  5. As a technical feature, TB is very unimportant, it's effect on the final images is minimal (when compared to plain vsync on). But as marketing buzzword, it is well utilized.
  6. TB's real purpose is to make framerates higher than display framerate appear to be useful somehow, as to provide perceived incentive to buy hardware which is over-specced for the games that their customer plays (i.e. to make gamers want their games at hundreds fps despite the fact that most games update internally at 30 fps constant, a few at 60fps constant, and that most displays update at 60 fps or so)
  7. TB introduce time jitter, which is far worse for gameplay than tiny lag which it SOMETIMES eliminates - but even that jitter is not quite noticeable.
  8. TB is bad for your laptop's battery, and ultimately for planet Earth (wastes electricity for no benefit whatsoever). I'm calling Greenpeace. TB will also result in higher temperatures and shorter lifespan of your hardware.

Just turn off TB, ok? If you got other non standard "optimizations" of the same kind, turn them off too. That will improve many other indie games, not just The Polynomial. For the big name titles, ATI itself turns off those features through game profile in the event of any problems. The Polynomial, however, is a indie game, and as such, has no 'profile' for it in the driver yet; you have to turn off incompatible features manually.


  1. I don't have TB enabled, but the game is fail to start. With vsync always on.

  2. oh the log was forgotten.. here it is :)

  3. My game fails to start also but its an issue im having with my video card and how it is crossfire enabled out of the box. If your using a card in crossfire mode disable crossfire and it should load. At least it does for me.

  4. Multiple Buffering isn't a marketing ploy, its a genuine technology often used in conjunction with Vertical Sync (though it's not exclusively designed for such a purpose). It basically allows for better performance in cases such as Vertical Sync, since the objective of vertical sync is to force the video card to wait until a frame is completely rendered before displaying it, thus eliminating tearing. The problem with Vsync is that it can introduce a delay in frame display (usually interpreted as low FPS). Multiple Buffering (usually Triple Buffering) is used so that several frames can be rendered in advance so that there is less or no delay in video (assuming the video card is up to rendering the extra frames and has enough VRAM available). This in turn introduces a delay in which sending commands to the game have an apparent delay to the users perspective (such as moving the character forward). This delay is not a delay in rendering, thus there is no apparent loss in FPS, but a delay in actions becoming apparent in the game.

    This can be fixed by reducing the frames rendered ahead. I am not very experienced with graphics programming, so I can't tell you how to this through code, but some tweak tools such as ATI Tray Tools (for ATI cards) and a setting located in the Forceware Control Panel (for NVIDIA cards).

    In ATI tray tools there is an option called "Flip Queue", which is usually recommended to be set to '2', though the user can experiment to see which produces the best results.

    You may have to manually correct the triple buffering code used though, since the games programming may override that of a tweak suite like ATI Tray Tools.

  5. I may have to "manually correct triple buffering code"?! Where exactly, inside the ATI driver? Last time i checked, it was closed source, and i wasn't ATI employee. My software does not care about triple buffering. It draws, it flips, in precisely the standard way, and theres nothing else it can do. The triple buffering is implemented entirely in ATI driver and is totally out of my control. Poorly written driver's implementation of this useless triple buffering feature is crashing, the crash is entirely outside my code, theres absolutely nothing that can be done from my software's side (other than disabling vsync) and all I can do is bitch and hope they fix their drivers.

    Yea yea, without triple buffering theres delay in actions, of less than 1/60 seconds, and yea yea all the gaming crowd is going to swear on bible that they feel the delay of 1/60 seconds, while being unable to notice this delay in any double blind trial.

  6. I understand it is stressful to be the sole developer of any product, but this kind of public attack on the manufacturer of a good half (give or take 10%, depending on the moment it seems) of your customer's videocards cannot be beneficial in any way.

    Here's hoping you'll continue to see through the difficulties and support the Polynomial - it has great potential!

  7. If we were only doing beneficial things for ourselves, the world would of drowned in BS ten times over.

    There's only a few people whom would of bought the game but won't buy game because it's developer flamed their card manufacturer (provided that the game works with said card).