Emulator Issues #7169
closedOpenGL fullscreen bugged for AMD card users.
0%
Description
The following issue happens in all games.
What's the problem? Describe what went wrong in few words.
OpenGL's fullscreen is bugged on AMD cards. This includes:
Horrible tearing.
"Would you like to end emulation" dialog not showing at all when ending emulation. Input however is still accepted and it can be seen when exiting fullscreen mode.
The game looking like it's playing at a lower FPS than it actually is. (Frame skipping)
etc.
What did you expect to happen instead?
All of the above things not to happen.
What steps will reproduce the problem?
- Have an AMD card.
- Use OpenGL
- Go to fullscreen
Dolphin 3.5 and 3.5-367 are old versions of Dolphin that have
known issues and bugs, so don't report issues about them and test the
latest Dolphin version first.
Which versions of Dolphin did you test on?
4.0.2, 4.0-13XX (happens on all of them)
Does using an older version of Dolphin solve your issue? If yes, which
versions of Dolphin used to work?
No
What are your PC specifications?
Windows 8.1 64-Bit
Intel i5 4670k @4.4Ghz
ASUS HD7970Ghz (flashed to R9 280x BIOS but it doesn't matter anyways)
8GB Corsair Vengeance Dual Channel
Are you using the 32 or the 64 bit version of Dolphin?
64-Bit
Is there any other relevant information? (e.g. logs, screenshots,
configuration files)
Vsync makes the tearing be better, but not gone. If the FPS fall under gamespeed the FPS automatically half, so this is not a solution.
A while ago on IRC, Billiard and me were talking about this. He procceded to make a quick "Adaptive Vysnc" patch that just turned Vsync on/off depending on if the game ran fullspeed (or not). IIRC he even made a branch on GoogleCode. It was abandoned due to me totally forgetting about it, but I hope someone picks it up again.
Also, why didn't no one report this already? My laptop does the same thing so I can't be the only one that has this, right?
Updated by florian98.rg over 10 years ago
Please change the title, should say "fullscreen" instead of screen :P
Updated by captgrrr over 10 years ago
I believe its been reported a few times in other issues that have been fixed (issue 6964 for example) forcing vsync in ccc fixes the tearing and frame skipping for me. It wont fix the dialog box issue but its a good work around if you need to play something in opengl.
i7 4770k @ 4.5ghz
Radeon 7950 boost (latest beta drivers but i dont think they touched ogl)
16gm ram
win8.1 x64
Updated by florian98.rg over 10 years ago
"I believe its been reported a few times in other issues that have been fixed ( issue 6964 for example) forcing vsync in ccc fixes the tearing and frame skipping for me. It wont fix the dialog box issue but its a good work around if you need to play something in opengl."
Yeah, but like I said, if the game falls under 60/50FPS it automatically halfs the FPS because that's how Vsync works. Maybe a workaround for fast enough systems, but if someone doesn't reach fullspeed all the time this isn't a fix.
Updated by captgrrr over 10 years ago
I used the words work around because its not a fix... make sure to force vsync in catalist control center and not in dolphin. For whatever reason it makes a big difference.
Updated by supermegaguy1 over 10 years ago
All of the above issues apply to me as well. 7970 @ 925/1375, Stock BIOS & 14.3 Beta, Windows 8.1 x64 + x64 Dolphin.
Updated by kodiacktech over 10 years ago
I can reproduce this issue. OpenGL's vertical sync does not appear to function properly on my Radeon R9 290 GPU (I was able to reproduce this on my old 7970 as well). I am able to force vertical sync in CCC by choosing the "Always On" option for "Wait for Vertical Refresh", but the "On/Off, unless application specifies" options do not appear to have any effect. Basically, the vertical sync option in Dolphin doesn't seem to function as intended for the OpenGL back-end.
Updated by kodiacktech over 10 years ago
Sorry for the double post, but I've got a bit more to add after further testing. One other unfortunate side effect of this is that the frame limiter cannot be fully removed when vsync is forced. The limit will only go as high as it takes to get the game to your monitor's refresh rate. For example, games that natively play at 60 FPS will not see any change, while games that play at 30 FPS can go up to "only" 200% speed.
One strange thing I found that may be related to issue 7177 is that it is possible to allow the frame limit to go beyond your refresh rate with vsync enabled by disabling idle skipping; however, this does not actually speed up the game - it just makes the sounds and music play faster. For example, on a 60 Hz monitor, Brawl may report 225% speed. Its sounds as music will be much faster, but the actual logic and gameplay will continue to tick only sixty times per second. In the Legend of Zelda: The Wind Waker, you may get 250% speed. In reality, the sounds and music will play at 250%, while the game itself will play at 200%.
This isn't entirely related to the vertical sync issue, although it is an issue that does somewhat stem from it since there don't appear to be any proper workarounds or solutions.
Updated by Anonymous over 10 years ago
Reproduced here, log: http://vpaste.net/8NiqN
Line "29:15:435 GLInterface\WGL.cpp:29 E[Video]: No support for SwapInterval (framerate clamped to monitor refresh rate)." is clearly a bug.
I look in here https://github.com/dolphin-emu/dolphin/blob/master/Source/Core/DolphinWX/GLInterface/WGL.cpp#L134 and for me code to get wglSwapIntervalEXT pointer should be in MakeCurrent.
Updated by florian98.rg over 10 years ago
I found this:
Some ATI GLX drivers may report WGL_EXT_swap_control yet actually export glXSwapIntervalSGI.
http://www.opengl.org/wiki/Swap_Interval
Fwiw, you guys should make bVSync a int Variable all together. Adaptive Vsync requires -1 but bool can only be 1 and 0.
Updated by Anonymous over 10 years ago
ATI Drivers, ie. old drivers. AMD Driver should do that, also recent ones - 14.4 have GL_ARB_buffer_storage support so now GL_AMD_pinned_memory is only useful for AMD legacy products (HD4xxx and older).
Updated by florian98.rg over 10 years ago
glxinfo on Linux Mint 16, doesn't show me GLX_EXT_swap_control.
I assume this is an AMD driver issue then.
Updated by florian98.rg over 10 years ago
Nevermind, it actually does show up :D
What'S the difference between GLX_EXT_swap_control and GLX_SGI_swap_control?
Updated by MayImilae over 10 years ago
- Status changed from New to Accepted
- Priority set to High
- Category set to gfx
- Regression set to Yes
- Milestone set to Current
More vsync problems.... Someone needs to fix this before the release.
Marking as accepted, confirmed here and on a forum post.
Updated by florian98.rg over 10 years ago
Alright. VSync broke somewhere between 4.0-619 and 4.0-690. Before 4.0-619, Dolphin will not show a SwapInterval warning and VSync is working.
Updated by florian98.rg over 10 years ago
https://github.com/dolphin-emu/dolphin/commit/5a599d472e49ef364748b880c379617635622280
Commit that broke VSync on OpenGL.
Updated by florian98.rg over 10 years ago
Dem silly one line off errors. SwapInterval extensions was grabbed in the wrong method. Oh snap.
Updated by JMC4789 over 10 years ago
This should be fixed by Exclusive Fullscreen. I can test this if no one here does.
Updated by JMC4789 about 10 years ago
- Status changed from Accepted to Fixed
Fixed. I put in my Radeon to test this. Works absolutely fine.