Due to server slowness, downtime, and other issues, guests can no longer search the forum or view user accounts. At some point in the future Eclipse will be moving to a more stable and efficient platform that should result in much better stability and the lifting of these restrictions. There is no timeline for this yet, just want you to know what's happening with all the downtime and I have a plan to fix it.

How to get rid of DPI virtualization?

Windows 10, but decent.
Post Reply
265 993 303
Posts: 13
Joined: 28 Nov 2023, 19:09
Been thanked: 3 times
Contact:
Poland

How to get rid of DPI virtualization?

Unread post by 265 993 303 »

This is the ONE fatal flaw that prevents me from using Windows 8.1 and up. I have 3840×2160 display, and I mainly use 288dpi in Windows 7.

In DWM in Windows Vista, Windows 7, and Windows 8, there is an option to Use Windows XP style DPI scaling, which sets HKEY_CURRENT_USER\Software\Microsoft\Windows\DWM\UseDpiScaling to 0 and ensures all Win32 apps get native resolution just like in all earlier Win32 versions. When UseDpiScaling is set to 1, DWM applies DPI virtualization above 120dpi in apps that lack dpi aware declaration, resulting in an upscaling from 96dpi, which defeats the purpose of very small pixels. This becomes particularly problematic in Windows 8.1 which not only forces DWM, but also UseDpiScaling registry no longer works, and DPI virtualization for more than 120dpi is seemingly always enforced. Even Windows 95 and Windows NT 3.5 have fully functional DPI scaling with native resolution at all pixel densities, so Win32 had over 25 years of dpi-aware history, so there is no excuse for DPI virtualization. It's really driving me crazy since it seems like this should be just one integer comparison branch in DWM that has to be edited and yet it completely ruins the experience.

265 993 303
Posts: 13
Joined: 28 Nov 2023, 19:09
Been thanked: 3 times
Contact:
Poland

How to get rid of DPI virtualization?

Unread post by 265 993 303 »

This topic might belong into the 'Research Network' category, since more research is needed is resolve this issue which affects Windows 8.1/10/11.

One way to potentially resolve this issue is to modify system files to alter the x86 branches leading up to DPI virtualization. But that would require admin permissions and it would be reverted with every system update. I tried to find the relevant x86 branch at one point in Windows 8.1 but failed to do so, so I still mainly use Windows 7 on my main PC.

Another way could be to identify the setting corresponding to 'Disable display scaling on high DPI settings' or 'Application' and then automatically apply it on every *.exe file that runs. This could be done by inserting values for every *.exe file with data "HIGHDPIAWARE" into

Code: Select all

HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers
registry. But for this to work reliably, it would have to attach to a file index such as Everything in order to detect created *.exe files to ensure that the setting is applied before the program runs.

Post Reply