PDA

View Full Version : Fullscreen tearing with native resolution



ProXicT
05-17-2015, 05:07 PM
Hi there!

I'm creating window with win32 api without glut etc...and I run into a problem with screen tearing in fullscreen.
Basicly I have set WS_POPUP as a window style and resolution of my monitor as window size.
I'm running on AMD radeon HD 7770 and I see terrible tearing!
When I put WS_POPUPWINDOW style instead of WS_POPUP, the tearing is gone, however I have unwanted border around my scene.
Another thing I noticed is fact, that the tearing disappears when the resolution is NOT native.
So when I pass my_screen_resolution + 1 as size parameter, the tearing is gone.

RESx = 1920;
RESy = 1080;
hwnd = CreateWindowEx(NULL, NAME, NAME, WS_POPUP, 0, 0, RESx, RESy, NULL, NULL, hInstance, NULL);
SetWindowPos(hwnd, 0, -1, -1, RESx + 1, RESy + 1, 0); // With this function call, the tearing disappears!

What can I do to get rid of the tearing without having to run on not native resolution?

hidefromkgb
05-17-2015, 05:09 PM
I highly suspect a driver issue here.

ProXicT
05-17-2015, 05:21 PM
I don't think so since I don't have such problem in other games. Plus I am not alone having this problem.

henniman2
05-18-2015, 08:28 AM
we have the same problem here. i found somewhere on the web (do not remember the link) that on any windows with aero th swap chain will be replaced with the system built-in one when an application (application window) goes fullscreen. it would be great to hear how to prevent that.

Dark Photon
05-20-2015, 08:13 PM
Which Windows? On Win 7 if I disable that annoying compositor by dialing in a Windows 7 Basic theme, then with VSync enabled, I get OpenGL windows rendered w/o tearing and locked to 60Hz on an ATI GPU, even when they aren't rendered full screen.

henniman2
06-03-2015, 12:00 PM
i found this comment

When you make a fullscreen window, it will bypass the DWM compositor.

here:
http://stackoverflow.com/questions/30293074/opengl-tearing-with-fullscreen-native-resolution

does anyone know where datenwolf has this information from? and does anyone know how to prevent this 'bypassing'?