• Welcome to TechPowerUp Forums, Guest! Please check out our forum guidelines for info related to our community.
  • The forums have been upgraded with support for dark mode. By default it will follow the setting on your system/browser. You may override it by scrolling to the end of the page and clicking the gears icon.

Framerate limiter and image tearing explanation...

Joined
Oct 2, 2004
Messages
13,933 (1.84/day)
System Name Dark Monolith
Processor AMD Ryzen 7 5800X3D
Motherboard ASUS Strix X570-E
Cooling Arctic Cooling Freezer II 240mm + 2x SilentWings 3 120mm
Memory 64 GB G.Skill Ripjaws V Black 3600 MHz
Video Card(s) XFX Radeon RX 9070 XT Mercury OC Magnetic Air
Storage Seagate Firecuda 530 4 TB SSD + Samsung 850 Pro 2 TB SSD + Seagate Barracuda 8 TB HDD
Display(s) ASUS ROG Swift PG27AQDM 240Hz OLED
Case Silverstone Kublai KL-07
Audio Device(s) Sound Blaster AE-9 MUSES Edition + Altec Lansing MX5021 2.1 Nichicon Gold
Power Supply BeQuiet DarkPower 11 Pro 750W
Mouse Logitech G502 Proteus Spectrum
Keyboard UVI Pride MechaOptical
Software Windows 11 Pro
Ok, here is the deal.

If you use V-Sync, it will lock yor framerate to 60fps (for 60Hz display). In this case you won't get any image tearing but you will get half the framerate if it falls below 60fps (effectively 30fps or less). You get a smaller penalty by using Triple Buffer and you'll get just a 1/3 penalty instead of 1/2.

Here is what i've been thinking. Image starts to tear if framerate goes beyond display refresh.
So, by limiting it below the display refresh, it shouldn't tear the image at all. However after limiting framerate to 70fps (my display is set to 75Hz) with MSI Afterburner, i still got image tearing. Very small but i could see it. This brings me to a question, why is it not tearing when framerate is below display refresh on its own but is still tearing when you limit it yourself? Why this happens?
 
Maybe you're not even pushing high enough framerate... I'm getting astronomical framerate even in modern games like Battlefield 3 using max settings because my screen is fairly low res (1280x1024).
I like that because i get cheaper through games using slower gfx cards, but that also means i'm constantly getting very high framerate and in result, image tearing. V-Sync on the other hand brings unwanted sluggishness in some rare cases.
 
We have about the same speed cards but only difference is that I have a 1920x1080 monitor.
 
That makes a huge difference actually...
 
You get image tearing and judder with vsync off, regardless of whether the framerate is above or below the monitor refresh (but obviously the faster the fps the better). If the framerate is way above the monitor refresh, say 200-300fps, then you tend not to see tearing much, animation looks smooth and you get the advantage of minimum lag.
 
Reading this thread got me curious... so I dug up some methods used to "fight tearing" http://www.virtualdub.org/blog/pivot/entry.php?id=74


The simplest method of avoiding tearing is to avoid updating the screen when any visible area of it is being displayed. One way to do this is to synchronize rendering with the output scan so that it always happens during the vertical blank. This is called vertical sync or vsync. During vertical blank, the screen is changed — either by direct rendering, updating the entire screen from an off-screen buffer (blit/copy), or by swapping the active screen by switching display pointers (flip). None of this ever happens while the screen is being displayed, and thus the monitor always shows only full frames.

A downside to vsync is the dead time between when a frame is completed and when it can become the actively displayed frame. In a single-buffered or double-buffered system, this is dead time, and creates cliffs in performance — if the system just barely misses 60 fps update speed with a 60Hz refresh, it has to drop to a consistent 30 fps.

Switching to a three-buffer system, triple-buffering, resolves this problem by allowing the renderer to start drawing a third frame while a second one is pending. This produces an uneven frame rate and consumes more memory, but allows arbitrary frame rates regardless of refresh rate. It also requires a way to do an asynchronous flip, but most video hardware allows this, either through a vertical blank interrupt or a double-buffered display pointer register.

If the entire screen doesn't need to be updated, such as when displaying video in windowed mode, another solution is beam following. Many video display chips can report the current vertical location of the output scan, which then allows the screen to be updated during the visible portion as well. Assuming the blit is faster than the output scan, it is OK to blit whenever the beam is not scanning the portion being updated. If the beam is before the update region, the blit will outrace the beam, and if the beam is after it, the blit will stop before it hits the scanning point. This greatly increases the amount of "safe blit time" available, and reduces waiting time.

I wonder how many games support triple buffering? I guess it dovetails into Qubit's comment, if the card can render three times the number of frames than the refresh rate, then it should support triple buffering? No matter what the case, you're never going to see more FPS than what your monitor refresh rate is!!!
 
Back
Top