FPS caps causing screen tearing?

xnikx

[H]ard|Gawd
Joined
Oct 25, 2006
Messages
1,730
Any ideas as to why using msi afterburner to cap my fps at 60 causes some pretty bad screen tearing, only on the lower part of the screen.

on bf3
when using v-sync, which i dont want to use, game play is very smooth with no tearing.
when not using v-sync or fps caps i get fps that jump from anywhere from 60s to 110s causing smooth but stuttery game play.
when i use fps cap i get very smooth game play but some pretty bad screen tearing.
when i set the cap to 61 or higher i dont get the tearing.

any ideas?
 
Limiting the frame rate can still result in tearing because it is just sending 60 frame per second without waiting to see if the monitor is ready to display them (vsync actually waits for the monitor to be ready). So you could conceivably be tearing every single frame with a 60 fps cap, if every new frame is sent when the monitor is halfway through the last one (although I don't think that would actually happen in practice). Maybe get the new drivers and try adaptive vsync?
 
It's not tearing any more than it was before. It's just a lot more noticeable when it happens in the same place in every frame, which is what you'll get when it's drawing and refreshing at exactly the same rate.
 
You should try the new Nvidia beta drivers with adaptive vsync support.
 
Does it have this same type of screen tearing for other games?

I heard FPS limiters causing screen tearing issues for BF3 before as well, could be related to how it specifically.
 
Is input lag the reason you don't want to use vsync ? If so, you might try using the frame limiter in combination with triple-buffered vsync, but instead set the cap to 59 instead of 60. I have experimented with this a lot, in number of games including BF3, and by far this was the best combination of settings, eliminating all tearing of course, and in my honest opinion, virtually all input lag.

BF3 does have a built in user-configurable frame limiter as well, which I use instead of RTSS for BF3, and it is a bit more granular than the RTSS/Afterburner implementation. I don't know that it would make much if any difference which one you use.

If there is some other reason you want to avoid vsync, then I don't know, but if it really is just input lag that you are concerned with, try what I suggest and see how it feels. I run every game I play this way now.

EDIT: For BF3, create "User.cfg" in the main BF3 directory, and add these lines:

RenderDevice.TripleBufferingEnable 1
GameTime.MaxVariableFps 59

- and then of course make sure you enable vsync in game.

As I said earlier, the in game limiter is more granular than AB, and I have seen it suggested to run at 59.95 fps as opposed to 59(AB only allows for whole frame increments), but I personally didn't notice much if any difference there when I tired them both. I believe triple-buffering is also enabled by default, but, having it in there too shouldn't hurt anything.

Link to a relatively recent discussion that also applies:
http://hardforum.com/showthread.php?t=1675712

As always, YMMV.
 
Last edited:
I'm not sure why you would limit the fps, but I've noticed if you limit 60 fps with 60hz refresh rate the tearing is much more noticable than 62 or 70 fps limit.
 
Without vertical sync, you get tearing. There is no magic number you can set a rate limiter to eliminate tearing.

I can see how vsync can improve tearing (or eliminate it on CRT).

But IMO it should be impossible to eliminate on a normal LCD.

Even when you are drawing complete frames and syncing to them, LCDs write the new frame from the top down. that means with each new frame you have part of the old frame visible on the screen with the new.

Where the new and old meet, motion will show a break, or obvious tearing. Taking high speed snapshots (camera) in a game with a lot of motion should verify this.
I assume this is what we mean by tearing:
http://img224.imageshack.us/img224/5333/vsyncxm1.jpg

CRT fades after drawing, so by the time you are writing the new frame, the old one is fading, so you don't really see the overlapping frames.

But on LCD, pretty much every frame with motion should have tearing...
 
The tearing is caused by the monitor switching from one frame to the next in the middle of drawing the frame - as long as it is working on a single frame at a time you won't see any tearing. Which is the whole point of vsync, it doesn't send the new frame until the monitor is ready to display it. There is no visible tearing on an LCD with Vsync on, just like there is no visible tearing on a CRT with Vsnyc on.
 
Try 57 or 58, i know it sucks to be lower than 60 but it should all but remove tearing. Is why i like 120hz monitors.
 
IMO it should be impossible to eliminate on a normal LCD.
Pixels don't change colour instantaneously. You don't see a sharp transition, you see a gradual fade-in.

5brxv6.jpg


Even if this wasn't the case, it would still be barely noticeable. The transition would be sweeping from top to bottom over the course of a few milliseconds, which is much harder to spot than a tear which sits still for an entire refresh interval. After all, CRTs do have a sharp transition (between a black screen and a frame), and I've never noticed it...
 
Back
Top