Fullscreen Exclusive Is A Lie (...sort of)

Feb. 22, 2021
protect

Fullscreen Exclusive Is A Lie (...sort of)

way of rhea video settings

Fullscreen exclusive is a real thing your computer can decide to grant a window, but, as of yet I haven't been able to find a single game where the fullscreen exclusive vs borderless window settings do what you'd expect them to.

If you're an expert in this topic and believe this post is incorrect in any way, definitely email me or DM me on Twitter and I'll issue a correction!

If you're interested in jumping to the conclusion, see Testing Fullscreen Exclusivity in Other Games and Takeaways. If you're interested in my methodology, read on.

Table of Contents

Defining Our Terms

Today I'm specifically discussing Windows 10. I'm using OpenGL and calling into win32 directly, but these results will likely be of interest regardless of your graphics API and windowing library. I should probably define some terms before we start:

  • When I say fullscreen exclusive, I'm referring to a fullscreen window that bypasses the compositor.

  • I'm aware that there's technically a distinction between full screen optimizations mode and fullscreen exclusive, but I'm not particularly concerned about that difference. I ran a number of these tests with FSO disabled and saw no discernible difference.

It's also worth noting, most games that have a fullscreen exclusive option will mess with your display's resolution when it's enabled. Whether or not changing your display settings is necessary for exclusivity, it's certainly not sufficient: again, our goal is to bypass the compositor.

Resolutions & Scaling

A few days ago, I decided that it was time to finish setting up the video options for Way of Rhea. I previously supported the following window modes (or, at least, I thought I did!):

  • Borderless window

  • Windowed

I didn't properly lock the aspect ratio in either of these which could lead to UI and/or game elements being off screen on some setups, so my first goal was to fix that. In doing so, I realized that it's kind of weird that most games only let you choose from a fixed set of resolutions.

Traditionally this made sense–if you're going to mess with the display settings to get the resolution you want, then you can only support resolutions the display supports! However, if you're in borderless window mode which is becoming more and more common, you can set the resolution to anything you want since you're just resizing a framebuffer.

I figured, if fullscreen exclusive support is gonna dictate which resolutions I can support, maybe I should knock that out first. How hard could that be?

Well, you've presumably already seen the title of this post and have a guess at what the answer to that question is. :)

Methods of Enabling Fullscreen Exclusive Mode in OpenGL

Presumably DirectX has an API for this, but I'm targeting OpenGL.

The internet is full of hearsay about what you need to do to get fullscreen exclusive mode in OpenGL. Some say that you need to apply the WS_POPUP window style, others say you need WS_POPUP | WS_CLIPCHILDREN | WS_CLIPSIBLINGS. Others claim you need to call ChangeDisplaySettings with CDS_FULLSCREEN.

There's a big issue with all of these claims: they're not documented, and there's no obvious way to test if they actually work!

If we're serious about doing things right, we need to find a way to test for fullscreen exclusivity.

Testing If We're Fullscreen Exclusive

I'd love to be wrong about this, but as far as I can tell, Microsoft/NVIDIA/etc do not provide a way to directly check if a window is fullscreen exclusive. If you search around online for ways to test for exclusivity, you'll find more hearsay:

Tests That Don't Work

Volume Meter

People often check for exclusivity by changing the computer volume via a hot key and observing whether or not the volume overlay shows up on top of the game.

We can use this to rule out exclusivity (the volume meter won't show up if we're exclusive since we're bypassing the compositor), but we can't use it to prove exclusivity–I've seen games that are clearly not exclusive manage to hide the volume meter anyway.

(I'm actually rather curious how they accomplished this, if you know how to do this I'd be interested in hearing from you.)

Windows Key

Another common suggestion is to check whether the Windows key works. I can see why people suggest this as a test–on some of my test machines, fullscreen exclusive windows do obscure the windows menu. However, this is not true on all of them, and if you're testing a game for which you don't control the source it's very likely that the windows key was disabled manually by the game.

If you try this test yourself, you may notice that even on setups for which the windows menu is not obscured, it causes the window to flash black as it loses exclusivity…

Flashing

The last common suggestion I've seen is to check whether the window/monitor flashes black when it loses focus. In my tests so far, fullscreen exclusive windows will flash

JikGuard.com, a high-tech security service provider focusing on game protection and anti-cheat, is committed to helping game companies solve the problem of cheats and hacks, and providing deeply integrated encryption protection solutions for games.

Read More>>