Screen tearing question

Kasersky

Regular
what exactly causes screen tearing. i always felt that it was because the hardware constraints which forces render to move on to the next frame and displays the incomplete rendered frame. but is it more of an issue of the refresh rate not matching the update rate. like the monitor polling from the buffer prematurely. and for double buffered the monitor polling from the front buffer while mid-way though copying from the back buffer (polling midway though a copy operation from the back to front buffer).

so does that mean that all frames are in fact being rendered in the hardware even when we see them as torn on screen?

also please dont respond with ways to mitigate it like vsync, triple buffering that doesnt answer the question.
 
Last edited by a moderator:
Well, both explanations can be valid. The actual reason is that the contents of a frame change mid screen refresh. Worst case as happens on PC games running on much more powerful hardware than they were designed for, the game can update several times a frame leading to loads of screen tear. If you're rendering faster than one game frame per screen frame, you can cap the refresh to only happen when the screen is ready. That's your vsync. This means the game waits for the screen to be ready, which can mean unused processing cycles. That is, if you're game renders a frame in 5ms and the screen refresh is every 16ms, you either update 3x a frame and have tearing, or only render once every 16ms meaning 11 ms of idleness. Running old games that's not an issue, but newer titles would be wanting to make better use of the hardware.

The other reason to refresh mid-screen is if rendering a frame takes long that a refresh cycle. If you are rendering a frame every 16 ms, coinciding with screen refresh, everything looks good - that is until a frame takes 20ms to render. Such a frame overruns the refresh, giving two options. Either you wait until that frame is finished before displaying it, meaning a judder in the framerate, or you chuck it on the screen as soon as it's ready which'll be part-way through the draw, resulting in a tear.

Thus the cause is software, a game designed such that it does not render a frame in a single refresh period and have it ready in time for display when the TV is ready to start drawing from the top of the screen. Solutions are either to lock synchronisation with vsync causing frame-rate judders, or simplify/optimise the graphics so they get drawn in time.
 
Back
Top