What's new

Maybe Surface Book will give Microsoft a reason to fix scaling?

flar

Member
The "log out and log back in" usually happens when an application has not updated to the new scaling APIs introduced in Windows 8.1. The old APIs from Windows XP days required you to log out and log back in, but the latest APIs will give the application updated values on the fly as they change in the control panel or as the window moves between monitors of different scales.

Usually that's the fault of the app not having been updated, but the fact that you are able to fix it by installing an older Intel driver may indicate that Intel broke something in their driver that puts everyone back in the dark ages of XP. I'm not seeing the problem using Chrome in my setup, but I also have the dGPU version so it may be running off of my nVidia chip in my case.

Windows 10 (and Windows 8.1) *can* do better, but it looks like a broken driver or an outdated app.

Can you explain more what you mean by "it allows you to set a custom resolution"? The control panel should provide that option regardless of drivers (and as I said, if the app supports the new APIs you shouldn't have to do that).
 

flar

Member
By the way, here is the Microsoft documentation for programmers that explains how to write applications properly for display on HiDPI monitors (and a mixed setup with monitors of varying DPI): High DPI (Windows)

It also has some documentation for how users access the various scales, but if you are using applications that haven't been updated to this API then the ball is in the application's court and that documentation tells them what they need to do.
 

ChrisPanzer

Active Member
The "log out and log back in" usually happens when an application has not updated to the new scaling APIs introduced in Windows 8.1. The old APIs from Windows XP days required you to log out and log back in, but the latest APIs will give the application updated values on the fly as they change in the control panel or as the window moves between monitors of different scales.

Usually that's the fault of the app not having been updated, but the fact that you are able to fix it by installing an older Intel driver may indicate that Intel broke something in their driver that puts everyone back in the dark ages of XP. I'm not seeing the problem using Chrome in my setup, but I also have the dGPU version so it may be running off of my nVidia chip in my case.

Windows 10 (and Windows 8.1) *can* do better, but it looks like a broken driver or an outdated app.

Can you explain more what you mean by "it allows you to set a custom resolution"? The control panel should provide that option regardless of drivers (and as I said, if the app supports the new APIs you shouldn't have to do that).

Ok, no, no, no and no...

#1: The "Log out and log back in" prompts have nothing to do with API's; it occurs by default whenever you, or anyone, attempts to change the display scaling. Try it for yourself. When you adjust the display scaling, and hit 'Apply', it immediately prompts you that the change will take effect once sign out/sign in has occurred. Obviously, for any power user, this is EXTREMELY annoying and inconvenient to say the least, as signing out will log you out of any running apps/programs.

#2: This has nothing to do with apps or they way they were made by the devs; the issue is simple, the DPI and native display resolution is too high on the surface book to scale proportionately to a lower resolution, larger monitor.

And this goes back to my original point. On the Surface Book's native res., a scaling factor of 300% is 'comfortable' for me; this is where the desktop 'looks' the best, IMO. Now, once I hook up my external, 24" ViewSonic 1920 x 1080 monitors, a scale factor of 300% makes everything look ABSURDLY large, too large to even use Windows.

So, the only fix would be to set the scaling back down to 200%, where the size desktop on the 24" external monitor looks 'good' IMO. The only way to do this is to log out/log in.

With regards to your last paragraph: This was the work-around that many used for the SP3 (including me, in fact I believe I saw it here on this site first). The EXACT same problem existed on the SP3, so the way to avoid log out/log in, was to set a custom resolution to a 3:2 aspect ratio-friendly resolution, 1440 x 900 (if I remember correctly). However, the Intel display driver for the Sp3 did NOT OFFER that resoltuon, so you had to download an older, custom Intel driver that allowed the user to set custom resolutions. After the resolution was set, you could re-install the most current driver, since Windows remembers old resolutions, the custom res. would remain.

So, basically, the only work-around would be to set the res. to a much lower value, to keep the scaling proportional to the acceptable size that would be on a larger, 24" monitor. However, I have tried all the 'stock' resolutions, and none of them full the entire screen, unfortunately.

And so the saga continues... If anyone knows a work-around, I'm all ears. Other than that, LOVING the SB!
 

ChrisPanzer

Active Member
For the mod that took down my prior post regarding a fix for 1440 x 960 resolution, that WAS indeed for the Surface Book, not the SP3, not sure why you said it was for the Sp3.

Anyway, not sure if this has been posted yet but I found a reg key fix that adds a TON of custom 3:2-friendly resolutions. Works a charm, just tried it on my Surface Book i7/dGPU.

Here's the link:
Surface Book and Surface Pro 4 - high-dpi multi-monitor optimization regkey for alternate 3:2 aspect ratio resolutions - danchar - Site Home - MSDN Blogs

Resolutions Added:
  • 2704x1800 (* not quite 3:2 - limited by TCON)
  • 2400x1600
  • 2304x1536
  • 2160x1440
  • 2056x1368
  • 2040x1360
  • 1920x1280
  • 1800x1200
  • 1728x1152
  • 1600x1066
  • 1536x1024
  • 1504x1000 (* not quite 3:2 - limited by TCON)
  • 1496x1000 (* not quite 3:2 - limited by TCON)
  • 1440x960
  • 1368x912
  • 1200x800
  • 1152x768
  • 1080x720

Good luck!
 

flar

Member
Ok, no, no, no and no...

Perhaps I should have added "... unless you've managed to disable the new HiDPI mechanism in which case none of it will work right... Oh, I think I see the problem..."

The long answer follows:

After reading through your reply I think I have some idea of why you are seeing the results you are seeing, but I would like to get more information on how you've configured your system. What display panel are you using to change the scaling? (i.e. how do you get there and if you could post a window snapshot of the control panel that would be great). Also, what do you see when you go to "Start icon -> Settings -> System tab -> Display tab"?

In particular, you can choose settings which disable all of the new HiDPI mechanisms on the computer. They don't really tell you that is what is happening, but they at least try to recommend that you don't use those settings (and this is the reason why they recommend not to use those settings). It's not clear all of the reasons why they provided this ability to disable the new mechanism entirely, but it may have been that they couldn't be 100% sure that older-style applications would all work properly when they were being run in the compatibility mode (basically the backwards compatibility mechanism will lie to older applications that don't report that they are aware of the new mechanism and tell them that there is one DPI for all monitors and then the system will pixel stretch them on the secondary monitors if they need to adjust for a different DPI). It may also be that some users might not like the fuzziness that comes from such pixel stretching and if most of their programs (or one particular important application that they use a lot) have not been re-coded for the new APIs and are still running in the compatibility mode then they may prefer to disable the new mechanism and just use old-style scaling which does not have the ability to deal with monitors of different resolutions, but at the same time it has fewer cases in which it will decide to pixel stretch an app to make it fit. In any case, they provided the setting and they tried to put it behind dialog boxes that said "You can do that if you really want to, but we don't recommend it" and didn't really say "we don't recommend it because you will be turning off important new display capabilities that make radically high DPI monitors work well".

For the record, you can also disable all HiDPI support on Mac systems, and they will not work well if you have a retina monitor, but they hide it better and so fewer users end up triggering it and getting frustrated by the option.

When you choose those settings and disable the new mechanisms, then you end up with limitations like:

- No more dynamic DPI for any application, they've turned it off at the system level and all changes of the scale require a logout.

- No more per-monitor DPI. A single DPI is reported for all displays even if they have radically different actual resolutions and there are no APIs that will ever return an accurate value so no application can adjust for this.

Basically, if you choose that option, you've set your system back to the Windows Vista days of how to deal with monitor resolutions - with respect to display scaling you might as well install Vista instead as you will lose no sophistication in how to deal with mixed DPI cases - that's how ancient the mechanisms are.

If you choose to undo that setting and go back to the modern way of scaling applications, then handling of multi-monitor DPI differences will be restored and old and new applications will work properly across monitors of a wide range of DPIs, but you might see some blurriness in some cases using older applications that haven't been updated and so they will experience the pixel-stretching to accommodate their older DPI awareness. Most applications I use have been updated so I don't tend to see any pixel stretching any more (except, embarrassingly for some of Microsoft's own control panels - D'oh!).

To undo the "kill the new HiDPI support" setting simply go to "Start icon -> Settings -> System Tab -> Display tab" and it should say in red text "A custom scale factor is set", followed immediately by a link to "Turn off custom display scaling and sign out". You will need to click on that link and it will log you out (immediately, no confirm dialog!) and when you log back in you should have the modern display scaling again. The modern display scaling will have the following properties:

- Super old applications may be pixel stretched on nearly all displays. Those applications are using system queries that pre-date Vista and other than some ancient Windows Control Panels, these applications should be very very rare.

- Old applications that haven't been updated in the past couple of years may look fine on the primary monitor but be pixel stretched on secondary monitors.

- New applications that have been updated in the past year or so should be updated for the new HiDPI system queries and should be scaled appropriately on every display individually, but you may see some size discrepancies if they span multiple monitors - but only during the time frame when they span more than one monitor and they should then re-adjust when they are fully dragged to the new monitor. As soon as they are mostly on the new monitor they should rescale to the new monitor.

- Changes to the display scaling using the new mechanism (Start -> Settings -> System -> Display) will not require a reboot, but they will say that some apps might not respond to the new setting until you log out. If all of your applications have been recently updated then you can ignore this recommendation. If you have some applications in the "ancient" and "old" categories that I mention above then they may be blurrier than usual until you log out.
 
Last edited:

ChrisPanzer

Active Member
Flar, I appreciate your descriptive response, but I don't see anything you're referring to in 'Display' under system settings. There's no red text, there's no link to click on as you've described it. I haven't changed anything to my default, out-of-the-box Windows 10 setup or altered those things you speak of.

I am referring to stock settings. Read my previous post once more, I think you may have missed something.

Thanks again.
 

flar

Member
Hi Chris,

I have read your entire response. A few of the things you have written conflict with what I see on my system, what I've seen on every Windows 8.1 and Windows 10 system that I've used in testing HiDPI (I work for a company adding HiDPI support to our software), and conflicts with what Microsoft says should happen in the case of HiDPI monitors. It's just not supposed to work the way that you are saying it works for you.

It can be made to work that way (requires you to log out and log back in), but only if the new HiDPI support is disabled - one way to disable it is to choose one of the options that I mentioned above, but perhaps it got disabled on your system for other reasons.

I asked some questions above about which settings panels or control panels (Windows 10 has a new settings panel but it also has a few of the old Windows 8 control panels still built-in if you can find them which means that there are multiple ways to play with all of these settings and I'd like to understand which option you are using so I can help you figure out why your system is distinctly not doing the right thing as compared to how it is supposed to work and how I've seen it work on a variety of systems).

About the only other thing that I can see that you've done, other than having ticked one of the settings that deliberately disables the new HiDPI stuff (which should be reversible), is to install older drivers (which you claim was only temporary and you reinstalled a newer driver after that), and that you installed some registry settings to access other native resolutions. Note that changing your screen resolution does affect the size of things on the display, but it also means that the size changes are happening at the hardware level using pixel stretching rather than at the software level using coordinate scaling and so it should increase any fuzziness you would see. The optimal way to deal with changing the size of items is to set every display to its native resolution and use the display scaling settings rather than the resolution settings. If those settings are not showing up for you then something is wrong with your system and fixing that will make things work the way they designed them to work and, from what I can read, the way you'd like them to work.

Note that I can change the scaling of both the internal display and my external monitors completely independently to 200% or 300% on my SB display while the external display stays at 100% or 125% or 150%. The changes not only happen immediately without any log out, but they happen as soon as I release the slider without even having to hit the Apply button. (Other display settings like the spanning mode require hitting Apply, but they don't require a log out either, but the scaling setting doesn't even require hitting Apply). The windows on my screen immediately adjust to the new requested scaling size as soon as I release the slider. I think that is what you want to see happening, but it isn't working that way for you and I'm trying to help you figure out why because it sounds like you'd be a lot happier if things worked the way that they should work.

So, what display drivers do you have installed? Exactly which settings/control panels are you using to make these changes?

For the record, I have:

Windows 10, build 10586.104
Intel HD Graphics 520 display driver 20.19.15.4326
nVidia GeForce GPU driver 10.18.13.5914
no registry hacks for alternate resolution
SB display set to 3000x2000, external display set to its native resolution too

and for me scaling works immediately, flexibly, independently, and without any fuzziness due to pixel scaling when I use the setting on "Start -> Settings -> System -> Display"
 

ChrisPanzer

Active Member
Flar, sorr f
Hi Chris,

I have read your entire response. A few of the things you have written conflict with what I see on my system, what I've seen on every Windows 8.1 and Windows 10 system that I've used in testing HiDPI (I work for a company adding HiDPI support to our software), and conflicts with what Microsoft says should happen in the case of HiDPI monitors. It's just not supposed to work the way that you are saying it works for you.

It can be made to work that way (requires you to log out and log back in), but only if the new HiDPI support is disabled - one way to disable it is to choose one of the options that I mentioned above, but perhaps it got disabled on your system for other reasons.

I asked some questions above about which settings panels or control panels (Windows 10 has a new settings panel but it also has a few of the old Windows 8 control panels still built-in if you can find them which means that there are multiple ways to play with all of these settings and I'd like to understand which option you are using so I can help you figure out why your system is distinctly not doing the right thing as compared to how it is supposed to work and how I've seen it work on a variety of systems).

About the only other thing that I can see that you've done, other than having ticked one of the settings that deliberately disables the new HiDPI stuff (which should be reversible), is to install older drivers (which you claim was only temporary and you reinstalled a newer driver after that), and that you installed some registry settings to access other native resolutions. Note that changing your screen resolution does affect the size of things on the display, but it also means that the size changes are happening at the hardware level using pixel stretching rather than at the software level using coordinate scaling and so it should increase any fuzziness you would see. The optimal way to deal with changing the size of items is to set every display to its native resolution and use the display scaling settings rather than the resolution settings. If those settings are not showing up for you then something is wrong with your system and fixing that will make things work the way they designed them to work and, from what I can read, the way you'd like them to work.

Note that I can change the scaling of both the internal display and my external monitors completely independently to 200% or 300% on my SB display while the external display stays at 100% or 125% or 150%. The changes not only happen immediately without any log out, but they happen as soon as I release the slider without even having to hit the Apply button. (Other display settings like the spanning mode require hitting Apply, but they don't require a log out either, but the scaling setting doesn't even require hitting Apply). The windows on my screen immediately adjust to the new requested scaling size as soon as I release the slider. I think that is what you want to see happening, but it isn't working that way for you and I'm trying to help you figure out why because it sounds like you'd be a lot happier if things worked the way that they should work.

So, what display drivers do you have installed? Exactly which settings/control panels are you using to make these changes?

For the record, I have:

Windows 10, build 10586.104
Intel HD Graphics 520 display driver 20.19.15.4326
nVidia GeForce GPU driver 10.18.13.5914
no registry hacks for alternate resolution
SB display set to 3000x2000, external display set to its native resolution too

and for me scaling works immediately, flexibly, independently, and without any fuzziness due to pixel scaling when I use the setting on "Start -> Settings -> System -> Display"


Sorry took me a minute to get back with you. When I posed that previous message, it was prior to Windows 10 doing the 'November Upgrade 1511'.

After the upgrade, I noticed the red lettering on the Display setting page you speak of.

And yes, the scaling is now working BETTER, but there are still occasional elements that do not up/down scale, but I suppose that's OK.

Thanks for your feedback, if you want me to further elaborate I will.

UPDATE:

So after using it for about 30-45 minutes, I really am not satisfied. There are random large artifacts, and other incompatibilities that make it better to simply use a lower resolution and one universal scaling level.

Will keep using my old way.
 
Last edited:

flar

Member
Thanks for getting back Chris. Which elements are you seeing that don't scale up or down? Were they in any particular app?
 

MaxBuck

Member
QuickBooks Premier 2013 is almost unusable because of scaling issues, both on my SP4 and on the external monitor I'm using (20" eMachines at 1920 x 1080).
 

flar

Member
Windows 8.1, where the HiDPI support debuted, was released in late 2013 so it is likely that QuickBooks 2013 is coded to the older support and is being virtualized rather than natively supporting the various resolutions. Applications released prior to Windows 8.1 (as long as they are newer than Windows 7 or so) should still run with the native resolution on the main monitor, though, and only get pixel stretched on the external monitor.

On the other hand, really hi resolution screens weren't common in those days so even if they code to the older APIs and attempt to embrace the native resolution on the main monitor it may be that they only tested the program on displays that were between 100% and 150% scaling, as have been common for a number of years, and some amount of "they forgot to scale this or that widget" wouldn't have shown up as a deal breaking problem until it runs on 200-300% screens like the Surfaces and the differences get more severe.
 
Top