7

In Windows 10 you can scale globally, and change this on a per-application basis:

scaling

I use scaling to make games appear a reasonable size on a 4k monitor. A recent Factorio update caused scaling to break, which I asked about over on Arquade, so I changed the scaling from 'System (Enhanced)' to 'System' to mitigate the issue.

However, I am not sure what the technical difference between these options are. There is some explanation in an MS Answers answer by Louie Del:

There are lots of improvements and upgrade made in the Windows 10 Anniversary Update, this includes the new DPI options with enhanced feature. To give you an overview of the settings under Override high DPI scaling behavior, you can check the following settings and its effects:

ms answers answer

  • The Application setting was previously referred to as "Disable display scaling on high-DPI settings". It also forces the process to run in per-monitor DPI awareness mode. Windows will be prompted not to bitmap stretch UI (User Interface) from the exe in question when the DPI changes.
  • The System setting will bitmap stretch the UI when the DPI changes.
  • The System (Enhanced) setting is for applications that are GDI-based Windows or Graphics Device Interface (GDI) scaling. It will DPI scale the application on a per-monitor basis. This means that application will definitely become per-monitor DPI aware.

So it seems:

  • Application disables scaling and leaves it to the application to handle it's own resolution - like setting an in-game resolution
  • System does a simple bitmap stretch (how?)
  • System (Enhanced) scales in a DPI-aware basis, and may scale differently per monitor (again, how?)

If the above understanding is correct, it's still pretty superficial: how are the different types of scaling actually done; eg are the results filtered/interpolated, is it done on the CPU or GPU, etc? As such, is there any performance difference between the options?

I'd quite like to know why the change to Factorio caused it to stop working on one setting; and why it works fine with other games. I'd speculate that in Factorio's case it scaled the window part without scaling the game part, but I don't know the technical details. Knowing more technical details about how this scaling is handled would help inform me on this.

0

1 Answer 1

2

System scaling is a simple scaling operation handled by the Desktop Window Manager (DWM), most likely performed efficiently on the GPU because the DWM is known to do its effects that way in general.

Enhanced scaling alters the internal behavior of the old "GDI" graphics API (used by most old apps) to draw shapes, fonts, and images larger than the app requested by some integer scale (2x, 3x, 4x, etc). If the monitor scale is some fraction like 150% (1.5x) it scales it down from 200% to 150% using the same DWM mechanism as above. This article has more details: Improving the high-DPI experience in GDI based Desktop Apps

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.