Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
lowenz

GZDoom OpenGL strange issue on Radeon GPUs in fullscreen mode

Recommended Posts

No problem on GeForce GPUs.

No problem on GeForce AND Radeon GPUs in Vulkan mode.

 

The problem is related to how AMD's Radeon OpenGL driver handles fullscreen mode (on Windows 10, I can't test on Windows 7) and of course how fullscreen mode handling is implemented in GZDoom (all last versions are affected!)

 

Take a look here, BEFORE activating the RTSS (Rivatuner Statistics Server) OSD you can see it very well.....somehow the OSD activation solves the issue!

gzdoom-2019-10-23-17-05-03-510.jpg

 

Frametime heavy fluctuation apart (=massive stuttering playing WITHOUT the OSD enabled).....the performance in fullscreen mode is sometime abysmal (in Quake Champions Doom Edition is totally evident).

 

No problem in windowed mode, no frametime fluctuation nor abysmal performance...... it's all limited to the FULLSCREEN MODE!

 

Pleas devs, fix it!

Share this post


Link to post

The fix is called "Vulkan". AMD and OpenGL is a combination from hell, it never worked properly. It is very clear that AMD's driver does not play well with Windows's fullscreen handling, but that's something for AMD to fix.

 

The Vulkan renderer should be absolutely fine by now - the only real issue I know of is that it depends on a static amount of memory being allocated and if that gets exceeded, may error out. But to hit that limit you'd need a map like Frozen time with a skybox of the same complexity, i.e. it'd slow down so much that the map would be unplayable even on the most powerful systems out there.

 

Share this post


Link to post

Well, but this behaviour is unique.

 

Not the abysmal performance, that's common to other OpenGL engines + AMD, sadly :(

 

But that strange fluctuation solved by an overlay....is kind of unique.

Share this post


Link to post

And to be precise, that behaviour is related to the Vertical Sync implementation used in fullscreen mode.

The problem disappears disabling the VSync and capping the framerate to 62 (but doing so the tearing is of course still present).

Share this post


Link to post

VSync and OpenGL seem to be a story all of their own. I had a problem with it on NVidia with EDuke32 and it took me several weeks to find out what particular combination of feature use made it throw up. So I'm a bit stuck here because I do not have an AMD card to test on. All I can say is that the last time I ran GZDoom on by brother's laptop with a lowest end AMD chip I couldn't see any such problem, of course all I could run on that system with stable 60 fps was vanilla maps. You are actually the first person reporting this so it cannot really be a common AMD problem. You'd suspect that some have reported such a glaring issue, wouldn't you?

 

Share this post


Link to post

No but that fluctuation is really interesting. It tells something about the VSync handling by the driver (and we talk about a "modern" OpenGL 3.3 context, not an old OpenGL 1.x quirk) but maybe about the implementation too by the GZDoom developers.

And Windows 10 fullscreen is in the equation too, somehow (there are several "fullscreen mode" in Windows 10).

 

And it's real interesting because enabling an overlay (in my case RTSS OSD, not tested the AMD native one bundled with the Catalyst).....it disappears. And I got perfect stable framerate as you can see. Kind of counter-intuitive behaviour.

Edited by lowenz

Share this post


Link to post

The difference is that for a true fullscreen window the composition by the system is disabled but with the overlay it isn't. Has this behavior persisted across multiple driver versions?

 

Share this post


Link to post

Tested only on 19.9.3 (just buyed the card, and RX 570 and I'm searching for its quirks as you can imagine :D Found plenty of them in OpenGL but surprising NOT in OpenGL 1.x!)

Windows 10 (and 8/8.1) has no "real" fullscreen mode as seen in Windows 7, only:

 

1) borderless windowed fullscreen

2) fake fullscreen (GZDoom solution?)

3) an elusive "exclusive fullscreen" but I think it's fake nonetheless

 

Maybe a true "borderless windowed fullscreen" (a window without the borders) can simply solve this issue, in fact in windowed mode all is good.

But of course there's no Vertical Sync possible in that mode, only the FPS cap is possible and so the frame de-tearing process is on the Windows compositing engine, the DWM.

 

Is it possible in OpenGL 3.x to implement the Borderless Window in Windows?

 

 

Edited by lowenz

Share this post


Link to post

GZDoom uses a borderless fullscreen window, but that will make Windows switch off composition automatically.

A true exclusive fullscreen mode is not available for OpenGL - that has never existed. Even 20 years ago OpenGL on Windows was borderless fullscreen.

 

 

Share this post


Link to post
4 minutes ago, Graf Zahl said:

GZDoom uses a borderless fullscreen window, but that will make Windows switch off composition automatically.

A true exclusive fullscreen mode is not available for OpenGL - that has never existed. Even 20 years ago OpenGL on Windows was borderless fullscreen.

 

 

Ah that's why in old OpenGL applications the gamma regulation in the application alters the Windows one too and sometimes exiting the application you find the desktop brightened-up? :D

Share this post


Link to post

So the simple solution is to switch to Vulkan? Perfect, you're the programmer :D

 

Ah, maybe in the future release can you bring in the menus the framerate cap as an option?

And thanks for your work and kindness! ;)

Edited by lowenz

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×