Windows 8.1 DPI per monitor: In which situations does it interpolate?

2

1

I'm curious about the new "DPI per monitor" feature of Windows 8.1.

My question concerns legacy applications that do support a global DPI setting, but are not yet "per monitor DPI aware". These applications can render themselves at any DPI, so they should always render at the display resolution when using just one monitor.

But with multiple monitors at different DPI settings, sometimes Windows has to scale them by simple image interpolation. In which situations does that interpolation happen?

I found conflicting information:

  1. The developer of VirtualDub [1] writes that there is a "Global DPI" setting. All legacy applications are rendered at this resolution and then just interpolated to the respective monitor size. This would mean that on one monitor, legacy applications are always interpolated and blurry.
  2. AnandTech [2] writes that these applications are "initially scaled at the DPI setting of whichever monitor they are opened on". Only if you move them to a different monitor do they get interpolated. Which seems like a much better solution - if you open programs on one screen and leave them there, they should always render at the native resolution.

Who is right?

[1]: http://www.virtualdub.org/blog/pivot/entry.php?id=384 under "The global DPI setting"

[2]: http://www.anandtech.com/show/7939/scaling-windows-the-dpi-arms-race/5 second paragraph

LTR

Posted 2015-02-11T11:55:17.060

Reputation: 194

Answers

2

My question concerns legacy applications that do support a global DPI setting, but are not yet "per monitor DPI aware". These applications can render themselves at any DPI, so they should always render at the display resolution when using just one monitor.

System–DPI Aware Applications aren't rendered at any DPI - that apps are rendered at system DPI and - if a monitor DPI is different from system DPI - are virtualized to monitor DPI. So even when you have one monitor and this monitor have DPI different from system DPI System–DPI Aware Application will be scaled.

But with multiple monitors at different DPI settings, sometimes Windows has to scale them by simple image interpolation. In which situations does that interpolation happen?

Virtualization and rendering for:

  • Not DPI–aware Applications: rendered on 96 DPI, virtualized on any monitor with DPI different from 96 DPI.
  • System–DPI Aware Applications: rendered on system DPI, virtualized on any monitor with DPI different from system DPI.
  • Per Monitor–DPI Aware Applications: rendered on monitor DPI (WM_DPICHANGED message), isn't virtualized.

I found conflicting information:

The developer of VirtualDub writes that there is a "Global DPI" setting. All legacy applications are rendered at this resolution and then just interpolated to the respective monitor size. This would mean that on one monitor, legacy applications are always interpolated and blurry.

AnandTech writes that these applications are "initially scaled at the DPI setting of whichever monitor they are opened on". Only if you move them to a different monitor do they get interpolated. Which seems like a much better solution - if you open programs on one screen and leave them there, they should always render at the native resolution.

Who is right?

If I understand it correctly:

  • VirtualDub developer means System–DPI Aware Applications

while

  • AnandTech means Per Monitor–DPI Aware Applications

so both are right.

There are - quite correct - Microsoft informations which - I guess - have been a source of AnandTech article.

g2mk

Posted 2015-02-11T11:55:17.060

Reputation: 1 278

1

This is documented by Microsoft in this TechNet article

enter image description here

Screenshotted, because tables.

qasdfdsaq

Posted 2015-02-11T11:55:17.060

Reputation: 5 762