This blog addresses DPI Scaling issues for Windows* apps.
There is currently a proliferation of many different form factors now available on the market. There are high-DPI tablets, notebooks, 2-in-1s, All-in-Ones, etc. With variety and choice of devices, comes both high-DPI and DPI scaling issues that modern-day apps must address. Today’s app developer needs to write apps that are DPI-aware. Let's start with some definitions:
To provide context of how apps deal with DPI issues (or not), here are some definitions:
Generally speaking for Win 32 app development, if an app is developed using Windows Presentation Foundation (WPF) and designed for Windows 8 and uses all the standard Windows Controls and elements then there shouldn't really be any issues. Problems arise when writing custom or heavily skinned windows elements and GUIs (also if using some of the other Windows Frameworks like Qt.)
The following paragraphs outline what issues app developers are experiencing and what can be done to minimize DPI Scaling issues moving forward. Note, however ,that if the app is designed with DPI scaling in mind in the first place then the issues below will most likely be minimal if not non-existent.
|DPI setting||Icon (SM_CXICON)||Small icon (SM_CXSMICON)|
To assess an application's DPI compatibility, test it at a variety of resolutions with different high DPI settings. This can be done fairly easy using Virtual Machines with the different resolution settings. The following table provides a recommended set of DPI settings and minimum resolutions to consider when testing DPI awareness level. The chosen DPI setting should be close to the physical DPI that the monitor is capable of. For example, if your display has a native resolution of 1440x900 pixels and a physical display of 14.4 inches x 9 inches, the phisical DPI is 100 DPI ( 1440 horizontal pixels/ 14.4 horizontal inches.)
|DPI Setting||Minimum Resolution|
The following resources were found during the compilation of this blog. The articles from Ars Technica and Anandtech are good examples that can help us understand the consequences of not designing for multiple DPI systems and how some of these apps can experience issues when run on High-DPI devices.
Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice.
Notice revision #20110804