Nonblurry integer-ratio scaling

In a nutshell (tl;dr)

The issue

At video-signal resolution lower than display’s physical resolution, image is blurred, though at integer ratios this is unneeded.

So Full HD on a 4K monitor looks worse than on a Full-HD monitor.

The solution

Each logical pixel could be displayed as a square group of integer (2×2, 3×3) number of physical pixels of the same color. Live demo.

Such lossless scaling can be implemented in graphics driver, but this is still not done.

Get involved

  • Sign the petition about nonblurry scaling in graphics drivers.
  • Tell about the issue to as many people as possible.
  • Express your support in forums: GeForce, AMD, Intel.
  • Complain of blur to technical support: nVidia, AMD, Intel (1, 2).
  • Request the feature for game engines Unity, CryEngine.

What scaling is

Scaling is resizing (changing resolution of) an image. It is needed if physical resolution (number of pixels in horizontal and vertical directions) of a monitor or a TV set is different from the resolution of the video signal it receives: e. g. if a game in the resolution of 1920×1080 (Full HD) is running in full-screen mode on a monitor with physical resolution of 3840×2160 (4K).

The blur issue

With all monitors, graphics cards and most TV sets, scaling always leads to losing sharpness at any scaling ratio. Such sharpness loss is perceived as blur and is irreversible quality loss.

But actually, blur is only inevitable if the monitor’s resolution is not a multiple of the signal’s resolution. For example, it’s impossible to display one logical pixel as 1.5 physical pixels, so we are forced to use interpolation that calculates average colors of adjacent pixels of the image which is subject to scale.

Integer-ratio scaling is the solution

If the scaling ratio is not fractional (e. g. 1.5), but integer (e. g. 2 or 3), the blur can be avoided just by displaying each logical pixel as a square group of an integer (e. g. 2×2 or 3×3) number of physical pixels of the same color — i. e. just by duplicating the corresponding pixel of the original image multiple times with no any diffusion of colors of sibling pixels.

More than nearest neighbour

Blur can be avoided even if resolutions are not divisible: it’s enough to scale with an integer ratio so that the image fills the screen as fully as possible, and to fill the rest screen space with black background the same way as when the image is centered on the screen with no scaling.

For example, we can display a 1280×1024 image on a 3840×2160 screen by displaying each image pixel as a group of 4 (2×2) identical physical pixels with black margins of 56 physical pixels above and below, and 640 pixels — leftward and rightward.

This is the key difference of integer-ratio scaling from scaling via nearest-neighbour interpolation. Their results are only identical at integer ratios of physical and logical resolutions. At fractional ratios, nearest-neighbour interpolation results in image distortion, while with integer-ratio scaling, the image is always scaled with an integer ratio and with no quality loss — even if physical and logical resolutions are not divisible.

Examples

Pixel art

The differences between blurry bilinear interpolation and lossless integer-ratio scaling are clearly evident on a pixel-art image:

Photos

See also the photos of the same screenshot of the Reaper application taken using the three scaling methods:

Demo

For better understanding of what nonblurry integer-ratio scaling is, see the web demo.

Why it’s important

  • With 4K monitors of 24—27″ size at Full HD resolution, single image pixels are almost indistiguishable, so blur does not add any smoothing and just senselessly decreases sharpness resulting in an unreasonable quality loss.
  • All 4K monitors use scaling with blur, so the issue can be solved only via graphics driver.
  • In the nVidia G-Sync mode, monitor’s own scaling feature is not used (1, 2), so the only way to scale properly is scaling via graphics driver.
  • Graphics drivers of nVidia and AMD already have implemented technologies of resolution virtualization — nVidia DSR and AMD VSR, so the only missing technical thing is support for ratios below 1.
  • From the performance perspective, scaling by pixel duplication should work much faster than using bilinear or bicubic interpolation, so using integer-ratio scaling could descrease or remove a lag introduced by scaling.
  • User has a right not to have unreasonable quality loss when working at resolutions different from the physical resolutions of the display.
  • A faster graphics card does not solve the issue since the issue is not just about performance (see below).

Powerful GPU is not a solution

Purchasing a higher-performance graphics card is not a solution:

  • many games contain bitmap elements (e. g. menu in “Half-Life 2” and toolbars in “Cities XL Platinum”) which get small at 4K resolution;
  • some games (e. g. “Duck Tales Remastered”) have real resolution of Full HD while support for other resolutions is achieved via blurry scaling;
  • some games work incorrectly at 4K resolution (e. g. in the “Bionic Commando Rearmed” game, conundrum elements are invisible in “Hack enemy network” sublevels);
  • if a high-pixel-density display is installed into a laptop, installing a powerful graphics card is virtually impossible due to natural limitations in terms of space, power consumption and heat dissipation.

A more powerful GPU cannot help here.

Partial solutions

Games

  • Using scaling built into specific full-screen application (e. g. a game). This is typically available only in 2D games: e. g. pixel-art-oriented Owlboy.
  • Nonblurry integer-ratio scaling is built into the QuakeSpasm game (a Quake version powered by a more modern engine) since the version 0.93.0 () with support for zoom levels up to 400% via the r_scale configuration option. To use the feature, put a text file named autoexec.cfg into the ID1 subfolder inside the game folder, and put the option like r_scale 4 into this, where 4 is the scaling ratio. For example, at the 3840×2160 chosen in the game settings, the game renders at 960×540 and upscales to 3840×2160 with no blur by representing each logical pixel as a square group of 16 (4×4) physical pixels of the same color.
  • For scaling 3D games, the freeware GeDoSaTo application can be used. Drawbacks:

    • only supports relatively old games that use DirectX 9 or older;
    • works with just some of them;
    • on some systems, modern versions of the application don’t work at all, yours truly was able to use successfully one of its previous versions — Beta 10 Poltergeist.

Wrappers for Glide and DirectX

Glide is the API behind 3dfx graphics accelerators. Glide wrappers allow to play Glide-powered games on computers supporting modern DirectX and OpenGL APIs.

  • DgVoodoo (Glide emulator and wrapper for DirectX 8 and older) and DXGL (OpenGL implementation of DirectDraw) reportedly support the nonblurry scaling algorithm “Nearest Neighbour” (sources: 1, 2).
  • The ability of nonblurry integer-ratio scaling is planned to be added to the Glide wrapper (emulator) nGlide in a version after the 2.0.

Game-console emulators

  • The emulator of 8/16-bit game consoles higan for Windows since version 104 supports integer-ratio scaling (Settings → Video → Windowed Mode / Fullscreen Mode → Integral scaling). To prevent blur, uncheck the Settings → Video Emulation → Blurring checkbox, and switch the Settings → Video Shader option to the None value instead of the default Blur value.
  • The SNES emulator Snes9x EX+ for Android supports integer-ratio scaling (Options → Video → Zoom → Integer-only). To prevent blur, switch the Options → Video → Image Interpolation option to the None value instead of the default Linear value.

OS virtualization

  • For running DOS applications — the DOSBox emulator with certain settings applied.
  • The freeware virtualization environment VirtualBox supports nonblurry scaling of the virtual machine’s screen: Machine → Settings → Display → Screen → Scale Factor.

Viewing images and playing videos

  • For viewing images — the freeware XnView application with the unchecked checkbox Tools → Options → View → High quality zoom → Enlarge. Limitation: the option is applied to all viewed images regardless of ratio of their size to size of the application’s window and using full-screen mode.
  • For playing videos — the freeware MPC-HC player with the setting View → Options → Playback → Output → Resizer → Nearest neighbor. A limitation: the option is applied to all played videos regardless of ratio of their frame size to size of the application’s window and using full-screen mode.

Windows’ built-in features

  • For windowed applications — Windows Magnifier. Drawbacks:

    • unusable user interface — it’s hard to align precisely the scaling area with the bounds of the object to scale;
    • when the size of the object to scale and the monitor’s resolution are not divisible, the area around the object is not filled with a single-color background, so other objects are visible besides the scaling subject itself;
    • in windowed mode, there are a lag and some jerkiness.
  • For windowed Windows applications incompatible with HiDPI (non-DPI-aware) — using Windows 10, where, unlike Windows 7, old applications are automatically scaled with no blur at integer Windows zooms.

Miscellaneous

  • To disable unreasonable blur of images on web pages — the SmartUpscale extension for Firefox browser.
  • There is reportedly no blur when using full-screen scaling with integer ratios via the official Intel’s graphics driver for Linux operating system.
  • Some 4K TVs by Panasonic reportedly support displaying Full HD signal with no blur. For example, in the TX-55CX802B model, it is available via the “1080p Pixel by 4 pixels” option in the “Picture → Option Settings” menu. The feature is apparently intended solely for use with Full HD (1920×1080) resolution and does not work at different resolutions of input video signal such as 1280×720. That said, the similar smaller-size model — TX-50CX802 — does not have the feature. A similar feature is reportedly available in the “Graphics” mode in some models of 4K TVs by Sony (e. g. X900E).
  • Since , the Raspbian operating system for Raspberry Pi mini computers supports scaling with no blur for the scale of 200% via the “Pixel Doubling” option in the “System” tab in the “Raspberry Pi Configuration” application.

Potential solutions

Software

  • Scaling via graphics driver.
  • monitor emulator that intercepts the image to be displayed on monitor, scales it and displays the scaled image on the physical monitor.
  • Reverse engineering of existing graphics drivers with the purpose of enabling ability to upscale besides already available downscaling in the already available feature — nVidia DSR or AMD VSR.

Hardware

  • Scaling built into monitor itself. The advantage compared with scaling via graphics driver is saving the graphics interface’s bandwidth and potential decrease of electromagnetic radiation from the signal cable.
  • device inserted between graphics card and monitor. There is a similar device UltraHDMI intended to output video signal of the Nintendo 64 console via HDMI with no loss (review). Such device could probably be based on FPGA: 1, 2. Potential drawbacks:

    • an extra lag is possible;
    • may have a negative impact to compatibility with the HDCP technology required for playing protected content. Solvable with a switch for temporarily enabling the mode of passing-through the unaltered video signal. The switch could be either physical or controllable from computer via USB.

What you can do

Regular users

  • Sign the petition on Change.org about implementing nonblurry integer-ratio scaling in graphics drivers.
  • Tell about the blur issue to as many people as possible and provide links to the petition and to this article.
  • Express your support in corresponding existing threads in forums of GeForce, AMD, Intel.
  • Complain of low quality of scaling via graphics driver to GPU vendor’s technical support: nVidia, AMD or Intel (1, 2).

Game developers

  • Build integer-ratio scaling into games developed by them. In 3D games, this can be done with the Render-To-Texture technique and GPU-accelerated upscaling of the resulting texture using the “Nearest Neighbour” algorithm. The Unreal Engine has a built-in ability of scaling with no blur via the r.Upscale.Quality console variable with the value of 0.
  • Lobby adding integer-ratio scaling into popular game engines such as Unity, CryEngine, so that games based on them would automatically have the feature.

Algorithm

A ready-to-use algorithm of integer-ratio scaling with no blur.

Description

  1. Divide width (A) and height (B) of the screen in physical pixels correspondingly by width (C) and height (D) of the image to be scaled.
  2. Take the less of the resulting ratios.
  3. Discard fractional part. Give the resulting integer number the name of E.
  4. Represent each pixel of the original image as a square group of E×E physical pixels of same color equal to the color of the original image pixel. The width (F = C * E) and the height (G = D * E) of the scaled image in physical pixels will be E times greater than the width (C) and the height (D) of the original image correspondingly.
  5. Center the scaled image on the screen:

    1. subtract the width (F) and the height (G) of the scaled image in physical pixels from the width (A) and the height (B) of the screen, divide the results by 2, discard fractional part, give the resulting numbers the names of H and J correspondingly;
    2. display the scaled image at a distance of H horizontally and J vertically from the top-left corner of the screen.
  6. Fill the rest screen space around the scaled image with black.

Example

For example, it’s needed to display a 640×480 image on a 1920×1080 screen:

1920 / 640 = 3
1080 / 480 = 2.25

2.25 is less than 3. Discarding fractional part 0.25 results in 2. So each pixel of the original image should be displayed as a group of 2×2 physical pixels.

The width and the height of the scaled image in physical pixels are 1280 (640 * 2) and 960 (480 * 2) correspondingly. So for the purpose of centering on the screen, the scaled image should be displayed at a distance of 320 ((1920 - 1280) / 2) pixels horizontally and 60 ((1080 - 960) / 2) pixels vertically from the top-left corner of the screen.

Progress

Nearest neighbour in nVidia Linux driver 384.47+

The nVidia GeForce graphics driver for Linux, Solaris, and FreeBSD operating systems since version 384.47 () provides the Nearest Neighbour scaling algorithm as a part of the Transform Filter feature. It can be enabled with a command like this:

nvidia-settings -a CurrentMetaMode="DP-1: 3840x2160_60 {ViewPortIn=1920x1080, ViewPortOut=3840x2160, ResamplingMethod=Nearest }"

where the parameters have the following meaning:

  • DP-1 is the video output the monitor is connected to;
  • 3840x2160 is the resolution of the signal received by monitor; must be equal to physical monitor resolution, otherwise there will be blur due to scaling done by the monitor;
  • ViewPortIn is the size of the rendering area in logical pixels;
  • ViewPortOut is the size of the resulting scaled image in physical pixels;
  • ResamplingMethod is a scaling algorithm (the default value is Bilinear).

The result of scaling may be smaller than physical monitor resolution. For example, to display a 1280×720 image with 2-times enlargement (with 2×2 pixels) centered on screen of monitor with physical resolution of 3840×2160, the following command is needed:

nvidia-settings -a CurrentMetaMode="DP-1: 3840x2160_60 {ViewPortIn=1280x720, ViewPortOut=2560x1440+640+360, ResamplingMethod=Nearest }"

where 640 и 360 are offsets in physical pixels from top left corner horizontally and vertically correspondingly, needed for centering the scaled image.

Commands can be executed via terminal that can be opened with the Ctrl+Alt+T keyboard shortcut.

Software implementation and performance

The only interpolation available on hardware level in nVidia GPUs is blurry bilinear interpolation, so the nearest neighbour scaling algorithm is implemented in software and uses some GPU power. This can potentially slightly decrease maximum GPU performance. In practice, performance is about the same regardless of interpolation type: nearest-neighbour (Nearest) or bilinear (Bilinear).

Unfortunately using the transform filter itself leads to a serious performance drop. For example, in the F1 2017 game at the resolution of 1280×720 when using transform filter, performance is lower that at the resolution of 1920×1080 in regular full-screen mode. When scaling the game running in windowed mode, performance is much higher than with full-screen scaling via transform filter, but still lower than in regular full-screen mode.

Windowed and pseudo-full-screen games only

Unfortunately the feature work only with windowed and pseudo-full-screen (rendered over OS desktop) games. The scaling is not applied to really full-screen games that switch monitor resolution (e. g. Euro Truck Simulator 2).

That said, in many games, the feature works incorrectly: the image is rendered at the resolution selected in the game’s settings (e. g. 1920×1080), then upscaled with blur to the ViewPortOut resolution (e. g. 3840×2160), then cropped to top-left or bottom-left part corresponding to the ViewPortIn (e. g. 1920×1080) size, and only this cropped part is then output to monitor.

The issue is not specific to a particular desktop environment and takes place at least in Unity (Ubuntu 17.04) and GNOME (Ubuntu 17.10).

When running a game in windowed mode, the visible part of the game window can be maximized by enabling automatic hiding of the Dock panel via Ubuntu settings (Settings → Dock → Auto-hide the Dock), and using the GNOME extension Hide Top Bar to autohide the top bar. To minimize the height of the title bar of the game window, it makes sense to switch OS-level zoom to 100%.

Mouse and resolution

A companion issue is that even if a rendered game output is visible entirely, its menus, buttons and other controls may be not accessible for mouse hovering and clicks if the desired logical resolution (ViewPortIn) was not chosen in the game’s settings before enabling the Nearest mode in the graphics driver.

This is because by default, the game may run at the output driver resolution (ViewPortOut) instead of the logical one (ViewPortIn). This may also lead to serious loss of performance: the game will be first rendered at the high resolution, then downscaled to the low one, then upscaled back to the high one using the nearest-neighbour interpolation.

Official nVidia comments

One of the Linux-driver developers Aaron Plattner believes the issue is not with the driver, but with games incorrectly interpreting data received from the RandR software subsystem.

He admits that given the number of affected games, a universal game-independent solution for the issue would make sense. As a possible implementation of such solution, he mentions an LD_PRELOAD library that could intercept calls to libXrandr functions and fake the replies. That said, he doesn’t say whether such solution is going to be developed by nVidia itself and distributed together with the graphics driver.

Tested games

Below are results of testing some games at Full HD (1920×1080) virtual resolution on the Dell P2415Q monitor with 4K (3840×2160) physical resolution under Ubuntu 17.10 and 18.04.

By compatibility with nonblurry scaling via nVidia GeForce graphics driver for Linux, games can be conditionally divided to three categories:

  • work correctly;
  • image is cropped and visible partially: for example, at the ViewPortIn resolution of 1920×1080 and the ViewPortOut resolution of 3840×2160, the bottom-left or top-left quarter is visible;
  • signal is output in true full-screen mode — directly to monitor, ignoring/bypassing GPU-powered scaling at all, and scaled by monitor with blur.
Game F W Note
Airline Tycoon Deluxe + Based on a 2D engine and has a fixed low resolution with aspect ratio of 4:3 or 5:4, but scales properly with maintaining aspect ratio, with no blur by GPU, but with blur by the game engine. The game does not have a setting to change resolution.
Amnesia: A Machine for Pigs + Signal is output directly to monitor, bypassing GPU-powered scaling. The maximum available resolution in the game settings is physical monitor resolution regardless of the Nearest mode. Playing in windowed mode is possible.
Amnesia: The Dark Descent
Broken Sword 5 —
the Serpent’s Curse
+ In the default full-screen mode (“Fullscreen 1”), signal is output directly to monitor, bypassing GPU-powered scaling. In the alternate full-screen mode “Fullscreen 2”, bottom-left part of the image is visible, and mouse cursor is in a narrow line to the top, and it is impossible to move the cursor down, keyboard is the only control method (up-down arrows and Enter). In the full-screen mode “Fullscreen 3”, mouse does not work. Sometimes in modes “Fullscreen 2” and “Fullscreen 3”, the game reacts to neither mouse nor keyboard. Sometimes after switching to the Nearest mode while the game is running in the “Fullscreen 1” mode, the game functions at the pseudo-full-screen mode with no blur. Playing in windowed mode is possible.
Borderlands 2 Only bottom-left part of the image is visible. In regular full-screen mode, the game hangs at menu, so it’s unknown if windowed mode is supported.
Brütal Legend ~ By default, runs at physical monitor resolution, though visible entirely. To prevent wasting performance, first switch resolution in the game, then enable Nearest scaling via graphics driver. At the starting splash screen (before playing video), bottom-left part of the image is only visible even if correct resolution was chosen in game settings before.
Cities: Skylines ~ + By default, physical or system resolution is selected (it is also maximum available one), and only bottom-left part of the image is visible. After switching the game to resolution corresponding to ViewPortIn, image gets visible entirely, but this works only if Transform Filter is enabled while the game is already running. Playing in windowed mode is possible.
Day of Infamy + Default selected resolution in the game settings is ViewPortIn, it is also the maximum available resolution. There are modes available in the game: “Full Screen”, “Borderless” and “Windowed”; they works similarly with Transform Filter enabled. Loading any level takes 5-6 minutes (regardless of Transform Filter), most of this time the process looks like hanging at progress of about 20%.
DiRT: Showdown + Top-left part of the image is visible. Playing in windowed mode is possible.
Don’t Starve Together + Signal is output directly to monitor, bypassing GPU-powered scaling. Playing in windowed mode is possible. By default, the game starts in windowed mode at resolution of 640×480.
Dota 2 ~ By default, user interface does not react to mouse cursor. First switch resolution in the game, then enable Nearest scaling via graphics driver.
Dungeons 2 +
Euro Truck Simulator 2 + Signal is output directly to monitor, bypassing GPU-powered scaling. Playing in windowed mode is possible.
F1 2015 ~ In full-screen mode, only bottom-left image part is visible. In windowed mode, the window is centered in area corresponding to physical monitor resolution, and mouse cursor is hidden when the game window is active. To move the window to visible area, do this: make another application’s window active by pressing Alt+Tab, then position it so that the game window’s title bar is at least partially visible, start dragging the game’s window without switching to the game’s window before; but performance in such mode is considerably lower than in regular full-screen mode.
F1 2017 ~ In full-screen mode with Nearest scaling enabled, there is a significant performance drop compared with regular full-screen mode. In windowed mode, performance is noticeably higher, but lower than in regular full-screen mode.
GRID Autosport ~ In full-screen mode, only bottom-left image part is visible. In windowed mode, the window is centered in area corresponding to physical monitor resolution, and mouse cursor is hidden when the game window is active. To move the window to visible area, do this: make another application’s window active by pressing Alt+Tab, then position it so that the game window’s title bar is at least partially visible, start dragging the game’s window without switching to the game’s window before; but performance in such mode is considerably lower than in regular full-screen mode. On systems with regional settings where integer and fractional number parts are separated with a comma instead of a dot, the game hangs at the starting splash screen with the game logo regardless of using the Nearest scaling mode; the hang can be prevented by switching the regional number format to american (Region & Language → Formats → United States).
Guns of Icarus Online +
Half-Life 2 ~ By default, menu items do not react to mouse cursor. First switch resolution in the game, then enable Nearest scaling via graphics driver.
Hexcells + Default selected resolution in the game settings is ViewPortIn, it is also the maximum available resolution. Windowed mode is also supported, but it functions like the full-screen mode.
Hexcells Infinite
Hexcells Plus
Killing Floor ~ The default resolution is 800×600; after switching to the ViewPortIn resolution in game settings, only a part of the game window is visible, and that part occupies just a part of the ViewPortIn area. Supports windowed mode, but the bottom hidden window part contains important controls (buttons) required for playing.
Left 4 Dead 2 ~ Only bottom-left part of the image is visible. Both windowed modes — “Windowed (No Border)” and “Run in a window” — work identically — with window titlebar displayed. Playing in windowed mode is possible, but sometimes menu does not react to mouse.
Limbo Only bottom-left part of the image is visible (screenshot). The game supports neither changing resolution nor windowed mode.
Micron + By default, runs in windowed mode at the 640×480 resolution. The maximum available resolution in game settings is ViewPortIn. If in normal mode (with no Nearest), select physical monitor resolution in game settings, and then run the game with the Nearest scaling mode enabled, then only bottom-left part of the image is visible.
Middle Earth: Shadow of Mordor ~ With Transform Filter enabled, the game window is invisible in both full-screen and windowed modes. To play in windowed mode, Transform Filter should be enabled while the game is already running, then windowed mode works like full-screen mode. If to switch the game to full-screen mode after that, only bottom-left part of the image gets visible.
Oddworld: New’n’Tasty +
Outlast ~ By default, runs at physical monitor resolution, though visible entirely. To prevent wasting performance, first switch resolution in the game, then enable Nearest scaling via graphics driver.
Painkiller: Hell & Damnation
(Demo)
Only bottom-left part of the image is visible. The game does not have a setting to change resolution.
Payday 2 ~ When using nVidia Transform Filter, only bottom-left part of the image is visible. But the game itself in Linux (but not in Windows) uses scaling with no blur at any resolution selected in the game, so using Transform Filter is unneeded.
Portal ~ Menu is inaccessible for mouse.
Rogue Stormers + Signal is output directly to monitor, bypassing GPU-powered scaling. Playing in windowed mode is possible.
Rush + The game does not have a way to change resolution, but works correctly by default with scaling with no blur.
Sanctum 2 + Only bottom-left part of the image is visible. Playing in windowed mode is possible.
Satellite Reign + Default selected resolution in the game settings is ViewPortIn, it is also the maximum available resolution.
Shadow Tactics:
Blades of the Shogun

(Demo)
+ Default selected resolution in the game settings is ViewPortIn, it is also the maximum available resolution.
Shadow Warrior ~ By default, runs at physical monitor resolution, though visible entirely. Performance in this case is much lower than in ViewPortIn resolution. To prevent wasting performance, first switch resolution in the game, then enable Nearest scaling via graphics driver. After switching to another application and back, only bottom-left part of the image gets visible.
Spec Ops: The Line ~ Only bottom-left part of the image is visible. Ability to play in windowed mode is limited because the hidden bottom window part contains critical controls including those needed for starting a campaign after choosing a difficulty level.
Syder Arcade ~ By default, only bottom-left part of the image is visible (screenshot). First switch resolution in the game, then enable Nearest scaling via graphics driver.
The Cave ~ By default, runs at physical monitor resolution, though visible entirely. To prevent wasting performance, first switch resolution in the game, then enable Nearest scaling via graphics driver.
This War of Mine +
Torment: Tides of Numenera + With Transform Filter enabled, the game works noticeably smoother than in normal mode at the same in-game resolution. Windowed mode looks the same as full-screen mode.
Trine Enchanted Edition Only bottom-left part of the image is visible (screenshot). The game does not support windowed mode.
Trine 2 +
Toki Tori + Based on a 2D engine and has a fixed resolution, but scales properly, with no blur by GPU, but with blur by the game engine. The game does not have a setting to change resolution.
Toki Tori 2 ~ Based on a 2D engine and has a fixed resolution, but has a resolution setting, and the default selected resolution is physical (Native) monitor resolution. Scales properly, with no blur by GPU, but with blur by the game engine. To prevent wasting performance, first switch resolution in the game, then enable Nearest scaling via graphics driver.
Tyranny + The maximum available resolution in game settings is ViewPortIn.
X Rebirth (Demo) ~ + In the “Display Mode: Borderless Window” selected in the game settings by default, the game works correctly, only the first splash logo screen is displayed partially though with no blur. In the “Fullscreen” mode, only bottom-left part of the image with blur is visible. In the “Borderless Window” mode, resolution can’t be changed, it is always equal to current OS resolution (or ViewPortIn when Transform Filter is enabled). User interface reacts to mouse cursor only in the “Windowed” mode. In windowed mode, resolution displayed in the game after choosing it, has height smaller than selected one with the difference equal to title-bar height (e. g. 1920×1050 instead of 1920×1080), i. e. in theory, nothing is hidden at the bottom due to title bar at the top.
XCOM 2 + In full-screen mode, only bottom-left image part is visible. In windowed mode, image fills entire screen, there is no titlebar, looks like full-screen mode; in the game settings, resolutions up to physical resolution are available. If a resolution higher than ViewPortIn is selected in the game, top-left image part is visible. In terms of performance, windowed mode with Transform-Filter scaling enabled is similar to regular full-screen mode. Performance under Windows is noticeably higher.

In the table, the following conventions are used:

  • F — playable with no blur in full-screen mode;
  • W — playable with no blur in windowed mode;
  • + — the game works fine;
  • — the game is unplayable;
  • ~ — the game is playable, but with limitations (in most cases, this means that the game is playable only in windowed mode).

Unavailable in nVidia driver for Windows

The feature is not available in the Windows version of the nVidia GeForce driver.