Final Words

Windows has always had the burden of bringing forward legacy APIs and code to allow applications designed for previous versions to continue to operate on newer releases. It also supports a huge number of display sizes, screen resolutions, and form factors. Because of this, it often struggles when major changes are introduced. One such change was the new security model in Windows Vista where (finally) users were no longer administrators by default, and another such change is ultra-high resolution displays with the different goal of improving image quality rather than just increasing usable real estate on the desktop.

Windows 8.1 now officially has three different states for applications: DPI-Unaware, System DPI-Aware, and Per-Monitor DPI-Aware, and solutions are in place to handle all three. It also has a fourth unofficial state: DPI-Unaware masquerading as DPI-Aware applications. Unfortunately there is no current solution for these unofficial applications.

One interim solution would be to have a way to force such applications to scale up, and therefore ignore the DPI-aware flag set in the executable. This would allow DPI Virtualization to scale the applications as needed. This is certainly not ideal, but when you are dealing with a product like Windows with such an enormous catalog of applications, it’s necessary because many of these applications will never be updated to correct scaling issues. The correct solution is to have applications updated to take advantage of the High DPI systems to provide a better user experience, but again this doesn’t really work for legacy applications.

One of the problems holding developers back is that there have been few high resolution devices on the market, meaning few developers would even bother taking the time to correct these issues. Now that there are finally devices from virtually every single computer maker with high PPI panels, there is a market force that will hopefully pressure developers into using best coding practices for scaling DPI.

But what about the current state of things –is it worth avoiding High DPI devices until more applications work properly? My personal experience is no, it’s not worth avoiding them. This will of course depend on what applications you use, but the advantage of a high resolution display is that you can always set the resolution lower if necessary as a workaround on applications like Photoshop. The advantage is that in other applications, you can get very crisp, clear text and a fantastic display for media. Within the next year, I would imagine most major Win32 applications that are actively being developed will have to address these issues. When Apple launched the Retina MacBooks, its catalog of applications took some time to be updated; as that happens for Windows applications, the investment in a High DPI system will make even more sense.

The final piece of the puzzle is the next iteration of Windows. Already shown at BUILD were Modern apps running in a windowed mode on the desktop. These apps will of course have no issues scaling with DPI, providing the ideal “one size fits all” approach to DPI scaling. Figuring out a similar solution for legacy applications on the desktop may be a bit more difficult, but it’s certainly something Microsoft is working to address. Time will tell how well they manage to do so.

Sources:

http://blogs.windows.com/windows/b/extremewindows/archive/2013/07/15/windows-8-1-dpi-scaling-enhancements.aspx

http://msdn.microsoft.com/en-us/library/windows/desktop/dd464659(v=vs.85).aspx

http://msdn.microsoft.com/en-us/library/windows/desktop/dn469266(v=vs.85).aspx

Windows 8.1 DPI Changes
Comments Locked

114 Comments

View All Comments

  • weebnuts - Wednesday, April 16, 2014 - link

    Thanks for the Google Chrome tip, it used to scale fine until a month or so ago, they must have changed things in the new versions when the new windows 8.1 update was released.
  • Icehawk - Wednesday, April 16, 2014 - link

    I just ran into this issue this week when I added a Dell 27" to my family of older 19x12 16:10 monitors - aside from the aspect ratio change in order to use the new Dell as my main monitor I need scaling or the text is too small - now my old monitors are cartoonishly large. Was hoping to skip W8 but will try W8.1U1 and see if it works better with the different DPI levels and doesn't drive me insane with Metro, ahem, I mean Modern.
  • kgh00007 - Wednesday, April 16, 2014 - link

    Cheers for the tip on Chrome, it looks way better now on Win 8.1 on my 40" 1080p TV!
  • fokka - Wednesday, April 16, 2014 - link

    i'm really thankful for the article shedding more light at this topic, maybe this will bring more developers to update their programs to feature better hidpi-skaling.
  • vlad0 - Thursday, April 17, 2014 - link

    Great talk on DPI @ build2014

    http://channel9.msdn.com/Events/Build/2014/2-535
  • liffie420 - Thursday, April 17, 2014 - link

    This is not really a comment on the article itself but something that the screen shots bring up dealing with web pages. This does not apply to all pages however, but with most people using a widescreen display (we are talking at least %95 at this point) regardless of actual resolution why is it that we page developers can not manage to scale the page elements to wide screen?? Having done a very small amount of hand coding html back in the day (16ish years ago) I know you want to aim for the LCD to be sure your pages load correctly on all browsers and across connection types. But why is it you can't fill the sides os your browser window with the actual site. Im in the newest chrome browser with a 22" lcd at 1080P yet the site itself only falls in the middle leaving a couple inches of screen empty. Yes you can F11 in most browsers and full screen but that still rarely fixes the issue. Just a pet peeve of mine is all.
  • dorekk - Saturday, June 21, 2014 - link

    Because very wide lines of text are extremely awkward to read, so it's much better to make the text area of a website look roughly like a portrait-oriented piece of paper.
  • Androidtech - Thursday, April 17, 2014 - link

    I find it rather perplexing that a mobile operating system like Android is more capable at scaling resolutions than something as old as windows. I thought things are supposed to get better with age and experience. Oh well at least this summer we will have some new code for websites to scale properly !
  • caywen - Friday, April 18, 2014 - link

    In actuality, IE11 on Windows 8.1 isn't clear of these problems when doing multi-monitor. I have a Yoga 2 Pro connected to a 24" 1080p display. IE11 looks beautiful on the Y2P display, but when moved to the 24" display, the whole UI becomes enormous. The title bars are almost 1" thick! Clearly, Microsoft still have a few hurdles.

    Other windows, when dragged between displays, instantly snap to their "normal" size on that display, but the effect is strange.

    I think what they ought to do is:
    - Support high-DPI virtualization where applications can advertise that they support, say, 200 or 300dpi. The author can then write their app specifically to that. Windows could then do the same DPI virtualization, but the scaling would then be much sharper (and almost always downwards).
    - Draw *only* from the virtual buffer to each display. That way, there would be no snapping effect - just the app always being the right size even when between displays.
    - Create a virtual buffer at the highest DPI of all the connected monitors and have 96dpi apps draw scaled-up into that buffer. The difference would be that text draw calls would draw at the native size rather than at 96dpi. At least the text in these apps would be razor sharp, if not the icons and other things.
  • AnnonymousCoward - Saturday, April 19, 2014 - link

    The name "retina display" doesn't even make sense, because a retina senses light. Apple just went with "[some word associated with vision] display".

Log in

Don't have an account? Sign up now