Windows 8.1 - More DPI Changes

When Microsoft launched Windows 8.1, it continued to refine the scaling functionality. To assist with people using a tablet such as the Microsoft Surface as a desktop replacement, Windows 8.1 now has the ability to have independent DPI settings per display. This was sorely needed, as anyone who used a Surface Pro (a 1920x1080 pixel 10.6” display) and then connected it to an external 1080p monitor that was two to three times the size of the tablet display complained bitterly about what a terrible experience this was. The Surface Pro’s on-device screen is set at 150% scaling which is necessary to make that resolution work on a 10” screen, but on a 24” monitor all on-screen elements are enormous.

Having two independent DPI settings is not without its challenges. Applications are initially scaled at the DPI setting of whichever monitor they are opened on. With any multi-monitor system, the operating system has to be able to deal with a person moving an application from one monitor to the other. If the application is scaled at the initial DPI, how to you keep it from becoming too large or too small when moved? The solution is once again DPI Virtualization, and once again it’s a solution that works but it’s not ideal.

If the initial monitor is a lower DPI, the application will be scaled up when moved to the higher DPI display, and if it moves from a High DPI monitor to a low DPI display, it will be scaled down. Just like with the Windows Vista DPI Virtualization, this method can result in applications that aren’t as sharp as they should be, as well as quirks with user elements. To get around these issues, Microsoft has expanded the DPI API to allow for per-monitor DPI-aware applications.

Applications that are per-monitor DPI-aware are expected to automatically re-scale themselves when moved between displays. They can do this because the operating system will send a WM_DPICHANGED message to the application when most of the application’s area has moved to a display with a different DPI level. The message sent to the application includes a recommended DPI level, but the application can choose whatever value it wants.

Windows 8.1 also improves several other key elements of DPI settings, continuing the tweaks made since the days of Windows XP where you had to reboot for a DPI change.

High DPI Windows Features
Feature Windows XP Windows Vista Windows 7 Windows 8 Windows 8.1
DPI Virtualization of DPI-unaware apps No Yes Yes Yes Yes
DPI Virtualization of System DPI-aware apps No No No No Yes
API to declare DPI awareness level No Yes Yes Yes Yes
API to declare per-monitor DPI awareness No No No No Yes
APIs to retrieve system metrics and DPI Yes Yes Yes Yes Yes
Window notification of DPI change No No No No Yes
APIs to retrieve monitor DPI No No No No Yes
Requires reboot for monitor DPI change N/A N/A N/A N/A No
Requires a reboot/log off for system DPI change Reboot Reboot Log off Log off Log off
Per user DPI setting No No Yes Yes Yes
Auto configuration of DPI at first logon No No Yes Yes Yes
Viewing distance incorporated in default DPI calculation No No No No Yes

All of this DPI talk has focused 100% on the desktop environment. That is because the Modern environment for Windows has the luxury of being built with no legacy applications to deal with, so it can actually work in a manner similar to Apps on iOS and Android.

Windows 8.1 - Windows Store Apps

Love it or hate it, the Modern environment for Windows came at a time when High DPI devices already existed. This allowed it to be architected with support for native scaling for all applications. Windows Store apps are automatically scaled by Windows based on physical screen size, resolution, and device form factor at a ratio of 100%, 140%, and 180%. Windows Store apps encourage the use of scalable vector graphics if possible, or multiple copies of bitmap images to allow crisp images regardless of the scaling used.

Windows Store apps, and even Windows itself, scales not only the DPI of the application, but also how much content the application can display based on the physical screen size. Larger displays, much like in the desktop world, are often used to see and do more on the screen rather than just make everything larger as on a phone, and the Windows Runtime allows for all of this.

Windows Store apps require far less work from the developer in order to achieve this scaling. The app doesn’t have to be DPI aware, because by default all applications automatically are. Instead, things such as XAML layouts and SVG graphics allow the apps to be rescaled completely by the operating system.

Here is Adobe Touch, a Windows Store app version of Adobe Reader. It’s perfectly at home even at 3200x1800 on a 13.3” display. All of the UI elements are correctly sized and of course still usable by touch.

When It All Goes Really Wrong Final Words
Comments Locked

114 Comments

View All Comments

  • kasakka - Sunday, April 20, 2014 - link

    Many monitors and TVs have reportedly messed up EDID data so it's probably not completely reliable.
  • invinciblegod - Tuesday, April 15, 2014 - link

    Now that I think about it, how would you side swipe with a windowed modern app (to access settings)? Would you sideswipe the application or the edge of the panel? If it's the edge of the panel, that would be sort of weird since it's not part of the window (ironically, Mac users would not find this dichotomy confusing as they already have one in the Menu bar).
  • Brett Howse - Tuesday, April 15, 2014 - link

    Always swipe the right side to access settings.

    If you have two metro apps (or more) open an snapped, it will do settings for the active (last used) window. If you're not sure which is active, the bar in between the two (or more) metro apps will have three dots and a bar, with the bar always on the side of the active app.
  • Brett Howse - Tuesday, April 15, 2014 - link

    To specifically answer your question about windowed - obviously we're not sure yet what they will do but I imagine it will be the same as now with the active window having the settings but we won't know until we see some bits from Windows 9.
  • Laststop311 - Tuesday, April 15, 2014 - link

    poor dpi scaling has kept me away from high dpi notebooks. I'm hoping for an alienware 18" m18x with gtx 980m 20nm flagship maxwell in sli and a 4k ips screen. Even tho my personally upgraded m18x r1 is still goin strong with 4.2ghz core i7-2960xm + gtx 680m sli the massive battery gains i will get going to 1st gen 14nm broadwell + 1st gen 20nm maxwell from 2nd gen 32nm sandy bridge + 1st gen 28nm will make it worth it. Just hope sli gtx 980m is enough to game in 4k on at least 1 step below ultra settings
  • Antronman - Tuesday, April 15, 2014 - link

    If you actually want an alienware, you don't the first thing about technology.
    Here, let me fill you in:
    Alienwares = Overpriced, underperforming Dells.
  • bznotins - Tuesday, April 15, 2014 - link

    I tried running Win8 in VM on a 13" MBP and even with the tweaks noted in this article, Chrome still doesn't look half as good as it does in OSX. I have no idea if this is a Win8 problem or a Chrome problem (or both), but regardless it keeps me from considering a high DPI Windows laptop. Or even running Win8 fulltime on my MBP. Hopefully they get it fixed at some point in the future.
  • Accord99 - Tuesday, April 15, 2014 - link

    Chrome probably, it used to work well in HiDPI back late last year but something that Google did broke Chrome completely for a period of time, then only partially fixed.

    I don't care too much because I prefer using Firefox which works well.
  • darthrevan13 - Wednesday, April 16, 2014 - link

    It also could be the VM driver. It looks okay on a native windows machine with high DPI
  • rxzlmn - Tuesday, April 15, 2014 - link

    How about the other side of the high DPI development, hardware scaling? I have read multiple times on forums that high DPI screens would often not be able to properly scale down to a lower native resolution (i.e. that is an exact fraction of the original resolution), due to internal electronics still doing some kind of interpolation instead of pixel binning.

    For instance, I plan to buy a 4K laptop in the near future (the Lenovo Y50 probably), and one point why I want 4K and not 3K or something else is, that 4K would be able to natively scale down to both 720p (for games) and 1080p (for desktop stuff that is not usable via Windows DPI setting, yes, I'm looking at you Adobe).

    Does anyone have any insight on whether a 4K display on a notebook would use pixel binning to scale down? Or not? And if so, why, and will this be an issue that is intrinsic to the monitor, or somehow be tweakable by SW?

Log in

Don't have an account? Sign up now