from geometry to pixels

NVidias Adaptive Vertical Sync

One new feature of NVidias new GPU line GeForce 600 (aka Kepler) is called ‘Adaptive Vertical Sync’ and from the slides and first descriptions it seems to be the OpenGL feature that Carmack was lobbying for: WGL_EXT_swap_control_tear / GLX_EXT_swap_control_tear.

As long as the framerate is below 60Hz it behaves like no VSync is active – the new frame gets drawn as soon as it’s available, even if that means overdrawing the old frame starting in the middle of the screen (the well-known tearing). But as soon as the framerate exceeds 60Hz it caps the screen refresh at this rate as the screen can’t show more images anyway.

This feature is available for current NVidia and AMD GPUs in OpenGL so there is no reason to make ‘Adaptive Vertical Sync’ GeForce 600 only. From what I understand this new feature just makes swap control tear available also for Direct3D programs and adds the option to ‘force’ this on old games that are not aware of this feature.

While this is a nice feature it still is just a work around. A constant update rate of the screen was necessary for CRT displays that had a cathode beam but why is it needed for LCDs? There has to be an upper update limit (LCD update speed, bandwidth limits) but there doesn’t seem to be a need for a lower limit! At least for full-screen apps (hint: games) it should be possible to draw each new frame exactly when it’s finished (up to 60Hz from when on the rendering will just wait). Why cant an LCD update at exactly 43 Hz if the GPU can’t deliver faster? Why can’t the update rate adjust to the image source?

But until that changes, swap control tear / Adaptive Vertical Sync is at least a good step forwards from VSync or no-VSync.

, , , ,

3 thoughts on “NVidias Adaptive Vertical Sync

Leave a Reply

Your email address will not be published. Required fields are marked *

Warning: Illegal string offset 'q' in /homepages/36/d405284044/htdocs/rpblog/wp-content/plugins/quiz/quiz.php on line 60

Warning: Illegal string offset 'a' in /homepages/36/d405284044/htdocs/rpblog/wp-content/plugins/quiz/quiz.php on line 61

Warning: Illegal string offset 'q' in /homepages/36/d405284044/htdocs/rpblog/wp-content/plugins/quiz/quiz.php on line 179