NVidia 1600/2000 series integer scaling

Some background:

Using my NVidia 970 I have been able to do integer scaling on my 1440p monitor using the following command:

nvidia-settings -a CurrentMetaMode=“DP-0: 2560x1440_165 {ViewPortIn=1280x720, ViewPortOut=2560x1440, ResamplingMethod=Nearest }”

This worked mostly fine, just had to run in windowed mode and move the window to the top left of the screen before enabling the above scaling. I did have some problems though:

  1. XFCE would continue to behave like the resolution was running in 1440p (which of course it was). I have my panel down the bottom of my screen and when I enable pixel doubling with the above command it continued to draw my panel at y=1325 ish, which was off the screen. A bit of a pain and could have done with knowing some way into tricking XFCE to believe I was running in a native resolution of 720p.

  2. Games ran in full screen mode would show the top left quarter of the game screen in the bottom right corner of my monitor. The top left & right corners and bottom left corner of my screen would appear black.

  3. Displayport cable bandwidth usage appeared to rise using the above scaling method. If I tried running 1080p scaled to 4k on a 4k screen I’d go from being able to get 60hz down to 30hz.

On to my problem:

I have now bought and installed an NVidia 1660 Super into this machine. It is stated that there is built in hardware in this GPU that allows integer scaling but I have no idea how to access this using Linux. I’ve done some searches and can find nothing at all. I’d expect it to be an option you put into the xorg.conf file but can find no information on this at all.
Perhaps there’s no Linux driver implementation for this yet? The above command still works but with the same issues listed above. I tried my new card in a Windows machine and there’s an option in there for integer scaling via the Nvidia control panel, it works perfectly well without any of the problems above. Unfortunately, this option is missing in Linux.

Any help would be appreciated.

Looking behind it, what’s now advertised on Windows as “Turing integer scaling” is just the already known “nearest neighbour” scaling on Linux. I suspect it’s just marketing, nothing additional.

There seems to be more to it than this. For instance, using the Linux method mentioned above the OS still believes it is in 1440p not 720p - any program you run will open in the centre of the screen. To adjust for this, you have to drag everything into the top left quarter of your screen and move all programs you need there before you run the scaling command. Picture below shows opening up a program and it being centred on the screen:


Thanks for replying by the way :) I get the feeling that it just hasn’t been implemented on the Linux driver side yet. From what I gather, this is the case with AMD integer scaling on Linux also. I’ll also test 1080p scaled to 4k on my 4k TV later today on Windows to see if that also drops to 30hz.

The problem with any metamode settings has always been that those are only listed in randr 1.1 (xrandr --q1) while the DE’s monitor-managers and games only look at the randr 1.2 lists. So on desktops the dimensions often get messed up and games not offering to use them at all.