Full Screen Woes Under Metro


UPDATE: 6/12 – Huzzah!  The latest build of Windows 10 beta (fbl_impressive) fixes the issue!  Relief is on the horizon!

There’s been lots written about the relative merits of the Metro UI being applied to the traditional desktop OS.  This entry isn’t about coming to that discussion late to the party.  If Windows 10 and Server ’12 tell us anything, it’s that the design aesthetic, at the very least, is here to stay for a bit and will continue to evolve.  Unfortunately, along with the stylistic changes introduced with Metro, came a particularly annoying bug which impacts an admittedly niche (but popular) corner case.  If you’re a PC gamer, who games on a laptop, and runs a high resolution desktop (think QHD), then you know exactly where this is headed.  When the desktop is running native resolution (basically all the time), games will not scale to full screen unless they are also running native resolution (and unless you have a Titan X equipped laptop, this is “never”).  Here is the effect:

untitled

To experience this phenomenon, a few conditions have to be met:

  • Windows 8+
  • Touchscreen panel
  • Running native res
  • Trying to run lower than native res under DirectX

I will also throw in these two, but with a clarifier:

  • Running IntelHD (although this is basically all laptops with few exceptions)
  • Running NVIDIA Optimus (the problem does also occur in pure Intel setups.  Nearly all NVIDIA laptops are Optimus, so it’s not clear to me if a pure NVIDIA setup would be immune)

Potential exceptions might be rigs running the full desktop NVIDIA parts as the only GPU, or AMD parts leveraging the APU and/or mobile ATI parts.  What happens in a nutshell is this:

  • The Intel drivers do not allow you to independently set scaling behavior by resolution (so you can’t go into the control panel and say “for 720p, always scale”)
  • There is no “default scaling behavior” that you can set – if the desktop is at native resolution, “maintain aspect ratio” is hard set since it is the only setting that makes sense for native res
  • NVIDIA cedes control of scaling to Intel under Optimus since, I believe, the NVIDIA part has no physical path to the panel (it passes through the Intel and relies on it for panel setup)

This problem has been lingering for years.  A quick web search for “cannot run full-screen non-native res” will show posts as old as 2012.  The work around thus far has been one of two things:

  • Run the desktop in something below non-native res (this sucks)
  • Set the scaling option to “scale up” under the Intel drivers

I recently switched to Windows 10 CTP and discovered that this problem persists.  The workaround, however, stayed the  same.  Until 5/15.  The latest updates to Windows 10, the IntelHD Windows 10 driver, and the NVIDIA Windows 10 driver, introduced a new dimension to the problem.  In the absolute latest Windows 10 and driver bits for Intel/NVIDIA, the above work around no longer works. So are we all doomed to a life of postage stamp gaming?  No!  There is an actual work around (well actually I’ll discuss two).

First, the easy button.  Disable touch features in Windows.  For whatever reason, the touch panel HID driver is the actual root cause of this issue.  It can be disabled in Device Manager:

disable

The other work around is functional, but can be a bit onerous for anyone who has a large catalog of games.  The solution here is to utilize the Intel Profile Manager capability to trigger a res switch when a game is run.  That can be found in the Intel HD control panel under “Profiles”:

cpl

To set this up, do the following:

  • First want to set your desktop resolution to the resolution you run full screen gaming under.  So for example, if you want the game to run 1080p, change your current default res to 1080p and set scaling to “scale fullscreen”.
  • Go into profiles (note “current settings” is what will be applied to the profile, this is why we set the resolution above) and set “trigger” to “application”
  • The “display” checkbox will be deselected, but you can reselect it
  • Browse to and select the appropriate EXE
  • Save the profile as something meaningful (ie: Crysis)
  • Rinse/repeat for all games

If you only have a few favorite titles that need to run at lower than native res when fullscreen this works fine.  If you have a big catalog, though, just disable the touchscreen.  Here’s hoping that this get’s fixed before we move to “Windows as a service”!

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s